Ipchains script

Hallo,

versuche gerade ne Firewall mit SUSE 7.0 und ipchains aufzusetzen. Aber irgendwie mache ich immer irgendwie zuviel zu oder zu wenig, jedenfalls tut die Firewall nicht das was ich will. Hat da jemand schon ein gutes Script, das mir da etwas Arbeit abnehemen kann ? Meine Konfiguration sieht folgendermassen aus: 1 ISDN-Karte, 1 Ethernet-Karte, http-proxy auf der Firewall.
Danke im Voraus, Gruß, Uwe

Hi Uwe,

Hat da jemand schon ein gutes Script, das mir da
etwas Arbeit abnehemen kann ?

das könnte schwierig werden, schließlich hat jeder andere Anforderungen und Vorstellungen. Du könntest aber die Zeilen hier posten, mit denen Du Probleme hast. Da findet sich dann sicher die eine oder andere Idee dazu.

Gruß,
Herbert

Mein Script sieht bisher in etwa so aus:

_#Initialisierung
echo „1“ > /proc/sys/net/ipv4/ip_dynaddr
echo „1“ > /proc/sys/net/ipv4/ip_forward

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

#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

#Netzkommunikation über local-Loopback-device erlauben
#ipchains -A input -i DEV_LO -j ACCEPT
#ipchains -A output -i DEV_LO -j ACCEPT

#Aus dem LAN dürfen Verbindungen zu uns aufgebaut werden
ipchains -A input -i $DEV_LAN -s $LAN -j ACCEPT

#Maskiere alle Pakete, die in das Internet gehen
ipchains -A forward -i $DEV_INET -p tcp -s $LAN -j MASQ

#De-Maskiere alle Pakete aus dem Internet
ipchains -A forward -i $DEV_LAN -p tcp -d $LAN -j MASQ

#Neue Regelliste für Pakete aus dem Internet
ipchains -N inet_in

#Niemand aus dem Internet darf eine Verbindung zu uns aufbauen
ipchains -A inet_in -p tcp -y -j DENY -l

#ip-spoofing verhindern
ipchains -A inet_in -p tcp -s $LAN -j DENY -l

#unnötige Protokolle abblocken und mit-loggen
ipchains -A inet_in -p idp -j DENY -l
ipchains -A inet_in -p udp -j DENY -l

#alles was bisher nicht abgelehnt wurde, annehmen
ipchains -A inet_in -j ACCEPT

#Alles was am ISDN ankommt, in die neue Regelliste senden
ipchains -A input -i $DEV_INET -j inet_in_

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

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

1 „Gefällt mir“