iptables-Regeln auch nach dem Bootvorgang bzw. Neustart unter Debian persistent speichern

Vor kurzem habe ich auf meinem Debian-Server wieder ein OpenVPN eingerichtet. Daher wollte ich eine der iptables-Regel persistent speichern. Dafür habe ich das Paket iptables-persistent installiert. Leider ist dessen Start-Script nicht so perfekt…

Werbung


Daher habe ich das folgende Script in /etc/init.d/iptable-persistent installiert, welches ich von hier abgeschaut habe. Jedoch habe ich einige Änderungen vorgenommen, daher hier meine Version:

#!/bin/sh
#               Written by Simon Richter <sjr@debian.org>
#
### BEGIN INIT INFO
# Provides:          iptables
# Required-Start:    mountkernfs $local_fs
# Required-Stop:     $local_fs
# Default-Start:     S
# Default-Stop:
# Short-Description: Set up iptables rules
### END INIT INFO
 
PATH="/sbin:/bin:/usr/sbin:/usr/bin"
 
case "$1" in
        start)
                if [ -e /var/run/iptables ]; then
                        echo "iptables is already started!"
                        exit 1
                else
                        touch /var/run/iptables
                fi
 
                # Load saved rules
                if [ -f /etc/iptables/rules ]; then
                        iptables-restore </etc/iptables/rules
                fi
                ;;
        stop|force-stop)
                if [ ! -e /var/run/iptables ]; then
                        echo "iptables is already stopped!"
                        exit 1
                else
                        rm /var/run/iptables
                fi
                # Backup old rules
                cp /etc/iptables/rules /etc/iptables/rules.bak
                # Save new rules
                iptables-save >/etc/iptables/rules
 
                # Restore Default Policies
                iptables -P INPUT ACCEPT
                iptables -P FORWARD ACCEPT
                iptables -P OUTPUT ACCEPT
 
                # Flush rules on default tables
                iptables -F
                iptables -t nat -F
                iptables -t mangle -F
 
                ;;
        restart|force-reload)
                $0 stop
                $0 start
                ;;
        status)
                echo "Filter Rules:"
                echo "--------------"
                iptables -L -v
                echo ""
                echo "NAT Rules:"
                echo "-------------"
                iptables -t nat -L -v
                echo ""
                echo "Mangle Rules:"
                echo "----------------"
                iptables -t mangle -L -v
                ;;
        *)
                echo "Usage: $0 {start|stop|force-stop|restart|force-reload|status}" >&2
                exit 1
                ;;
esac
 
exit 0

Veröffentlicht von

Uli

IT-Nerd und Admin

4 Gedanken zu „iptables-Regeln auch nach dem Bootvorgang bzw. Neustart unter Debian persistent speichern“

    1. Servus,

      der Hauptunterschied scheint mir, dass Dein Skript die aktuellen Einstellungen beim Herunterfahren speichert.

      Das darf (Debian Policy, „Konfigurationsdateien“) und will ich aber in meinem Paket nicht so machen, sondern es muss immer eine explizite Entscheidung „jetzt speichern“ geben.

      Die iptables-Konfiguration eines Rechners aendert sich unterwegs haeufiger (z.B. weil ich „fail2ban“ oder „linux-igd“ installiert habe), und diese Regeln will ich nicht abspeichern, weil mit einem Reboot auch das Wissen um eine iptables-Regel mit einem Timeout verloren ist.

      Ausserdem hat das den klaren Vorteil, dass nach einem Reboot eine wirklich klar definierte Konfiguration geladen ist. Nicht zu unterschaetzen, sowas. 🙂

      1. Hi Simon,

        definitiv und da stimme ich dir zu. Das Script stammt noch aus einer Zeit, wo das Speichern der Regeln bei mir zumindest nicht richtig geklappt hatte. Insofern dieses Script. Vielleicht wäre es ein Weg, einen save manuell auslösen zu können? So in der Art:

        /etc/init.d/iptable-persistent save

        An sich gebe ich dir aber recht, diese Tools hatte ich damals nicht im Einsatz 😉

        Viele Grüße,
        Uli

Schreibe einen Kommentar

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