PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : iptables Regeln für OpenVPN Client in einer virtuellen Maschine



craano
12.10.08, 14:51
Hallo,
ich habe einen virtuellen OpenVZ Container erstellt und möchte damit eine Samba - Freigabe durch einen OpenVPN Tunnel nutzen. Die VE ist dabei selbst Client eines OpenVPN Servers.
Das läuft soweit auch ganz gut.

Jetzt möchte ich aber, dass die VE nur durch den Tunnel zu erreichen ist. Jeder andere Verkehr sollte also geblockt werden. Von außen darf also nur genau der Port offen sein, der von OpenVPN genutzt wird (1194).

Soweit zur Theorie. In der Praxis scheitere ich leider an meinen bescheidenen Iptables Fähigkeiten. Nach langem Googlen und Probieren habe ich ein script gebastelt. Doch leider ist die virtuelle Maschine jetzt gar nicht mehr erreichbar, auch nicht durch den Tunnel.



#!/bin/bash

#./firewall

#Forwarding aktivieren, falls noch nicht passiert
echo "1" > /proc/sys/net/ipv4/ip_forward

# venet0: Nur UDP auf Port 1194 reinlassen (VPN)
iptables -A INPUT -i venet0 -p udp --dport 1194 -j ACCEPT
iptables -A INPUT -i venet0 -j DROP

# veent0: Nur UDP auf Port 1194 senden
iptables -A OUTPUT -o venet0 -p udp --dport 1194 -j ACCEPT
iptables -A OUTPUT -o venet0 -j DROP

# Forwarding ueber venet0 ausschalten
iptables -A FORWARD -i venet0 -p udp --dport 1194 -j ACCEPT
iptables -A FORWARD -o venet0 -p udp --dport 1194 -j ACCEPT
iptables -A FORWARD -i venet0 -j DROP

#Kommunikation ueber Tunnel erlauben
iptables -A INPUT -i tap0 -j ACCEPT
iptables -A OUTPUT -o tap0 -j ACCEPT
iptables -A FORWARD -i tap0 -j ACCEPT




dimension5000:~# ifconfig
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host
UP LOOPBACK RUNNING MTU:16436 Metric:1
RX packets:16 errors:0 dropped:0 overruns:0 frame:0
TX packets:16 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:1290 (1.2 KiB) TX bytes:1290 (1.2 KiB)

tap0 Link encap:Ethernet HWaddr 00:FF:17:D5:61:F8
inet addr:10.10.10.4 Bcast:10.10.10.255 Mask:255.255.255.0
inet6 addr: fe80::2ff:17ff:fed5:61f8/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:44 errors:0 dropped:0 overruns:0 frame:0
TX packets:90 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:100
RX bytes:3405 (3.3 KiB) TX bytes:10338 (10.0 KiB)

venet0 Link encap:UNSPEC HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00
inet addr:127.0.0.1 P-t-P:127.0.0.1 Bcast:0.0.0.0 Mask:255.255.255.255
UP BROADCAST POINTOPOINT RUNNING NOARP MTU:1500 Metric:1
RX packets:9104 errors:0 dropped:0 overruns:0 frame:0
TX packets:5824 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:523632 (511.3 KiB) TX bytes:450514 (439.9 KiB)

venet0:0 Link encap:UNSPEC HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00
inet addr:192.168.0.199 P-t-P:192.168.0.199 Bcast:0.0.0.0 Mask:255.255.255.255
UP BROADCAST POINTOPOINT RUNNING NOARP MTU:1500 Metric:1


Weiss jemand Rat, wie ich sämtlichen Traffic am Tunnel vorbei blocken kann?

Grüße.
craano.

cane
12.10.08, 14:57
http://harry.homelinux.org/modules.php?name=iptables_Generator

mfg
cane

craano
12.10.08, 19:52
Mhm, eigentlich habe ich nur einen Hinweis gesucht, venet0 / eth0 bis auf den Port 1194 dicht zu machen, aber die Anfragen an tap0 / tun0 nicht abzuweisen. Scheint nicht so einfach...

Grüße.
craano.

Ivo
13.10.08, 04:31
Mach doch erst mal alles dicht und nur upd 1194 auf.



# Eventuell vorhandene Regeln löschen
iptables -F INPUT
iptables -F FORWARD
iptables -F OUTPUT

# Alles wird verboten
iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT DROP

# VPN 1104(udp)
iptables -A INPUT -p udp --sport 1194 -m state --state ESTABLISHED -j ACCEPT
iptables -A OUTPUT -p udp --dport 1194 -m state --state NEW,ESTABLISHED -j ACCEPT

# tab0 erlauben
iptables -A INPUT -i tab0 -j ACCEPT
iptables -A OUTPUT -i tab0 -j ACCEPT
iptables -A FORWARD -i tab0 -j ACCEPT


Dies sollte gehen, mit tab0 hab ich nicht getestet. Aber die anderen Regeln gehen.

Ivo

craano
13.10.08, 10:35
Diese Zeilen verursachen dabei Fehlermelldungen:

# VPN 1104(udp)
iptables -A INPUT -p udp --sport 1194 -m state --state ESTABLISHED -j ACCEPT
iptables -A OUTPUT -p udp --dport 1194 -m state --state NEW,ESTABLISHED -j ACCEPT



./firewall2
iptables: No chain/target/match by that name
iptables: No chain/target/match by that name


Grüße.
craano.

Ivo
13.10.08, 10:50
Bei mir kommt kein Fehler.
Hast du das Script mal 1 zu 1 uebernommen?

Ivo

[edit] Hast du auch eine INPUT OUTPUT Regel erstellt?

craano
13.10.08, 10:55
So, habe das script nur ein wenig abgeändert.

#!/bin/bash
...

# VPN 1104(udp)
iptables -A INPUT -p udp --sport 1194 -j ACCEPT
iptables -A OUTPUT -p udp --dport 1194 -j ACCEPT
Damit kann ich den virtuellen Container nicht mehr pingen, durch den Tunnel bleibt er aber dennoch erreichbar.
Auch von innen komme ich nicht mehr über die 192er Adresse heraus, nur durch den Tunnel kann ich noch kommunizieren. Ich werde später haute Abend noch mal nmap von einem anderem Rechner aus auf die beiden Interfaces der VE loslassen, um zu schauen, ob wirklich alles dicht ist.

Habe ich noch irgendetwas vergessen?

Wie schottet Ihr Eure Rechner ab, um sicherzustellen, dass der gesamte Traffic nur durch ein VPN geht?

Grüße.
craano.

Ivo
13.10.08, 11:00
Mit dem pingen ist ja klar, da Du kein icmp erlaubt hast. Und da Du ja alles nur noch per Tunnel machen kannst, ist doch gut. Du wolltest es doch so, oder?

Ivo

craano
13.10.08, 11:19
Mit dem pingen ist ja klar, da Du kein icmp erlaubt hast. Und da Du ja alles nur noch per Tunnel machen kannst, ist doch gut. Du wolltest es doch so, oder?

Ivo

Ja, genauso wollte ich das. Habe mich oben ein wenig missverständlich ausgedrückt. Möchte nur sicher gehen, dass die VE nur erreichbar ist, wenn ein VPN Tunnel etabliert ist. Fände es nämlich nicht so toll, wenn sich der Samba Server im ganzen Internet bekannt macht. Ich habe zwar

interfaces = tap0
bind interfaces only = true
gesetzt, aber sicher ist sicher! Außerdem sollte das Netz an dem die VE hängt auch nicht erreichbar sein.

Erfahrungen in einem solchem Szenario sind willkommen.

Teste das jetzt noch ein wenig weiter, bevor ich meinen Router auf die VE forwarden lasse.

Grüße.
craano.