Hi Uwe,
ich befürchte zwar, daß ipchains bei SuSE 7.0 etwas anders aussieht als bei 6.4, aber ich versuch es mal.
BTW: Was sind die Punkte, die nicht so funktionieren, wie sie sollen?
#Initialisierung
echo „1“ > /proc/sys/net/ipv4/ip_dynaddr
echo „1“ > /proc/sys/net/ipv4/ip_forward
Das könnte/sollte bereits standardmäßig aktiviert sein. Bin jedoch nicht sicher.
Variable definieren
export DEV_LAN=eth0
export IP_LAN=192.168.0.2
export LAN=192.168.0.0/255.255.255.0
export DEV_INET=ippp0
export IP_INET=192.168.0.1
export INET=0.0.0.0/0.0.0.0
export DEV_LO=lo
okay
#Löschen aller evtl. vorhandener alter Regeln
ipchains -F
ipchains -X inet_in
#erst mal alles verbieten
ipchains -P input DENY
ipchains -P forward DENY
ipchains -P output DENY
output und forward würde ich auf REJECT setzen, damit das LAN wenigstens eine Fehlermeldung bekommt. Am Ergebnis ändert sich ja letztendlich nichts.
#Netzkommunikation über local-Loopback-device erlauben
#ipchains -A input -i DEV_LO -j ACCEPT
#ipchains -A output -i DEV_LO -j ACCEPT
okay
#Aus dem LAN dürfen Verbindungen zu uns aufgebaut werden
ipchains -A input -i $DEV_LAN -s $LAN -j ACCEPT
okay
#Maskiere alle Pakete, die in das Internet gehen
ipchains -A forward -i $DEV_INET -p tcp -s $LAN -j MASQ
Ich würde das Protokoll nicht auf TCP beschränken, da manche Dienste (z.B. DNS) UDP (zumindest im ersten Schritt) verwenden.
#De-Maskiere alle Pakete aus dem Internet
ipchains -A forward -i $DEV_LAN -p tcp -d $LAN -j MASQ
IMO unnötig.
1/ $LAN ist bei Dir 192.168.0.x, diese IPs werden im Internet nicht geroutet, daher dürfen Pakete an diese IPs nie bis zu Dir vordringen.
2/ Du maskierst Dein $LAN zu einer offiziellen Internet-IP. Daher weiß der Rest des Internets nichts von Deinem $LAN.
#Neue Regelliste für Pakete aus dem Internet
ipchains -N inet_in
-N hab ich nie verwendet, daher keine praktischen Erfahrungen.
#Niemand aus dem Internet darf eine Verbindung zu uns aufbauen
ipchains -A inet_in -p tcp -y -j DENY -l
okay
#ip-spoofing verhindern
ipchains -A inet_in -p tcp -s $LAN -j DENY -l
Damit werden vom Internet kommende, eingehende Pakete mit der IP 192.168.0.x verhindert. IMO kann IP-spoofing nur insofern eingeschränkt werden, wie Provider (Netzbetreiber) die Absenderadressen vor dem Weiterleiten in´s Internet filtern.
#unnötige Protokolle abblocken und mit-loggen
ipchains -A inet_in -p idp -j DENY -l
Meinst Du nicht ICMP (Internet Controll Message Protocol)? Wenn ja, dann solltest Du hier vorsichtig sein, ICMP darf man nicht komplett sperren (z.B. ICMP Code 4 source-quench - wird zur Flußkontrolle zwischen zwei Routern bzw. Router-Host benötigt).
ipchains -A inet_in -p udp -j DENY -l
siehe weiter oben - man kann übrigens die Nameserver, über die man per UDP zugreift, auch explizit in der Firewall angeben und danach UDP generell sperren.
#alles was bisher nicht abgelehnt wurde, annehmen
ipchains -A inet_in -j ACCEPT
Oben schreibst Du, daß niemand aus dem Internet eine reguläre Verbindung (SYN-Flag gesetzt, ACK-Flag nicht) aufnehmen darf. Hier erlaubst Du jegliche eingehende Verbindung?
#Alles was am ISDN ankommt, in die neue Regelliste senden
ipchains -A input -i $DEV_INET -j inet_in
Ich kenne lediglich die Möglichkeit von accept, reject, deny und masq. Ob das auf o.a. Weise funktionieren kann, weiß ich nicht (wie bereits erwähnt - keine Erfahrung damit).
Ich hoffe, daß ich da jetzt nichts durcheinander gebracht habe :o)
Gruß,
Herbert