Freitag, 3. Januar 2014

Linux - openvpn prevent leaks - iptables

Besonders nach den vielen NSA Skandalen in letzer Zeit, erscheint es oft sinnvoll, einen Proxy zu verwenden. Wer besonders viel Wert auf Privatsphäre legt, sollte sich auch gegen IP Leaks absichern.
Unter Linux ist es am einfachsten, wenn man iptables verwendet.

Meine Regeln sehen so aus, dass nur Verbindungen per UDP/1149 möglich sind. LAN wird nicht geblockt, man will ja weiterhin Zugriffs ins LAN haben.

-A INPUT -i tun+ -j ACCEPT
-A INPUT -i eth+ -p udp -m udp --sport 1149 -j ACCEPT
-A INPUT -s 127.0.0.1/32 -d 192.168.0.0/24 -j ACCEPT
-A INPUT -s 127.0.0.1/32 -d 127.0.0.1/32  -j ACCEPT
-A INPUT -s 192.168.0.0/24 -d 192.168.0.0/24 -i eth+ -j ACCEPT
-A INPUT -j DROP
-A FORWARD -j DROP
-A OUTPUT -o tun+ -j ACCEPT
-A OUTPUT -o eth+ -p udp -m udp --dport 1149 -j ACCEPT
-A OUTPUT -s 127.0.0.1/32 -d 127.0.0.1/32 -j ACCEPT
-A OUTPUT -s 127.0.0.1/32 -d 192.168.0.0/24 -j ACCEPT
-A OUTPUT -s 192.168.0.0/24 -d 192.168.0.0/24 -o eth+ -j ACCEPT
-A OUTPUT -j DROP
Wer möchte, kann die Gegenstelle auch noch genauer bestimmen:
-A INPUT -i eth+ -p udp -m udp --sport 1149 -j ACCEPT
-A OUTPUT -o eth+ -p udp -m udp --dport 1149 -j ACCEPT
in
-A INPUT -i eth+ -p udp -m udp --sport 1149 -d SERVER_IP -j ACCEPT
-A OUTPUT -o eth+ -p udp -m udp --dport 1149 -d SERVER_IP -j ACCEPT
Um die Regeln hinzuzufügen, entweder vor dem aus dem -A iptables -A machen, oder die Regeln so wie ich sie gepostet habe abspeichern und mit iptables-restore < dateiname einspielen.
Die LAN IP (in meinem Fall 192.168.0.x) entsprechend auf eure anpassen.

Wenn alles richtig gemacht wurde, werden alle Verbindungen sofort geblockt, sobald der Proxy ausfällt.

Test:
root@x:/etc/openvpn# tcptraceroute 8.8.8.8
Selected device eth2, address 192.168.0.32, port 58557 for outgoing packets
Tracing the path to 8.8.8.8 on TCP port 80 (http), 30 hops max
libnet_write failed? Attempted to write 40 bytes, only wrote -1

root@x:/etc/openvpn# traceroute 8.8.8.8
traceroute to 8.8.8.8 (8.8.8.8), 64 hops max
1 traceroute: sendto: Operation not permitted
Geblockt - passt.

Außerdem kann man bei den meisten Routern bei den Firewalleigenschaften einstellen, welche Protokolle / IPs ins Internet dürfen. Wenn man es so einstellt, dass WAN-Verbindungen nur zu einer IP möglich sind (der Proxy IP), dann hat man hier auch noch einen Schutz.

2 Kommentare:

  1. Hi,

    ich habe einen Raspberry mit raspbian drauf und möchte alle Verbindungen darüber laufen lassen.

    Stelle mir das so vor:
    Am Raspberry läuft openvpn und da soll nichts geleakt werden können. Am Desktop läuft auch openvpn damit alles doppelt getunnelt wird. Am Desktop sollen auch iptables sein, als doppelter Schutz.

    Kannst du mir das erklären wie ich das mache?

    AntwortenLöschen
  2. Ich werde demnächst etwas dazu schreiben. Habe ein ähnliches Setup zu Hause.

    AntwortenLöschen