Online Suche im Handbuch | LITTLE-IDIOT NETWORKING |
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.
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'.
$
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'.
#
Online Suche im Handbuch | LITTLE-IDIOT NETWORKING |