Einstieg in iptables: zehn vordefinierte Regeln für ein sicheres Linux

iptables kann verwirrend sein, selbst für Nutzer, die sich mit der Befehlsstruktur gut auskennen und wissen, was sie wie sperren möchten. Doch der Vorteil von iptables ist, dass es einen ziemlich universellen Schutz bietet. Wer ein paar iptables-Regeln in einem Script zusammenstellt, kann sich die Aufgabe damit erheblich erleichtern.

Unter dieser Vorgabe werden hier die zehn wichtigsten Befehle beziehungsweise Regeln genauer unter die Lupe genommen. Einige dieser Regeln sind mehr serverorientiert, andere eher desktoporientiert.

Im Rahmen dieses Artikels können allerdings nicht alle unterschiedlichen Argumente und Parameter von iptables im Detail erklärt werden. Wer mehr Informationen über Details zu einzelnen Regeln haben möchte, sollte die man page für iptables lesen, wo alle Argumente und Parameter erläutert sind.

1. iptables -A INPUT -p tcp -syn -j DROP

Dies ist eine Regel für den Desktop: Sie ermöglicht es, ganz normal auf ihm zu arbeiten. Sämtlicher vom Rechner ausgehende Netzwerk-Traffic wird zugelassen, aber der gesamte TCP/IP-Traffic von außen einfach ignoriert. Damit hat man einen soliden Linux-Desktop, der keinen eingehenden Traffic benötigt. Aber was ist, wenn man bestimmten Netzwerk-Traffic gestatten möchte, etwa ssh für die Fernwartung? Hierzu muss man eine iptables-Regel für den Dienst hinzufügen und sicherstellen, dass diese dienstspezifische Regel zuerst ausgeführt wird.

2. iptables -A INPUT -p tcp — syn — destination-port 22 -j ACCEPT

Mit dieser Anweisung kann man einfach auf den ersten Befehl aufbauen. Um Traffic an Port 22 (ssh) durchzulassen, fügt man diese Zeile hinzu. Es ist aber zu bedenken, dass die Zeile jeglichen eingehenden Traffic an Port 22 zulässt. Für sich allein genommen ist dies also nicht gerade die sicherste Einstellung. Um die Sicherheit zu erhöhen, sollte festgelegt werden, welche Rechner tatsächlich befugt sind, über Port 22 des eigenen Rechners zu kommunizieren. Das lässt sich mit iptables ebenfalls einrichten. Wer die IP-Adresse des anfragenden Rechners kennt, muss nur vor dem Feld — destination-port der Zeile die Option -s SOURCE_ADDRESS hinzufügen (wobei SOURCE_ADDRESS die tatsächliche Adresse des externen Rechners ist).

3. /sbin/iptables -A INPUT -m state — state ESTABLISHED,RELATED -j ACCEPT

Diese Regel erlaubt allen bereits initiierten und akzeptierten Verbindungen, die Regelüberprüfung zu umgehen. Die Argumente ESTABLISHED und RELATED gehören zum Parameter — state. Wobei das Argument ESTABLISHED besagt: „jedes Datenpaket, das zu einer bestehenden Verbindung gehört“. Und das Argument RELATED bedeutet: „jedes Datenpaket, das zwar nicht zu einer bereits bestehenden Verbindung gehört, aber in Bezug zu einer bereits bestehenden Verbindung steht“. Mit „state machine“ bietet iptables eine Möglichkeit, Verbindungen mit Hilfe des Kernelmoduls „conntrack“ zu verfolgen. Durch die Verfolgung der Verbindungen weiß iptables, welche Verbindungen zulässig sind und welche nicht. Dies reduziert den Arbeitsaufwand für den Administrator.

Und so funktioniert state: Wenn der lokale Benutzer eine Verbindung initiiert, wird ein an diese Verbindung gerichtetes Datenpaket in der Pre-Routing-Kette auf den Status NEW gesetzt. Wenn der lokale Benutzer ein Datenpaket zurückerhält, wird der Status in der Pre-Routing-Kette auf ESTABLISHED geändert. Wenn also ein Status auf ESTABLISHED gesetzt ist, kann er per iptables-Regel zugelassen werden.

4. iptables -N LOGDROP

Mit dieser nützlichen Befehlskette protokolliert iptables alle abgewiesenen Pakete. Dies ist natürlich nur ein Teil der Kette. Um sie zu vervollständigen, muss man die folgenden zwei Regeln hinzufügen: iptables -A logdrop -J LOG und iptables -A logdrop -J DROP. Nun werden alle passenden Pakete (in diesem Fall alle abgewiesenen) zur logdrop-Kette hinzugefügt, die sie erst protokolliert und dann abweist.

5. iptables -t nat -A PREROUTING -i WLAN_INTERFACE -p tcp — dportPORTNUMBERS -j DNAT — to-destination DESTINATION_IP

Wenn man Pakete von externen Quellen an bestimmte Ports auf bestimmte interne Rechner leiten muss, dann ist dies die passende Regel. Sie nutzt die Übersetzung von Netzwerkadressen für die korrekte Weiterleitung von Paketen. Dazu muss WLAN_INTERFACE auf die WLAN-Schnittstelle geändert werden, die das externe Netzwerk mit dem internen Netzwerk verbindet. Außerdem müssen die PORTNUMBERS und die DESTINATION_IP an die IP-Adresse des Zielrechners angepasst werden.

Page: 1 2

ZDNet.de Redaktion

Recent Posts

Studie: Ein Drittel aller E-Mails an Unternehmen sind unerwünscht

Der Cybersecurity Report von Hornetsecurity stuft 2,3 Prozent der Inhalte gar als bösartig ein. Die…

3 Tagen ago

HubPhish: Phishing-Kampagne zielt auf europäische Unternehmen

Die Hintermänner haben es auf Zugangsdaten zu Microsoft Azure abgesehen. Die Kampagne ist bis mindestens…

4 Tagen ago

1. Januar 2025: Umstieg auf E-Rechnung im B2B-Geschäftsverkehr

Cloud-Plattform für elektronische Beschaffungsprozesse mit automatisierter Abwicklung elektronischer Rechnungen.

4 Tagen ago

Google schließt schwerwiegende Sicherheitslücken in Chrome 131

Mindestens eine Schwachstelle erlaubt eine Remotecodeausführung. Dem Entdecker zahlt Google eine besonders hohe Belohnung von…

4 Tagen ago

Erreichbarkeit im Weihnachtsurlaub weiterhin hoch

Nur rund die Hälfte schaltet während der Feiertage komplett vom Job ab. Die anderen sind…

4 Tagen ago

Hacker missbrauchen Google Calendar zum Angriff auf Postfächer

Security-Experten von Check Point sind einer neuen Angriffsart auf die Spur gekommen, die E-Mail-Schutzmaßnahmen umgehen…

6 Tagen ago