Iptables Firewall Regeln dauerhaft speichern

Aus Thomas-Krenn-Wiki
Wechseln zu: Navigation, Suche

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

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 services | 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

  1. #765478 - update-rc.d: warning: start and stop actions are no longer supported; falling back to defaults (bugs.debian.org)


Foto Christoph Mitasch.jpg

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.


Das könnte Sie auch interessieren

Linux ip Kommando
Linux Netzwerk Analyse mit iptstate
Linux Netzwerk Analyse mit traceroute