Linux iptables

Linux

Um in Linux Debian / Ubuntu einen Port in der Firewall freigeben zu können, sind nur wenige Klicks nötig.

  • Öffnen Sie zunächst die Konsole als Administrator in Linux.
  • Sollte Port 22 (SSH) geschlossen sein, öffnen Sie diese mittels iptables über recovery.
  • Um Ports in der Firewall freigeben zu können, verwenden Sie den Befehl “iptables -A”.
  • Zum Beispiel: Möchten Sie den UDP-Port 33333 in der Firewall freigeben, nutzen Sie den Befehl “iptables -A INPUT -p udp –dport 33333 -j ACCEPT”.
  • Für einen TCP-Port tauschen Sie das “udp” gegen ein “tcp” aus und bestätigen Sie mit Enter.
  • Sofern Sie einen anderen Port freigeben möchten, müssen Sie einfach die “33333” gegen einen anderen Port austauschen.

Im Rahmen dieses Artikels können allerdings nicht alle unterschiedlichen Argumente und Parameter von iptables im Detail erklärt werden.

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.

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).

 /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.

 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.

 iptables -A INPUT -p tcp — syn — dport 25 -j ACCEPT

Das ist der Anfang einer Regel, die vor SYN-Flood schützt.
Dieser Teil der Regel blockiert DoS-Attacken auf einem E-Mail-Server-Port (anpassbar an die eigenen E-Mail-Server-Anforderungen).
Dieser Regelsatz hat noch drei weitere Teile.
Der erste besteht darin, dieselbe Regel hinzuzufügen, aber den Port an seine offenen Ports anzupassen.
Der nächste Teil lautet iptables -A INPUT -p tcp — syn -m limit — limit 1/s — limit-burst 4 -j ACCEPT, was der eigentlich Schutz vor SYN-Flood ist.
Und schließlich sorgt iptables -A INPUT -p tcp — syn -j DROP dafür, dass alle SYN-Flood-Pakete ignoriert werden.


Eine kurze Übersicht über die wichtigsten Dienste finden Sie unter: Liste von TCP/IP-basierten Netzwerkdiensten .
Geordnet sind die einzelnen Dienste nach deren Zweck bzw. Aufgabenbereich.


Iptables Firewall Regeln dauerhaft speichern

iptables-save

Die eigentlichen iptables Rules werden auf der Kommandozeile mit dem Kommando iptables für IPv4 und ip6tables für IPv6 erstellt und angepasst.

In eine Datei können diese mit dem Kommando iptables-save für IPv4 gespeichert werden.

Debian/Ubuntu: iptables-save > /etc/iptables/rules.v4
RHEL/CentOS: iptables-save > /etc/sysconfig/iptables

Diese Datei kann danach wieder mit dem Kommando iptables-restore für IPv4 geladen werden.

Debian/Ubuntu: iptables-restore < /etc/iptables/rules.v4
RHEL/CentOS: iptables-restore < /etc/sysconfig/iptables

Wenn Sie auch IPv6 Regeln verwenden möchten, können diese ebenso in eine eigene Datei gespeichert werden.

Debian/Ubuntu: ip6tables-save > /etc/iptables/rules.v6
RHEL/CentOS: ip6tables-save > /etc/sysconfig/ip6tables

Das automatische Laden der konfigurierten iptables Rules kann mit folgenden Methoden bewerkstelligt werden:

iptables-persistent für Debian/Ubuntu

Seit Ubuntu 10.04 LTS (Lucid) und Debian 6.0 (Squeeze) gibt es ein Paket namens “iptables-persistent” welches das automatische Laden der gespeicherten iptables Rules übernimmt. Dafür müssen die Rules in der Datei /etc/iptables/rules.v4 für IPv4 und in /etc/iptables/rules.v6 für IPv6 gespeichert werden.

Für die Verwendung muss lediglich das Paket installiert werden.

apt-get install iptables-persistent

Falls bei der Installation des Pakets Fehler auftreten, überprüfen Sie ob Systemd bereits Fehler vor der Installation von iptables-persisent hatte. Dies kann die Ursache bei Installationsproblemen sein.[1]

Ältere iptables-persistent Versionen (z.b. jene bei Debian Squeeze) unterstützen noch keine IPv6 Rules. Dort gibt es nur eine Datei namens /etc/iptables/rules für IPv4. Überprüfen Sie das Init-Skript, welche Dateien geladen werden bei Ihrer iptables-persistent Version.

Bitte prüfen Sie nach erfolgter Konfiguration unbedingt ob Ihre Rules wie gewünscht nach einem Reboot geladen werden.

iptables Service für RHEL/CentOS 5 und 6

Auch unter RHEL/CentOS 5/6 gibt es eine einfache Methode iptables Rules für IPv4 und IPv6 dauerhaft zu speichern.

Es gibt einen Dienst namens “iptables”. Dieser muss aktiviert sein.

# chkconfig --list | grep iptables
  iptables       	0:off	1:off	2:on	3:on	4:on	5:on	6:off
# chkconfig iptables on

Die Rules werden für IPv4 in der Datei /etc/sysconfig/iptables und für IPv6 in der Datei /etc/sysconfig/ip6tables gespeichert. Für das Speichern der aktuellen Rules kann auch das Init Skript verwendet werden.

# service iptables save

Weiterführende Infos dazu gibt es in der RHEL 6 Dokumentation.

Bitte prüfen Sie nach erfolgter Konfiguration unbedingt ob Ihre Rules wie gewünscht nach einem Reboot geladen werden.

iptables Service für RHEL/CentOS 7

RHEL/CentOS 7 verwendet systemd als Init-System. Dies muss bei der Aktivierung beachtet werden.

Für das dauerhafte Speichern der iptables-Rules muss der Dienst iptables-services installiert werden.

# yum install -y iptables-services

Nachdem per Default firewalld unter RHEL/CentOS 7 verwendet wird, muss dieser Dienst zuerst deaktiviert werden, um iptables weiterhin verwenden zu können.

# systemctl stop firewalld
# systemctl mask firewalld

Danach muss der Dienst via systemd aktiviert werden.

# systemctl enable iptables.service
# systemctl -t service | grep iptables

Die Rules werden für IPv4 in der Datei /etc/sysconfig/iptables und für IPv6 in der Datei /etc/sysconfig/ip6tables gespeichert. Für das Speichern der aktuellen Rules kann auch folgendes Skript verwendet werden.

# /usr/libexec/iptables/iptables.init save

Bitte prüfen Sie nach erfolgter Konfiguration unbedingt ob Ihre Rules wie gewünscht nach einem Reboot geladen werden.

# reboot

Nach erfolgtem Reboot können Sie sich die Regeln mit folgendem Kommando anzeigen lassen.

# iptables -L

Weiters kann auch mit systemd der Status geprüft werden.

# systemctl status iptables.service
iptables.service - IPv4 firewall with iptables
   Loaded: loaded (/usr/lib/systemd/system/iptables.service; enabled)
   Active: active (exited) since Thu 2015-10-22 07:46:00 EDT; 2min 54s ago
  Process: 549 ExecStart=/usr/libexec/iptables/iptables.init start (code=exited, status=0/SUCCESS)
 Main PID: 549 (code=exited, status=0/SUCCESS)
   CGroup: /system.slice/iptables.service

Oct 22 07:45:59 localhost.localdomain systemd[1]: Starting IPv4 firewall with iptables...
Oct 22 07:46:00 localhost.localdomain iptables.init[549]: iptables: Applying firewall rules: [  OK  ]
Oct 22 07:46:00 localhost.localdomain systemd[1]: Started IPv4 firewall with iptables.
1+
Sicherheit
Linux
IP´s über Geoip blocken

Man kennt es, der Server wird angegriffen und der Angriff erfolgt recht leicht erkennbar über ein spezielles Land. Nun blockt man die ggf. angreifende IP, aber so schnell wie man diese geblockt wird, erhält man 10 neue angreifende IP´s aus dem gleichen Land. Dies deutet in der Regel darauf hin, …

Linux
Plesk Firewall

Eine Firewall muss immer an die Bedürfnisse der Dienste, welche Sie auf dem Server betreiben möchten angepasst sein. Da wir Ihnen an dieser Stelle nur sehr allgemeine Informationen zum Thema Firewall bieten können, möchten wir Ihnen mit Verweisen auf die regelmäßig aktualisierten Seiten von Firewall-Anbietern helfen. Parallels Plesk Sollten Sie …

Sicherheit
Powerpanel Firewall server4you

Server4you Firewall konfigurieren übers Powerpanel – Man kann nur vorgefertigte Firewall-Templates einrichten, davon gibt es drei. Eine erlaubt im Wesentlichen nur den Zugriff auf SSH, eine ist für Webserver ohne und eine für Webserver mit Mailserver. – Eigene Ports kann man leider nicht freischalten. –Den Server muss neu gestartet werden …