Heiko Zimmermann
SAP-Berater, System Engineer und Entwickler.

Weblog

4. Dezember 2014, 08:12

Wenn man einen Linux Server einrichtet, ist es oftmals mühsam iptables sauber einzurichten. Häufig greift man dann auf UFW (UncomplicatedFirewall) zurück. Doch ohne GUI ist das auch nicht sehr komfortablel. Darüber hinaus möchte man auf einen Server in der Regel kein grafisches Interface nutzen. Daher ist Handarbeit gefragt.

Allerdings gibt es eine, bisher noch nicht sehr bekannte, sehr elegante Lösung iptables in sauber lesbarer Form einfach in ein Textfile zu schreiben. Man hat je Interface und je IPv4 bzw. IPv6 ein Textfile, das man bequem und einfach ändern kann. Das Projekt Firetable ist von Hugo Leisink, der auch den Hiawatha Webserver entwickelt.

Hier ein Beispiel für ipv4_eth0:

# Firetable configuration for IPv4
# Settings
#
set subnetmask 32


# Incoming traffic
accept incoming tcp to server:{22, 25, 80, 443, 993, 995}
accept incoming udp to server:53
accept incoming icmp type 11 from anywhere to server # Traceroute
drop incoming udp to anywhere:{137,138}


# Outgoing traffic
accept outgoing ip

Wie man sieht, lässt es sich ähnlich leicht wie pf.conf von OpenBSD lesen und ist sehr einfach anzuwenden.

Als Voraussetzung benötigt man lediglich php5-cli, fakeroot und wenn man ein Debian-Paket aus dem Tarball erstellen will debhelper.

Ich nutze das selbst für meinen Debian Desktop und für meinen Raspberry Pi.

Da im original Tarball¹ nur nach einem englischsprachigen Interface abgefragt wird, habe ich einfach das für das deutschsprachige Interface ergänzt. Der Tarball kann hier heruntergeladen werden und das fertige Debian Paket für einen Raspberry Pi kann hier heruntergeladen werden.

Das Ganze einzurichten ist relativ leicht:

 

Die Voraussetzungen installieren:

sudo apt-get install php5-cli debhelper fakeroot curl

Curl habe ich nur zum Download angegeben. Falls irgendwelche Abhängigkeiten fehlen sollten: sudo apt-get install -f

Variante 1 aus dem Tarball:

cd
curl -k https://files.intermezzo.net/firetable/firetable-5.5.tar.gz \
-o firetable-5.5.tar.gz

tar -xzf firetable-5.41.tar.gz
cd firetable-5.5/extra
./make_debian_package
cd ..
sudo dpkg -i firetable_5.5_armhf.deb


Variante 2 aus meinem Debian Paket:

cd
curl -k https://files.intermezzo.net/firetable/firetable_5.5_armhf.deb \
-o firetable_5.5_armhf.de

sudo dpkg -i ./firetable_5.5_armhf.deb


Danach müssen die Interfaces für die jeweiligen IP-Versionen eingerichtet werden:

cd /etc/firetable
sudo nano ipv4_eth0 # siehe Beispiel oben
(und die evtl. weiteren)
sudo nano firetable.conf # Einstellungen prüfen


Dann kann man firetable starten:

sudo service firetable start

Falls es wegen fakeroot Installation mit den Interfaces zu Schwierigkeiten kommt, evtl. beim ersten Mal einen reboot machen.

Eine recht ausfühliche Dokumentation erhält man mit:

man firetable

Möchte man aus irgendwelchen Gründen absolut keine Logeinträge, kann man die Zeile 764 einfach mit // auskommentieren. (nicht empfohlen)
// $this->iptables->execute("-A log_drop -j LOG ...

¹ bitte prüfen, ob der Tipfehler in Zeile 717 korrigiert ist. [ printf" sollte printf(" sein ]

UPDATE: Mai 2015: neue Version 5.41, ifconfig mit ip ersetzt.