Linux Firewall mit ipchains

Erste wichtige Portfilterregeln

Eine Firewall sollte immer nach folgendem Grundsatz arbeiten: "Alles, was nicht erlaubt ist, ist verboten". Bei Linux mit Kernel 2.2.x ist nur eine einfache Portfilterung möglich. Es existieren keine "state tables", in welchen der aktuelle Status einer Verbindung gespeichert ist. Deshalb muss für jeden benötigten Dienst der Datenverkehr statisch erlaubt werden.

Mit diesen Kenntnissen können Sie damit beginnen, das Firewalling systematisch zu konfigurieren. Den Beginn macht das Festlegen des Standardverhaltens (Policy) der vorinstallierten Filterlisten. Für die input-Liste bietet sich ein DENY an, denn damit ist die Firewall für eingehende abgelehnte Pakete unsichtbar. Absender von ausgehenden oder weitergeleiteten Paketen sollten bei Filterung via ICMP darüber benachrichtigt werden, sonst entstehen unnötige Verzögerungen beim Versuch eines verbotenen Verbindungsaufbaus. Sie erreichen das durch die Policy REJECT für die Listen output und forward.

# Setze Standardverhalten der eingebauten Filterlisten
ipchains -P input DENY
ipchains -P forward REJECT
ipchains -P output REJECT

Ein Problem besteht allerdings noch: Sie erhalten keine Informationen über Pakete, die das Ende der Liste erreichen und dann entsprechend der Policy behandelt werden. Dies behindert die Fehlersuche und die Optimierung. Deshalb sollten Sie zumindest temporär am Ende jeder Standardliste eine Regel einzufügen, die abgelehnte Pakete protokolliert.

# Protokolliere Pakete, die das Ende der Liste erreichen
ipchains -A input -j DENY -l
ipchains -A forward -j REJECT -l
ipchains -A output -j REJECT -l

Achtung: Falls Sie die jetzt weitere Regeln eingeben, während sich die eben gezeigten schon in den Listen befinden, werden diese nie abgearbeitet. Löschen Sie also obige Regeln wieder und fügen Sie sie immer am Ende ein. Alternativ können Sie auch ein Skript erstellen (siehe nächste Seiten) und damit den Regelsatz aufbauen.