Debian: Firewall beim starten laden

2

Wer sich selbst eine Firewall baut steht irgendwann vor der Frage „wie starte ich das Firewallscript bei jedem Boot?“.

Da gibts es zwei Möglichkeiten:

  1. Die Regel exportieren und bei jeder Aktivierung der Netzwerkkarte laden
  2. das script im entsprechnende Runleve Eintragen

 

Möglichkeit 1

Laden Sie zuerst die Firewall Regel. Sind diese wie gewünscht (iptables -L) exportieren Sie diese in eine Datei:

iptables-save > /etc/firewall.conf

Nun wird ein script erstellt, dass bei jedem laden der Netzwerkkrate ausgeführt wird.

echo '!/bin/bash' > /etc/network/if-up.d/firewall
echo "iptables-restore < /etc/firewall.conf" >> /etc/network/if-up.d/firewall
chmod +x /etc/network/if-up.d/firewall

Möglichkeit 2

Sie erstellen einen Link im entsprechenden Runleven auf das Firewallscript.

ln -s  /root/scripts/firewall.sh /etc/rc2.d/S99firewall

Das Firewall-Script selbst muss aber mit den Parametern start & stop umgehen können.

Beispiel:

#! /bin/bash
case "$1" in
  start)

;;
  stop)
    echo "Stoppe IP-Paketfilter"
    # Tabelle flushen
    iptables -F
    iptables -X
    echo "Deaktiviere IP-Routing"
    echo 0 > /proc/sys/net/ipv4/ip_forward

    # Default-Policies setzen
    iptables -P INPUT ACCEPT
    iptables -P OUTPUT ACCEPT
    iptables -P FORWARD ACCEPT
    ;;
  restart)
    $0 stop && $0 start
  ;;
  status)
    echo "Tabelle filter"
    iptables -L -vn
    ;;
  *)
    echo "Fehlerhafter Aufruf"
    echo "Syntax: $0 {start|stop|restart|status}"
    exit 1
    ;;
esac

Links:

Teilen.

Über den Autor

Seit der Ausbildung zum Fachinformatiker Systemintegration (2002-2005) bei der DaimlerChrysler AG, beruflich im Bereich der E-Mail Kommunikation (Exchange, Linux) sowie des ActiveDirectory, mit entsprechenden Zertifizierungen (MCSE 2003, MCITP Ent.-Admin 2008, MCSE 2012, LPIC 1-3) tätig. Abgeschlossenes Studium zum Master of Science der IT-Management an der FOM sowie zertifizierter Datenschutzbeauftragter. Aktuell im Projektmanagement tätig.

2 Kommentare

  1. Zu Möglichkeit 1):

    echo „#!/bin/bash“ > /etc/network/if-up.d/firewall

    Das Script funktioniert so nicht. echo „…….“ wäre ein String, der genauso in die gewünschte Datei geschrieben wird. Die bash wird einen exec-error melden.
    Check mal, ob ich falsch liege.

    BR
    casa

Antwort an Christian Scholz Abbrechen