Tipps & Tricks: Linux absichern mit den iptables

@anddrs Der Programmierer JackCarver ist nicht mehr im Forum dabei.:(



Kannst du dazu nähere Angaben machen. Wie öffnest du die E-Mail Konten? Normal sollte kein Traffic durchgehen, wenn VPN offline ist.

Vielleicht geht die Verbindung über IPv6?
Die "Ausgangssperre" ist ja nur für IPv4 gedacht soweit ich sehe.
 
Die Links scheinen down zu sein.

Hier gibt es noch weitere Threads zu dem Thema Firewall unter Linux:

 
Wer auch ab und zu diesen Fehler bekommt:
write UDP: Operation not permitted (code=1)
Das liegt daran, dass die Port-Liste im Script von @JackCarver nicht aktuell ist.

Sprich:
iptables -t filter -A OUTPUT -o eth0 -p udp -m multiport --dports 1149,1150,1151,53,149,150,151 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
iptables -t filter -A INPUT -i eth0 -p udp -m multiport --sports 1149,1150,1151,53,149,150,151 -m state --state ESTABLISHED,RELATED -j ACCEPT
Diese Zeilen muss man anpassen (.conf File anschauen und alle fehlenden Ports im Script nachtragen)
Das gleiche für TCP wer es benutzt.

⚠️ Nachtrag: Wenn man das Script von @JackCarver benutzt, kann man auch ohne VPN-Verbindung DNS-Anfragen versenden. Dadurch kann es zu einem DNS-Leak kommen, falls die VPN-Verbindung mal abstürzt. Ich habe das Script etwas umgebaut, um dies zu vermeiden:

Bash:
#!/bin/bash
# Alle Regeln (der Tabelle "filter") zurücksetzen
iptables --flush
iptables --delete-chain
# Drop-Policies aktivieren
iptables -P OUTPUT DROP
iptables -P INPUT DROP
# Loopback-Device erlauben
iptables -A OUTPUT -j ACCEPT -o lo
iptables -A INPUT -j ACCEPT -i lo
# OpenVPN über UDP erlauben
iptables -A OUTPUT -j ACCEPT -o eth0 -p udp -m udp -m multiport --dports 1148,1149,1150,1151,148,149,150,151 -m state --state NEW,ESTABLISHED,RELATED
iptables -A INPUT -j ACCEPT -i eth0 -p udp -m udp -m multiport --sports 1148,1149,1150,1151,148,149,150,151 -m state --state ESTABLISHED,RELATED
iptables -A OUTPUT -j ACCEPT -o tun0
iptables -A INPUT -j ACCEPT -i tun0
# Private Netzwerke erlauben
iptables -A OUTPUT -j ACCEPT --dst 10.0.0.0/8
iptables -A INPUT -j ACCEPT --src 10.0.0.0/8
ℹ️ Ihr müsst ggf. die Argumente "eth0" und "10.0.0.0/8" an eure Setups anpassen.

Anschließend kann man die Firewall mit folgenden Befehlen testen (ist die VPN-Verbindung gestoppt, sollten beide Befehle fehlschlagen):
Bash:
getent hosts <Domain> # Testen des DNS
ping <Irgendeine Public(!) IP> # Testen der Internet-Verbindung

Danach evtl. nochmal alle Tests auf https://perfect-privacy.com durchführen um zu überprüfen, ob im Live-Betrieb alles passt ?
 
Last edited:
Wer auch ab und zu diesen Fehler bekommt:

Das liegt daran, dass die Port-Liste im Script von @JackCarver nicht aktuell ist.

Sprich:

Diese Zeilen muss man anpassen (.conf File anschauen und alle fehlenden Ports im Script nachtragen)
Das gleiche für TCP wer es benutzt.

⚠️ Nachtrag: Wenn man das Script von @JackCarver benutzt, kann man auch ohne VPN-Verbindung DNS-Anfragen versenden. Dadurch kann es zu einem DNS-Leak kommen, falls die VPN-Verbindung mal abstürzt. Ich habe das Script etwas umgebaut, um dies zu vermeiden:

Bash:
#!/bin/bash
# Alle Regeln (der Tabelle "filter") zurücksetzen
iptables --flush
iptables --delete-chain
# Drop-Policies aktivieren
iptables -P OUTPUT DROP
iptables -P INPUT DROP
# Loopback-Device erlauben
iptables -A OUTPUT -j ACCEPT -o lo
iptables -A INPUT -j ACCEPT -i lo
# OpenVPN über UDP erlauben
iptables -A OUTPUT -j ACCEPT -o eth0 -p udp -m udp -m multiport --dports 1148,1149,1150,1151,148,149,150,151 -m state --state NEW,ESTABLISHED,RELATED
iptables -A INPUT -j ACCEPT -i eth0 -p udp -m udp -m multiport --sports 1148,1149,1150,1151,148,149,150,151 -m state --state ESTABLISHED,RELATED
iptables -A OUTPUT -j ACCEPT -o tun0
iptables -A INPUT -j ACCEPT -i tun0
# Private Netzwerke erlauben
iptables -A OUTPUT -j ACCEPT --dst 10.0.0.0/8
iptables -A INPUT -j ACCEPT --src 10.0.0.0/8
ℹ️ Ihr müsst ggf. die Argumente "eth0" und "10.0.0.0/8" an eure Setups anpassen.

Anschließend kann man die Firewall mit folgenden Befehlen testen (ist die VPN-Verbindung gestoppt, sollten beide Befehle fehlschlagen):
Bash:
getent hosts <Domain> # Testen des DNS
ping <Irgendeine Public(!) IP> # Testen der Internet-Verbindung

Danach evtl. nochmal alle Tests auf https://perfect-privacy.com durchführen um zu überprüfen, ob im Live-Betrieb alles passt ?
Hallo zusammen, und danke für eure super Arbeit und Community hier. Ich habe die Tables so wie hier eingerichtet und es funktioniert auch einwandfrei auf meinem Hostsystem, jedoch führe ich meine Arbeit großteils auf virtuellem Maschinen aus (Virtmanager,KVM), diesen habe ich über NAT zum Host verbunden, jedoch sobald es ein Disconnect der openvpn Verbindung gibt, bridged der Virtmanager die Verbindung und verbindet sich über meinen Router. wäre toll wenn mir da jemand helfen kann.
 
Last edited:
Wer auch ab und zu diesen Fehler bekommt:

Das liegt daran, dass die Port-Liste im Script von @JackCarver nicht aktuell ist.


iptables -A OUTPUT -j ACCEPT -o eth0 -p udp -m udp -m multiport --dports 1148,1149,1150,1151,148,149,150,151 -m state --state NEW,ESTABLISHED,RELATED
Evtl. eine dumme Frage... Aber kann es sein,. dass man das komplett überarbeiten muss...
Schau mir gerade ein Config_File an:

...
proto udp
remote x.x.x.x 44
remote x.x.x.x 443
remote x.x.x.x 4433
scheinen ja jetzt ganz andere Ports zu sein ?!

Oder hab ich das System nicht verstanden...
Achja, in den alten Configs standen hier z.B. 148,149,150 ....
 
Evtl. eine dumme Frage... Aber kann es sein,. dass man das komplett überarbeiten muss...
Es müssen die in den verwendeten Konfigurationen genannten Ports sein, diese sind je nach Variante (TLS crypt oder TLS auth) unterschiedlich.
 
Back
Top