Firewallkonfiguration unter Debian und Ubuntu mit IPTables

Häufig sehe ich Server, die gar keine Firewall verwenden. In einem kleinen internen Netz mag das vielleicht noch vertretbar sein, aber spätestens wenn der Server öffentlich erreichbar ist, sollte man sich Gedanken um eine Firewall machen. Für viele ist das zwar selbstverständlich ein alter Hut, aber viele Dienste laufen gedankenlos auf der Listen-Adresse 0.0.0.0 bzw. :: und sind damit bei Verwendung einer öffentlichen IP-Adresse oder NAT ohne Firewall für jedermann erreichbar.

Um die IPTables Firewall unter Debian oder Ubuntu zu konfigurieren, verwende ich iptables-persistent. Die Firewall-Regeln werden dabei in Textdateien gespeichert und beim Starten geladen. Nach der Installation von iptables-persistent besteht die Möglichkeit, bereits vorhandene Regeln zu speichern, was zu empfehlen ist, da somit schon eine grundlegende Konfiguration erstellt wird. Die Installation selbst ist simpel:

Anschließend wird jeweils eine Datei für IPv4 und IPv6 angelegt. Anbei eine einfache Beispielkonfiguration, die entsprechend den eigenen Bedürfnissen erweitert werden kann:

Die Ketten INPUT, FORWARD und OUTPUT akzeptieren standardmäßig alle Verbindungen. Eingehender, zu anderen Verbindungen gehörender Verkehr (RELATED,ESTABLISHED) wird ebenfalls durchgelassen. Ebenso werden ICMP Pakete (Ping, -p icmp) aktzeptiert und auch Verbindungen zum lokalen Loopback Interface.

Dann werden die TCP Ports 22, 80 und 443 akzeptiert. Der Port 5666, auf welchem der NRPE Dienst hört, soll nur von einer IP Adresse erreichbar sein. Anschließend werden alle nicht vorher definierten eingehende und weiterzuleitende Verbindungen abgelehnt (-j REJECT –reject with icmp-host-prohibited). Alternativ können diese Zeilen entfernt werden, falls man die INPUT und FORWARD Kette standardmäßig auf REJECT stellt. Im Falle eines Fehlers in der Konfiguration ist es aber dann notwendig, physikalischen Zugriff auf den Server zu haben, da eventuell alle Verbindungen abgelehnt werden. Die Art der Konfiguration ist aber Geschmackssache, das Ergebnis ist gleich.

Für IPv6 sollen normalerweise etwa die gleichen Regeln gelten, ein paar Parameter (natürlich IPv6 anstatt IPv4 Adressen verwenden oder icmp6-adm-prohibited statt icmp-host-prohibited) müssen aber ausgetauscht werden. Das Ergebnis ist vergleichbar:

Diese Regeln sind recht schlicht, aber schon ein sehr brauchbarer Anfang. Zusätzlich können noch ausgehende Verbindungen eingeschränkt werden, falls dies gewünscht ist. Spätestens wenn Datenbanken oder ähnlich sensible Dienste über Netzgrenzen hinweg erreichbar sein sollen, sollte definitiv zumindest irgendeine Art Firewall eingesetzt werden.

2 Gedanken zu „Firewallkonfiguration unter Debian und Ubuntu mit IPTables

  1. Keine Firewall ist kein Problem, solange nur notwendige Dienste richtig konfiguriert laufen – dann ist im Gegenteil eine Firewall ein zusätzliches Risiko.

    • Stimmt schon, die Listen-Adressen z.B. sollten auf das notwendigste beschränkt sein. Aber nicht alle Dienste bieten die Möglichkeit, nur gewisse Adressen oder Netze zuzulassen. Nach Möglichkeit sollte beides in Betracht gezogen werden denke ich.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.