Weiter Zurück [Inhalt] Online Suche im Handbuch LITTLE-IDIOT NETWORKING

12.12 Praktische, sinnvolle Beispiele

Ich besitze eine Dial on Demand ISDN-Verbindung -i ippp0). Ich rufe News ab (-p TCP -s news.provider.de nntp) und Mail (-p TCP -s mail.provider.de pop-3). Ich benutze Debian Linux und benutzte FTP, um meinen Host regelmäßig automatisch upzudaten (-p TCP -y -s ftp.debian.org ftp-data). Ich surfe im Internet über den Proxy des Providers (-p TCP -d proxy.provider.de 8080), aber ich mag keine Werbung von "doubleclick.net" auf dem Archiv von Dilbert (-p TCP -y -d 199.95.207.0/24 & -p TCP -y -d 199.95.208.0/24).

Ich möchte nicht, daß Leute aus dem Internet mit FTP auf meinen Host zugreifen, während ich online bin.(-p TCP -d $LOCALIP ftp), aber ich möchte auch nicht, daß eventuell jemand auf meinen Host mit gespooften IP - Nummern zugreift (IP - Nummern aus dem internen Netzwerk auf dem externen Interface) (-s 192.168.1.0/24). Siehe hierzu auch Kapitel Anti Spoof Regeln.

Dieses Setup ist recht einfach, da der LINUX Host keine anderen Hosts im internen Netzwerk schützen muß.

Ich möchte auch nicht, daß irgendein Programm sich mit doubleclick.net verbindet, um Banner einzublenden.

# ipchains -A output -d 199.95.207.0/24 -j REJECT
# ipchains -A output -d 199.95.208.0/24 -j REJECT
# 

Nun möchte ich Prioritäten auf verschiedenste ausgehende Pakete setzen (Es gibt nicht so viel sinnvolle Regeln für eingehende Pakete...) Da ich eine sehr übersichtliche Zahl von Paketen habe, ist es sinnvoll, diese in einer chain unterzubringen, die ich ippp-out nenne.

# ipchains -N ippp-out
# ipchains -A output -i ippp0 -j ippp-out
# 

Eine kleine Zeitverzögerung für Telnet und WWW-Pakete.

# ipchains -A ppp-out -p TCP -d proxy.virtual.net.au 8080 -t 0x01 0x10
# ipchains -A ppp-out -p TCP -d 0.0.0.0 telnet -t 0x01 0x10
# 

Erniedrige cosr für ftp data, nntp, pop-3:

# ipchains -A ppp-out -p TCP -d 0.0.0.0/0 ftp-data -t 0x01 0x02
# ipchains -A ppp-out -p TCP -d 0.0.0.0/0 nntp -t 0x01 0x02
# ipchains -A ppp-out -p TCP -d 0.0.0.0/0 pop-3 -t 0x01 0x02
# 

Hier sind ein paar Beschränkungen auf Paketen, die von dem ippp0 Interface kommen. Die chain soll ippp-in heißen:

# ipchains -N ippp-in
# ipchains -A input -i ippp0 -j ppp-in
# 

Nun kommen keine Pakete auf dem Device ippp0 mehr an. Wenn diese aus dem Bereich des Intranets stammen, also die IP - Nummern 192.168.1.* besitzen, dann werden diese geloggt und abgelehnt:

# ipchains -A ppp-in -s 192.168.1.0/24 -l -j DENY
#

Vom Linux Host selber sollen Anfragen an DNS-Server im Internet erlaubt werden. Ich betreibe einen caching nameserver, der alle Anfragen an den DNS-Server des Providers richtet. Also erwarte ich DNS-Antworten von diesem Host (und nur von diesem), eingehende FTP Pakete (nur Antwortpakete, die auf Ports oberhalb von 1023 eintreffen, aber nicht die X-Windows Ports (6000+) belegen):

# ipchains -A ppp-in -p UDP -s 203.29.16.1 -d $LOCALIP dns -j ACCEPT
# ipchains -A ppp-in -p TCP -s 0.0.0.0/0 ftp-data -d $LOCALIP 1024:5999 -j ACCEPT
# ipchains -A ppp-in -p TCP -s 0.0.0.0/0 ftp-data -d $LOCALIP 6010: -j ACCEPT
# ipchains -A ppp-in -p TCP -d $LOCALIP ftp -j ACCEPT
#

Zum Schluß erlaube ich alle Pakete vom Host an den Host selber, damit alle Programme, wie X-Windows, SMTP, PING....auch korrekt laufen:

# ipchains -A input -i lo -j ACCEPT
# 

Nun füge ich die default policy für die input chain hinzu. Diese ist DENY, sodaß alle Pakete verworfen werden:

# ipchains -P input DENY
# 

Anmerkung: Ich würde die chains nicht in dieser Reihenfolge aufsetzen, da ansonsten Pakete die Firewall passieren könnten, während des Setups der Regeln. Also sollte man zuerst die Policy festlegen, und danach die Regeln und chains aufsetzen......Jedoch könnte dies zu Problemen führen, wenn ipchains beim Aufsetzen der Regeln DNS Lookups ausführen muß, um die Hostnamen aufzulösen.

Der Befehl ipchains-save

Das Aufsetzen der Regeln kann einfach so per Hand erfolgen. Wenn man sich jedoch später an die Regeln oder die Reihenfolge erinnern muß dann wird es schwierig.

ipchains-save ist ein Skript, welches die aktuellen Regeln ausliest, und diese in ein File sichert.

ipchains-save ist in der Lage, eine einzige chain zu speichern, oder auch alle chains gleichzeitig, wenn keine chain angegeben wird. Die einzige Option, die hier erlaubt ist, ist -v, welche dafür sorgt, daß die Regeln und eventuelle Fehlermeldungen an (stderr) ausgegeben werden. Die Policies für alle eingebauten chains werden ebenfalls mit abgespeichert (input, output and forward):

$ ipchains-save > my_firewall
Saving `input'.
Saving `output'.
Saving `forward'.
Saving `ppp-in'.
Saving `ppp-out'.
$ 

Der Befehl ipchains-restore.

ipchains-restore restauriert die gespeicherten chains und deren Regeln, die mit ipchains-save gespeichert wurden. Es können zwei Optionen mit angegeben werden: -v gibt eine Regel aus, wenn sie hinzugefügt wird, und -f erzwingt das Löschen von User definierten chains, falls diese existieren.

Wenn einen User definierte chain gefunden wird, überprüft ipchains-restore, ob diese chain bereits existiert. Wenn ja, dann wird der User gefragt, ob die bestehenden Regeln gelöscht werden sollen, oder nicht. Wenn die Option -f an der Befehlszeile mit angegeben wird, dann wird die chain gelöscht.

Um dieses Skript laufen zu lassen, muß man als root eingeloggt sein.

Beispiel:

# ipchains-restore < my_firewall
Restoring `input'.
Restoring `output'.
Restoring `forward'.
Restoring `ppp-in'.
Chain `ppp-in' already exists. Skip or flush? [S/f]? s
Skipping `ppp-in'.
Restoring `ppp-out'.
Chain `ppp-out' already exists. Skip or flush? [S/f]? f
Flushing `ppp-out'.
# 


Weiter Zurück [Inhalt] Online Suche im Handbuch LITTLE-IDIOT NETWORKING