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:
- Die Regel exportieren und bei jeder Aktivierung der Netzwerkkarte laden
- 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
2 Kommentare
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
Stimmt, es sollte ‚ statt “ sein, thx!