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 😀