Iptables Firewall Regeln dauerhaft speichern
Dieser Artikel zeigt verschiedene Möglichkeiten, wie iptables Rules unter Linux dauerhaft gespeichert werden können.
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
Das Paket iptables-persistent hat seit Debian 8.0 (Jessie) eine Abhängigkeit zum Paket "netfilter-persistent", welches sich um das automatische Laden der Regeln kümmert.
Falls bei der Installation des Pakets Fehler auftreten, überprüfen Sie ob Systemd bereits Fehler vor der Installation von iptables-persistent 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.
Einzelnachweise
Autor: Christoph Mitasch Christoph Mitasch arbeitet in der Abteilung Web Operations & Knowledge Transfer bei Thomas-Krenn. Er ist für die Betreuung und Weiterentwicklung der Webshop Infrastruktur zuständig. Seit einem Studienprojekt zum Thema Hochverfügbarkeit und Daten Replikation unter Linux beschäftigt er sich intensiv mit diesem Themenbereich. Nach einem Praktikum bei IBM Linz schloss er sein Diplomstudium „Computer- und Mediensicherheit“ an der FH Hagenberg ab. Er wohnt in der Nähe von Linz und ist neben der Arbeit ein begeisterter Marathon-Läufer und Jongleur, wo er mehrere Weltrekorde in der Team-Jonglage hält.
|