Ubuntu 16.04 Firewall

Ubuntu Firewall

Ubuntu 16.04 und die Arno-iptables-firewall

Hallo,

ich melde mich mal wieder zu Wort, bis jetzt war alles bezogen auf Ubuntu 14.04, was ich so in meinem Blog geschrieben haben. Da ich meinen Mailserver auch noch umziehen will, habe ich nun einmal Ubuntu 16.04 ausprobiert und bin dabei auf das Phänomen gestoßen, dass wenn ich wie üblich die Arno-iptables-firewall mit meinem Script für die Blocklist einrichte, der Start oder Restart der Firewall bis zu 10 Minuten dauerte. Dabei war der Server sogar Kurzzeit nicht erreichbar und der Neustart/Reboot dauerte auch 10 Minuten, untragbar.

Nach ein wenig Forschungsarbeit im Netz, bin ich leider nicht darauf gekommen, warum dies mit der neuen Version so ist. Aber ich habe eine Lösung.
Die Lösung ist IPSET. Da die arno-iptables-firewall für jede IP in der Liste einen Eintrag anlegt und nur mit IPtables arbeite, scheint irgendwie irgendwas im Kernel das System außer Kraft zu setzen.

Um nun doch mit Blocklisten zu arbeiten um gemeldete IP-Adressen gleich auszusperren, gibt es nun den Befehl ipset.
Dazu habe ich auf dem GIT eine tolle Lösung gefunden. Trick77 IPSET Blacklist

Dies kann man auch direkt wie in der Readme beschrieben benutzen:
wget -O /usr/local/sbin/update-blacklist.sh https://raw.githubusercontent.com/trick77/ipset-blacklist/master/update-blacklist.sh
chmod +x /usr/local/sbin/update-blacklist.sh
mkdir -p /etc/ipset-blacklist; wget -O /etc/ipset-blacklist/ipset-blacklist.conf https://raw.githubusercontent.com/trick77/ipset-blacklist/master/ipset-blacklist.conf
apt-get install ipset << falls ipset noch nicht installiert sein sollte

jetzt ist nur noch der Befehl:
/usr/local/sbin/update-blacklist.sh /etc/ipset-blacklist/ipset-blacklist.conf auszuführen und mit dem Befehl ipset restore < /etc/ipset-blacklist/ip-blacklist.restore die Blacklist einzulesen.

in der Datei: /etc/arno-iptables-firewall/custom-rules ist einzutragen iptables -I INPUT 1 -m set --match-set blacklist src -j DROP. Zudem ist in der /etc/arno-iptables-firewall/firewall.conf ganz unten vor BLOCK_HOSTS_FILE=”/etc/arno-iptables-firewall/blocked-hosts” eine # zu setzen, damit diese Datei nicht mehr eingelesen wird.

Danach kann die Firewall über arno-iptables-firewall restart neugestartet werden. Dies sollte nun sehr schnell gehen.
Jetzt sollte wenn man sich die Firewallregeln über iptables -L anschaut oben in der Chain Input drin stehen:
DROP       all  --  anywhere             anywhere             match-set blacklist src

über ipset list blacklist können wir uns die Liste der gesperrten IPs anschauen.

Im System

Wenn wir alles so eingerichtet haben wie in meinem Blog beschrieben. Können wir in der Datei: /etc/cron.weekly/blocked-hosts einiges ändern. Wir können den alten Listenabruf löschen. Ich habs drin gelassen wer weiß wozu das nochmal gut is. Aber weiter unten sieht meine Datei nun so aus:

/usr/local/sbin/update-blacklist.sh /etc/ipset-blacklist/ipset-blacklist.conf
ipset restore < /etc/ipset-blacklist/ip-blacklist.restore
/etc/init.d/arno-iptables-firewall restart
/etc/init.d/fail2ban restart

Die neue Blacklist Datei wird neu gefüllt, Ipset lädt die neue Datei ins System, die Firewall und Fail2ban wird neu gestartet.

Dies muss auch in die Datei /etc/rc.local über dem exit 0 geschrieben werden aber hier reicht:
ipset restore < /etc/ipset-blacklist/ip-blacklist.restore
/etc/init.d/arno-iptables-firewall start
/etc/init.d/fail2ban restart

So das sollte reichen, nun am besten noch ein Reboot, denn der tut immer gut 😀