Ein einfaches und übersichtliches iptables Firewall Script.
Ich habe das von gargi.org stammende Script für meine Zwecke etwas erweitert.
- Erlaubte Ports eingehend nur von bestimmten IP Sourcen (Ranges)
- GeoIP (Country) Blocking mithilfe des <ipset> Paketes, und den IP Listen von http://www.ipdeny.com/ipblocks/
Die Installation des Scriptes wird im Scriptinhalt auch beschrieben, und ist mit wenigen Befehlen abgeschlossen. Der Inhalt des Firewall Script ist hier zu finden.
Installation des Easy Debian iptables Firewall Scripts: (Download, Rechte setzen, Daemon aktivieren, Alias Befehle eintragen, Bash Aliases neuladen)
wget https://www.flurweg.net/linux/debian/tips/firewall.txt -O /etc/init.d/firewall chmod +x /etc/init.d/firewall update-rc.d firewall defaults echo "alias fw='/etc/init.d/firewall'" >> /root/.bashrc echo "alias fwe='nano /etc/init.d/firewall'" >> /root/.bashrc ReloadAliases . /root/.bashrc
Der Konfigurationsblock im Script: (selbsterklärend)
#******************************************************************************************************* # Ping IN_ALLOWED_ICMP="yes" OUT_ALLOWED_ICMP="yes" # Ports inbound IN_ALLOWED_TCP="21 22 25 80" IN_ALLOWED_UDP="" # Ports outbound OUT_ALLOWED_TCP="21 22 25 53 80 1024:1033" OUT_ALLOWED_UDP="53 123" # Ports inbound from IP-Range IN_ALLOWED_TCP_RANGE=( "110 192.168.0.1/24" "110 192.168.32.0/28" #"443 194.108.32.0/28" #"8080 192.168.0.1/24" ) # Country blocking | Required: ipset | see available lists: http://www.ipdeny.com/ipblocks/ #IN_BLOCK_COUNTRYS="cn ru" #*******************************************************************************************************
GeoIP/Country Blocking
Vorraussetzung dafür ist das ipset Paket:
apt-get install ipset
Um Country Blockierung im Script zu aktivieren muss das “#” vor der Zeile IP_BLOCK_COUNTRY entfernt und die gewünschten Länder Kurzzeichen eintragen werden.
Vorab muss die ipset Liste noch heruntergeladen und erstellt werden, das geschieht mit folgendem Befehl:
fw cu
Bei einem Systemneustart sind die GeoIP Einträge verloren, ein automatisches generieren bei Systemstart kann mit einfügen der folgenden Zeilen in /etc/rc.local erreicht werden:
#Firewall Geoblocking /etc/init.d/firewall cu /etc/init.d/firewall reload
Nach Anpassung der Regeln bzw. des Scriptes ist (immer!) ein Reload notwendig:
fw reload
Aktive Regeln anzeigen per (Normaler Befehl | Alias Befehl | iptables):
/etc/init.d/firewall rules fw rules iptables -L
Viel Spass beim blockieren 🙂