Tipps & Tricks: Linux absichern mit den iptables

Alles klar, verstanden.

Danke :).

Leider scheint es unter 15.04 GNOME wohl nicht zu gehen. Habe das IPtable persistent installiert, trd sagt mir das Programm immer, dass ich es noch installieren muss. Komisch.

Werde jetzt auf das normale Ubuntu zurückgreifen. Melde mich dann ob es geht.
 
Kann sein, es hat sich der Pfad zur Datei iptables-persistent bei Ubuntu 15.04 geändert hat. Getestet hatte ich es wie gesagt auf 13.10. Guck doch mal ob dir dein Paketmanager das Paket als installiert anzeigt.
 
Ja macht er, im Software Center ist alles installiert. Probiere es jetzt gerade auf dem normalen Ubuntu

EDIT: Unter dem normalen Ubuntu bekomme ich keine Auswahlmöglichkeit für die erweiterten Einstellungen.
Ich benutze exakt das gleicht Programm. Sowohl die Ubuntu als die QT Version gingen bei GNOME zumindest soeweit, dass ich die Firewalleinstellungen auswählen konnte. Beim normalen Ubuntu nicht mehr,.

Ich versuche es jetzt nochmal mit 14.04.2 LTS
 
Ja da wird mal n Update nötig, so wie das aussieht. Ich muss mir mal die neuen Versionen für Ubuntu und Mint auf meiner Testplatte mal installieren wenn Zeit ist. Nutze halt vorrangig OSX, die installierten Linux Versionen sind bei mir noch die alten Testversionen.

Du kannst das auch per Hand alternativ über ein bash Skript machen, so wie ich das unter Posting #2 gezeigt habe. Diese Regeln kannst du dann wieder mittels dem iptables-save Befehl speichern und durch das iptables-persistent Paket werden diese dann auch geladen. Wie das geht zeigt dieser Link:

https://www.thomas-krenn.com/de/wiki...haft_speichern

Was anderes macht das Tool auch nicht.

Edit:
Bevor du das dauerhaft speicherst natürlich nach ausführen des bash Skriptes prüfen ob es soweit funktioniert und nur der VPN Traffic erlaubt ist. Dann kannst du das ja verankern.
 
Kannst du mir bitte kurz sagen, ob das so korrekt gelaufen ist?

Hab den Skirpt Text aus dem 2ten Post kopiert.

nano /etc/iptables/vpn.sh

eingefügt, abgespeichert.

chmod u+x vpn.sh

./vpn.sh

dann mit iptables -L gecheckt, standen die Sachen aus dem Skript drin.

Dann den kram in die Dateien abgespeichert:
iptables-save > /etc/iptables/rules.v4
ip6tables-save > /etc/iptables/rules.v6

Alles so korrekt gelaufen? Müsste oder?


Es läuft jetzt alles. Absolut keine Verbindungen nach außen ohne den PP Manager. ping 8.8.8.8 im terminal geht nicht, Firefox kriegt nichts. Super. Sobald ich auf connect klicke bei einem Server kriegt der ping verbindung und Firefox auch.

Danke für die Regeln :)
 
Also auf der NAS ist iptables v1.4.21 installiert.
touch vpn.sh
Ist touch ein befehl und vpn.sh soll die Datei heißen oder wie ist das gemeint bei der Einrichtung deines scriptes ?
Muss diese Datei in einem bestimmten Verzeichnis erstellt werden ?
Weist du ob das Script nach einem restart noch läuft oder muss es immer mit "sudo" vpn.sh neu gestartet werden ?
 
Ja der Befehl legt eine neue Datei an, wie du diese nennst ist komplett egal, der Name ist nur ein Beispiel.
Auch der Ort wo du die Datei erzeugst ist egal, kann überall sein, du musst sie nur als root, also über sudo zb ausführen.
Das Skript selbst läuft gar nicht, es startet nur die iptables Regeln. Die Regeln sind nach einem Neustart wieder weg, solltest du den Befehl

iptables-save

zur Verfügung haben so kannst du die Regeln auch persistent speichern.
Wie das geht siehe zb hier:

http://www.sysadminslife.com/linux/...iptables-persistent-debian-ubuntu-linux-mint/
 
Code:
#!/bin/sh
IPTABLES="/sbin/iptables"

# Flush everything.
$IPTABLES -F
$IPTABLES -X

# Drop everything by default.
$IPTABLES -P INPUT DROP
$IPTABLES -P FORWARD DROP
$IPTABLES -P OUTPUT DROP

# Already established connections.
$IPTABLES -A INPUT -i eth0 -p udp -m state --state ESTABLISHED -j ACCEPT

# Allow traffic to VPN servers.
$IPTABLES -A OUTPUT -o eth0 -p udp -d 193.105.134.0/24 -m multiport --dports 149,150,151,1149,1150,1151 -m state --state NEW,ESTABLISHED -j ACCEPT
$IPTABLES -A OUTPUT -o eth0 -p udp -d 46.246.89.0/24 -m multiport --dports 149,150,151,1149,1150,1151 -m state --state NEW,ESTABLISHED -j ACCEPT

# Allow traffic on TUN interface.
$IPTABLES -A INPUT -i tun+ -j ACCEPT
$IPTABLES -A OUTPUT -o tun+ -j ACCEPT

# Allow DNS queries.
$IPTABLES -A OUTPUT -o eth0 -p udp -d 8.8.8.8 --destination-port 53 -j ACCEPT
$IPTABLES -A OUTPUT -o eth0 -p udp -d 8.8.4.4 --destination-port 53 -j ACCEPT

So hab ich das ganze gelöst (Debian 6 + Stockholm Server).

DNS Server werden von OpenVPN gepusht und nach Tunnelaufbau läuft der gesamte Traffic sowieso über tun* , also kann einmalig bei Tunnelstart für das Auflösen von *.perfect-privacy.tld die Google DNS Server verwendet werden.

Das ganze nur noch unter /usr/local/sbin/firewall.sh abspeichern, ausführbar machen (chmod +x)
und in /etc/network/interfaces eintragen (am besten als pre-up, damit die Regeln geladen werden bevor das Netzwerkinterface initialisiert wird).

MfG
 
Last edited:
Ich habe Ubuntu 14.04.3 LTS auf meiner VM, habe den Script aus dem Post #106 übernommen, aber es wird nix blockiert, alles geht nach wie vor (Nach restart genau so).

Hab es nun hinbekommen, wird zwar blockiert, aber connected sich nicht zu den gewünschten VPN, jedoch ist ne Ping abfrage zu der IP möglich

in meinen Fall ist es der HK server

Code:
sudo iptables -t filter -A OUTPUT -o wlan0 -p udp -m multiport --dports 1149,149,1150,150,1151,151 -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 -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 INPUT -i wlan0 -p udp -m multiport --sports 1149,149,1150,150,1151,151 -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 -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 OUTPUT --dst 103.16.26.71 -j ACCEPT
sudo iptables -t filter -A INPUT --src 103.16.26.71 -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


iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT DROP

Was mache ich falsch?
Firewall ist aus.
 
Last edited:
Was mache ich falsch?

Es fehlt Port 53 UDP in den Regeln, ohne den ist keine DNS Auflösung möglich und du kannst nur zur IP connecten. In den Configs ist aber der FQDN des Servers, der aufgelöst werden muss.

Du solltest auch dein LAN öffnen, wie das geht siehst du im Thread.

Entweder du machst die Policy der gesamten Kette auf DROP, was du unten mit -P jeweils hast, oder du machst selektiv für einzelne interfaces ein Drop, was du darüber noch hast. Beides zusammen ist sinnlos.

Die Server-IP musst du auch nicht explizit erlauben, das läuft über die Ports.

Ein DROP der Forward chain ist auch sinnlos es sei denn du verwendest den Rechner als Router, es langt INPUT, OUTPUT
 
# iptables -A INPUT -s 192.168.0.0/24 -j ACCEPT
# iptables -A OUTPUT -s 192.168.0.0/24 -j ACCEPT

habe ich jetzt hinzugefügt


Die befehele

iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT DROP


gelöscht, geht jedoch immer noch nicht, bin seit 2 Tagen am verzweifeln.

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 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


Port 53 ist auch Frei
 
Es kann nicht beides mal ein -s sein. Das bezeichnet die Quelle. Bei Output ein -d für destination. Kannst du nun FQDNs Pingen? Wie google.de?
 
Also wenn ich mein Skript aus dem Post #2 nehme und in ne Datei wie fw.sh kopiere, die dann ausführbar mache und das ganze ausführe klappt das alles. Weiß nicht wo das bei dir unklar ist. Steht doch alles im Thread...

Edit:
Do solltest das ganze natürlich mit sudo ausführen und deine Interfaces entsprechend anpassen, ich hab zum Bspl wlan1 und eth0.
 
Welches Skript sollte ich am besten aus diesem Thread hier nutzen ? Ich finde der Thread ist sehr unübersichtlich :) Ist es kompatibel zu Ubuntu 14.04 bzw 15.10 ? Danke für eure Mühe
 
Welches Skript sollte ich am besten aus diesem Thread hier nutzen ?

Es ist nach wie vor das Skript aus Post #2. Du kannst alles 1:1 übernehmen, nur bei den letzten 4 Regeln solltest du mal nachsehen, welche Netzwerkadapter du nutzt. Mittels ifconfig lässt sich das ermitteln und dann entsprechend ersetzen. Es könnte ja sein, du nutzt wlan1 oder eth1 anstatt wlan0 oder eth0, dann würden die Regeln den falschen Adapter betreffen.
 
Back
Top