Tipps & Tricks: Linux absichern mit den iptables

Morbis55

Active Member
Ich hätte eine eventuell blöde Frage.
Für die iptables muss man ja die Firewall deaktiveren. Die Firewall macht im Grunde ja auch nichts anderes als Ports blockieren.
Also hat man deswegen keine Nachteile, wenn die UFW deaktiviert ist? Das iptable Skript ist eher sogar effektiver oder?

Dann hätte ich noch ne Frage zu den Adapterbezeichnungen.
Bei mir gibt es weder wlan0 noch eth0, sondern die heißen wlx74... (ist ein WLAN USB Adapter) und enp4s0 (LAN ist jedoch ungenutzt)
JackCarver hat ja gemeint, man müsse das dann im Skript abändern, interessanterweise funktioniert das trotzdem.
Deswegen
1.: Warum funktioniert das trotzdem? über ifconfig hab ich weder "wlan0" noch "eth0" als Adapter gelistet, sondern die oben genannten.
2.: Wenn ich es ändern müsste, warum dann nur die letzten 4 Regeln? Warum nicht gleich alle wlan0 durch die korrekte Bezeichnung ersetzen?
 

JackCarver

Junior Member
Ich hätte eine eventuell blöde Frage.
Gibt eigentlich keine blöden Fragen ;-)

ufw ist nur n Frontend zu den iptables, du kannst natürlich die iptables jederzeit direkt ansprechen ohne das Frontend zu nutzen.

Dann hätte ich noch ne Frage zu den Adapterbezeichnungen.
Bei mir gibt es weder wlan0 noch eth0, sondern die heißen wlx74... (ist ein WLAN USB Adapter) und enp4s0 (LAN ist jedoch ungenutzt)
Gut wlan-usb ist ja auch nur n WLAN-Stick, den man über USB anschließt, die heißen unter meinem Debian wlan0-n. Wenn das bei dir anders heißt ist das auch nicht wild, wichtig ist nur, dass du die korrekte Bezeichnung verwendest.

JackCarver hat ja gemeint, man müsse das dann im Skript abändern, interessanterweise funktioniert das trotzdem.
Deswegen
1.: Warum funktioniert das trotzdem? über ifconfig hab ich weder "wlan0" noch "eth0" als Adapter gelistet, sondern die oben genannten.
2.: Wenn ich es ändern müsste, warum dann nur die letzten 4 Regeln? Warum nicht gleich alle wlan0 durch die korrekte Bezeichnung ersetzen?
Was heißt es funktioniert trotzdem? Die Regeln sperren den Traffic nur für eth0 und wlan0, nicht für andere Adapterbezeichnungen. Also entweder das heißt bei dir trotzdem wlan0 und eth0 oder keine Ahnung...

Und korrekt, natürlich muss es für alles geändert werden, mein Fehler ;-)

Edit:
Oder dein ufw sperrt das für dich, dann merkst du gar nicht, dass die iptables Regeln ins Leere laufen.

Allgemein hast du bei ner Firewall immer zwei Möglichkeiten an das ganze heranzugehen. Mein Skript zb wählt die Policy ACCEPT für alle Interfaces. Man muss dann eben die Interfaces sperren, die man dicht haben möchte, also idR alle, die direkt ins Internet können. Dazu öffnet man dann die Ports, Protokolle IPs etc, die man offen haben möchte.

Die andere Sache ist die Policy DROP auf alle Interfaces anzuwenden. Dann ist per se alles dicht, man muss dann aber alle Interfaces, über die man raus möchte öffnen. Das ist etwas mehr Arbeit, da du dann auch die VPN Interfaces öffnen musst, das localhost Interface lo, sowie die Ports und Protokolle auf den Interfaces mit denen du zu PP verbinden möchtest.
 
Last edited:

Morbis55

Active Member
ne es funktioniert wie es soll. Wenn ich nicht mit dem PPManager verbunden bin, dann bekomm ich auch keine Verbindung nach außen.
Sobald ich per VPN verbunden bin, ist auch eine Verbindung ins Internet da.

Hab mich nur gewundert, weil die Adapternamen nicht übereinstimmen, aber das Skript dann trotzdem funktioniert.
War halt nur wegen der wlan0 Geschichte. Aber solange es funktionert ist ja alles gut :D
 
Ich bin derzeit kein PP-Kunde und möchte meine System erst einmal einrichten, bevor ich mir erneut einen Zugang erstelle. Ich habe unter Ubuntu 16.04 nun die Regeln aus dem zweiten Beitrag einmal übernommen und dann die Adapternamen und Ports (lediglich DNS: 53 + Serverport) bei mir angepasst, um das Setup mit einem Free-VPN zu testen. Bei mir hat das irgendwie nicht so richtig funktioniert. Habe ich zu wenige Ports freigeschaltet oder hätte ich noch etwas anderes anpassen müssen?
 

Ghost

Junior Member
Hey, wenn 2 LAN Anschlüsse am PC vorhanden sind (wie bei mir), muss das Script um eth1 erweitert werden.
Ich hoffe, dass ich mit dieser Info jemanden helfen konnte ;)

Code:
sudo iptables -t filter -A OUTPUT -o wlan0 -p udp -m multiport --dports 1149,149,1150,150,1151,151,53 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
sudo iptables -t filter -A OUTPUT -o wlan0 -p tcp -m multiport --dports 1152,152 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
sudo iptables -t filter -A OUTPUT -o eth0 -p udp -m multiport --dports 1149,149,1150,150,1151,151,53 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
sudo iptables -t filter -A OUTPUT -o eth0 -p tcp -m multiport --dports 1152,152 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
sudo iptables -t filter -A OUTPUT -o eth1 -p udp -m multiport --dports 1149,149,1150,150,1151,151,53 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
sudo iptables -t filter -A OUTPUT -o eth1 -p tcp -m multiport --dports 1152,152 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
sudo iptables -t filter -A INPUT -i wlan0 -p udp -m multiport --sports 1149,149,1150,150,1151,151,53 -m state --state ESTABLISHED,RELATED -j ACCEPT
sudo iptables -t filter -A INPUT -i wlan0 -p tcp -m multiport --sports 1152,152 -m state --state ESTABLISHED,RELATED -j ACCEPT
sudo iptables -t filter -A INPUT -i eth0 -p udp -m multiport --sports 1149,149,1150,150,1151,151,53 -m state --state ESTABLISHED,RELATED -j ACCEPT
sudo iptables -t filter -A INPUT -i eth0 -p tcp -m multiport --sports 1152,152 -m state --state ESTABLISHED,RELATED -j ACCEPT
sudo iptables -t filter -A INPUT -i eth1 -p udp -m multiport --sports 1149,149,1150,150,1151,151,53 -m state --state ESTABLISHED,RELATED -j ACCEPT
sudo iptables -t filter -A INPUT -i eth1 -p tcp -m multiport --sports 1152,152 -m state --state ESTABLISHED,RELATED -j ACCEPT
sudo iptables -t filter -A OUTPUT --dst 192.168.0.0/16 -j ACCEPT
sudo iptables -t filter -A INPUT --src 192.168.0.0/16 -j ACCEPT
sudo iptables -t filter -A OUTPUT --dst 10.0.0.0/8 -j ACCEPT
sudo iptables -t filter -A INPUT --src 10.0.0.0/8 -j ACCEPT
sudo iptables -t filter -A OUTPUT --dst 172.16.0.0/12 -j ACCEPT
sudo iptables -t filter -A INPUT --src 172.16.0.0/12 -j ACCEPT
sudo iptables -t filter -A OUTPUT -o wlan0 -j DROP
sudo iptables -t filter -A INPUT -i wlan0 -j DROP
sudo iptables -t filter -A OUTPUT -o eth0 -j DROP
sudo iptables -t filter -A INPUT -i eth0 -j DROP
sudo iptables -t filter -A OUTPUT -o eth1 -j DROP
sudo iptables -t filter -A INPUT -i eth1 -j DROP
 

theundertaker

Junior Member
das was mich sehr interessieren würde - funktioniert das ganze auch z.b. unter ubuntu mate oder snappy ubuntu core für den raspberry pi ? ich würde das kleine teil gerne als vpn proxy für mein lan zu hause verwenden.
 

Merkaber

New Member
Ich habe auf Ubuntu 16.04 LTS das Programm gestartet, dennoch komm ich ohne VPN ins Netz. Danach habe ich alle Befehle einzelnd ins Terminal eingegeben und es funktionierte nicht. Wo liegt der Fehler?
 

Ghost

Junior Member
@Merkaber
Hey, hast du überprüft, wie dein Netzwerkadapter heißt?
Das Script bezieht sich auf wlan0, eth0, eth1
Wenn dein Netzwerkadapter anders lautet, musst du es im Script anpassen.
 

Morbis55

Active Member
Der Netzwerkadapter kann auch ganz anders heißen. Ich hatte bisher noch nie die Bezeichung "wlanX" oder "ethX"
Bei mir hatten die immer komplett seltsame Namen wie "wlx64eg4246"

In den Verbindungsinformationen bei Schnittstelle steht der Name
Diesen im Falle von Wlan für "wlan0" ersetzen, im Falle von Ethernet für "eth0" ersetzen.
Ich fand das allerdings anfänglich auch sehr missverständlich formuliert. Jemand der sich da nicht sonderlich auskennt, kann das nicht wissen.
Typischer Stolperstein in der Linux Welt. Alle sitzen auf ihrem hohen Ross und sagen dem Reitschüler "dann steig mal auf"
 

Merkaber

New Member
Danke fuer die Tipps. Ich habe mit
Code:
ifconfig -a
mein Name des Adapters herausgefunden (wlp4s0). Nun hatte ich die Idee, entweder 1. das Script nach dem Namen umzuschreiben oder 2. den Namen des Adapters zu aendern (irgendwie). Was ist die bessere Variante? Kann ich irgendwas crashen, wenn ich den Namen des Adapters umschreibe? - sonst kann ich das Programm ja nicht nutzen.

Edit 1:
Wenn ich das Skript so umschreiben und ausfuehren wuerde, wie koennte ich es dann wieder rueckgaengig machen?
 
Last edited:

Morbis55

Active Member
Skript umschreiben.

Die Änderungen durch das Skript lassen sich rückgängig machen durch
- Neustarten des PCs
oder
- in der Kommandozeile -> "sudo iptables --flush"
 

Ghost

Junior Member
Bei mir (mit Linux Mint 18.1 Mate) lauten die LAN-Adapter enp2s0 und enp3s0

Code:
#!/bin/bash

#Iptables Regeln für VPN:

sudo iptables -t filter -A OUTPUT -o wlan0 -p udp -m multiport --dports 1149,149,1150,150,1151,151,53 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
sudo iptables -t filter -A OUTPUT -o wlan0 -p tcp -m multiport --dports 1152,152 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
sudo iptables -t filter -A OUTPUT -o enp2s0 -p udp -m multiport --dports 1149,149,1150,150,1151,151,53 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
sudo iptables -t filter -A OUTPUT -o enp2s0 -p tcp -m multiport --dports 1152,152 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
sudo iptables -t filter -A OUTPUT -o enp3s0 -p udp -m multiport --dports 1149,149,1150,150,1151,151,53 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
sudo iptables -t filter -A OUTPUT -o enp3s0 -p tcp -m multiport --dports 1152,152 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
sudo iptables -t filter -A INPUT -i wlan0 -p udp -m multiport --sports 1149,149,1150,150,1151,151,53 -m state --state ESTABLISHED,RELATED -j ACCEPT
sudo iptables -t filter -A INPUT -i wlan0 -p tcp -m multiport --sports 1152,152 -m state --state ESTABLISHED,RELATED -j ACCEPT
sudo iptables -t filter -A INPUT -i enp2s0 -p udp -m multiport --sports 1149,149,1150,150,1151,151,53 -m state --state ESTABLISHED,RELATED -j ACCEPT
sudo iptables -t filter -A INPUT -i enp2s0 -p tcp -m multiport --sports 1152,152 -m state --state ESTABLISHED,RELATED -j ACCEPT
sudo iptables -t filter -A INPUT -i enp3s0 -p udp -m multiport --sports 1149,149,1150,150,1151,151,53 -m state --state ESTABLISHED,RELATED -j ACCEPT
sudo iptables -t filter -A INPUT -i enp3s0 -p tcp -m multiport --sports 1152,152 -m state --state ESTABLISHED,RELATED -j ACCEPT
sudo iptables -t filter -A OUTPUT --dst 192.168.0.0/16 -j ACCEPT
sudo iptables -t filter -A INPUT --src 192.168.0.0/16 -j ACCEPT
sudo iptables -t filter -A OUTPUT --dst 10.0.0.0/8 -j ACCEPT
sudo iptables -t filter -A INPUT --src 10.0.0.0/8 -j ACCEPT
sudo iptables -t filter -A OUTPUT --dst 172.16.0.0/12 -j ACCEPT
sudo iptables -t filter -A INPUT --src 172.16.0.0/12 -j ACCEPT

sudo iptables -t filter -A OUTPUT -o wlan0 -j DROP
sudo iptables -t filter -A INPUT -i wlan0 -j DROP
sudo iptables -t filter -A OUTPUT -o enp2s0 -j DROP
sudo iptables -t filter -A INPUT -i enp2s0 -j DROP
sudo iptables -t filter -A OUTPUT -o enp3s0 -j DROP
sudo iptables -t filter -A INPUT -i enp3s0 -j DROP


iptables dauerhaft speichern.


1.iptables unter etc/iptables.up.rules speichern

Code:
sudo bash
iptables-save > /etc/iptables.up.rules

2. Die Datei /etc/network/if-pre-up.d/iptables erstellen und konfigurieren.

Code:
sudo nano /etc/network/if-pre-up.d/iptables
(Inhalt der Datei iptables)

Code:
#!/bin/bash
/sbin/iptables-restore < /etc/iptables.up.rules

3.Die Datei /etc/network/if-pre-up.d/iptables ausführbar machen.


Code:
chmod +x /etc/network/if-pre-up.d/iptables
 
Last edited:

theundertaker

Junior Member
ich hätte deine anleitung versucht nachzubauen .. irgendwie fehlt mir da jetzt aber ein wenig der durchblick.
ich hätte eigentlich alles so erstellt, beim starten dann (ich hoffe ./iptables ist fürs starten richtig) bekomme ich die fehlermeldung

iptables-restore: line 7 failed

nun mal meine frage dazu:

sudo bash
iptables-save > /etc/iptables.up.rules

hiermit wird doch eine kopie der derzeitigen firewall regeln erstellt, oder ?
müssen dann die zeilen, vom anfang deines posts, dann am ende oder am anfang der datei /etc/iptables.up.rules eingefügt werden ? oder ersetzen diese zeilen das "alte" coding ?
 

steve67

New Member
Hi,
die IPTABLES funktionieren wunderbar, jedoch habe ich noch ein anderes Problem.
Zuerst meine Situation:
-ich habe auf meine Raspi UBUNTU Mate 16.4 installiert
-die IPTABLES eingerichtet
-Das Pertfect-Privacy Tool für den VPN-Tunnel installiert.
soweit passt auch alles und ich komme nur ins Internet sobald der Tunnel steht.

Ich habe zwei FritzBoxen und diese über VPN verbunden 192.168.30.0 und 192.168.20.0, das Raspi hat 192.168.30.5.
Aus dem 20.0 Netzt komme ich auf die 192.168.30.5 solange der Tunnel nicht aufgebaut ist, sobald dieser jedoch verbunden ist, komme ich nicht mehr auf die 30.5, aus dem 30.0 Netzt jedoch schon, auch wenn der Tunnel steht. Warum klappt das nicht aus dem 192.168.20.0-Netz

Habe ich irgendwo einen Denkfehler???
Bin schon fast am verzweifeln:-((

Hoffe jemand hat einen Tip für mich!!!

Grüße
Steve
 

steve67

New Member
Nachtrag, hier noch meine routel-Ausgabe:
ohne VPN:
target gateway source proto scope dev tbl
default 192.168.30.1 static enxb827eb5c4772
default 192.168.30.1 static VLAN
169.254.0.0/ 16 link VLAN
192.168.30.0/ 24 192.168.30.5 kernel linkenxb827eb5c4772
192.168.30.0/ 24 192.168.30.6 kernel link VLAN
127.0.0.0 broadcast 127.0.0.1 kernel link lo local
127.0.0.0/ 8 local 127.0.0.1 kernel host lo local
127.0.0.1 local 127.0.0.1 kernel host lo local
127.255.255.255 broadcast 127.0.0.1 kernel link lo local
192.168.30.0 broadcast 192.168.30.6 kernel link VLAN local
192.168.30.0 broadcast 192.168.30.5 kernel linkenxb827eb5c4772 local
192.168.30.5 local 192.168.30.5 kernel hostenxb827eb5c4772 local
192.168.30.6 local 192.168.30.6 kernel host VLAN local
192.168.30.255 broadcast 192.168.30.6 kernel link VLAN local
192.168.30.255 broadcast 192.168.30.5 kernel linkenxb827eb5c4772 local
fe80::/ 64 kernel enxb827eb5c4772
fe80::/ 64 kernel VLAN
default unreachable kernel lo unspec
::1 local none lo local
fe80::1598:ea7b:1979:3bb4 local none lo local
fe80::ce85:e365:a79f:9eac local none lo local
ff00::/ 8 enxb827eb5c4772 local
ff00::/ 8 VLAN local
default unreachable kernel lo unspec


und mit VPN-Tunnel:
target gateway source proto scope dev tbl
0.0.0.0/ 1 10.0.49.1 tun0
default 192.168.30.1 static enxb827eb5c4772
default 192.168.30.1 static VLAN
5.79.71.195 192.168.30.1 enxb827eb5c4772
10.0.49.0/ 24 10.0.49.251 kernel link tun0
128.0.0.0/ 1 10.0.49.1 tun0
169.254.0.0/ 16 link VLAN
192.168.30.0/ 24 192.168.30.5 kernel linkenxb827eb5c4772
192.168.30.0/ 24 192.168.30.6 kernel link VLAN
10.0.49.0 broadcast 10.0.49.251 kernel link tun0 local
10.0.49.251 local 10.0.49.251 kernel host tun0 local
10.0.49.255 broadcast 10.0.49.251 kernel link tun0 local
127.0.0.0 broadcast 127.0.0.1 kernel link lo local
127.0.0.0/ 8 local 127.0.0.1 kernel host lo local
127.0.0.1 local 127.0.0.1 kernel host lo local
127.255.255.255 broadcast 127.0.0.1 kernel link lo local
192.168.30.0 broadcast 192.168.30.6 kernel link VLAN local
192.168.30.0 broadcast 192.168.30.5 kernel linkenxb827eb5c4772 local
192.168.30.5 local 192.168.30.5 kernel hostenxb827eb5c4772 local
192.168.30.6 local 192.168.30.6 kernel host VLAN local
192.168.30.255 broadcast 192.168.30.6 kernel link VLAN local
192.168.30.255 broadcast 192.168.30.5 kernel linkenxb827eb5c4772 local
fe80::/ 64 kernel enxb827eb5c4772
fe80::/ 64 kernel VLAN
default unreachable kernel lo unspec
::1 local none lo local
fe80::1598:ea7b:1979:3bb4 local none lo local
fe80::ce85:e365:a79f:9eac local none lo local
ff00::/ 8 enxb827eb5c4772 local
ff00::/ 8 VLAN local
default unreachable kernel lo unspec
Ich vermute, der Tunnel verhindert die Kommunikation mit den 192.168.20.0 Netz. Ich vermute dass ich die Routingtabelle anpassen muss, jedoch weiß ichn icht wie?!
Grüße
Steve
 

anddrs

New Member
Hier n paar Screenshots:



Hi, an sich sehr brauchbares tool, danke! Nur funktioniert es unter Ubuntu 18 nicht mehr, da die gksudo fehlt.

2te Frage: zwar läuft fast alles mit ip-tables einwandfrei, nur lässt sich gmail und ein anderes mail Konto ohne weiteres trotz ip tables und inaktiven PP - öffnen! Hab ich was falsch gemacht?

Gruß
Andreas
 

Ghost

Junior Member
Hi, an sich sehr brauchbares tool, danke! Nur funktioniert es unter Ubuntu 18 nicht mehr, da die gksudo fehlt.
@anddrs Der Programmierer JackCarver ist nicht mehr im Forum dabei.:(

2te Frage: zwar läuft fast alles mit ip-tables einwandfrei, nur lässt sich gmail und ein anderes mail Konto ohne weiteres trotz ip tables und inaktiven PP - öffnen! Hab ich was falsch gemacht?
Kannst du dazu nähere Angaben machen. Wie öffnest du die E-Mail Konten? Normal sollte kein Traffic durchgehen, wenn VPN offline ist.
 
Top