Firehol
Firehol ist eine Vereinfachung der IP-Tables-Befehle, die oft als Firewall zum Einsatz kommen. Da die iptables Befehle nicht ganz einfach sind und man sich da zuerst einlesen muss, habe ich nach Möglichkeiten gesucht, diese ein wenig verwaltungsfreundlicher zu machen.
Firehol verwendet eine logische und einfach verständliche Syntax. Im Folgenden wird die Installation und Konfiguration beschrieben.
Installation
Firehol ist in den Repositories von Ubuntu bereits enthalten. Die Installation erfolgt somit sehr einfach mit
apt-get install firehol
Konfiguration
Dienst aktivieren
Ist die Applikation einmal installiert, muss man den Dienst aktivieren. Dies geschieht in der Datei /etc/default/firehol
, indem
START_FIREHOL=NO
auf
START_FIREHOL=YES
geändert wird.
Firewall einstellen
Nun muss die Firewall konfiguriert werden. Dies geschieht über die Datei /etc/firehol/firehol.conf
. Ich verwende dabei folgende Grundstruktur:
# Accept all client traffic on any interface
interface any internet
protection strong
policy drop
server "icmp ping ICMP Custom http" accept
client all accept
Nun möchte ich kurz erklären, welche Bedeutung die einzelnen Zeilen haben:
interface any internet
selektiert alle Schnittstellen, die Zugang ins Internet haben. Wenn man anstatt von any
z. B. eth1
verwendet, greift die Firewall nur für den Internetverkehr auf eth1
.
protection strong
schaltet alle verfügbaren Schutzmaßnahmen auf dem Interface ein. Das sind zurzeit: invalid fragments new-tcp-w/o-syn icmp-floods syn-floods malformed-xmas malformed-null malformed-bad
.
policy drop
verwirft grundsätzlich alle Pakete, sofern diese nicht explizit erlaubt werden.
server "icmp ping ICMP Custom http" accept
hiermit werden die eingehenden Dienste erlaubt. In dem Fall sind das:
- ICMP Anfragen
- PING
- #Benutzerdefinierte Dienste einrichten
- http
client all accept
alle ausgehende Verbindungen werden damit zugelassen.
Benutzerdefinierte Dienste einrichten
Es kommt immer wieder vor, dass man von den Standardeinstellungen der Dienste abweichen muss bzw. möchte. Es ist z. B. immer ratsam, den SSH Port von 22 auf irgendeinen anderen beliebigen Port zu legen. Wenn man das macht, muss das auch Firehol wissen, damit es den verwendeten Port nicht mehr blockt. Es reicht dann nicht mehr einfach SSH
in den erlaubten Diensten aufzunehmen, sondern es muss dafür ein benutzerdefinierter Dienst erzeugt werden. Keine Angst, es klingt komplizierter als es ist. Bestimmt haben Sie schon den Ordner /etc/firehol/services
wahrgenommen. Dort werden nämlich alle benutzerdefinierten Dienste als Datei abgespeichert. Ich stelle hier nun ein kleines Beispiel vor:
1. Datei in /etc/firehol/services/
erzeugen:
touch /etc/firehol/services/custom
2. Datei mit vim
zur Bearbeitung öffnen und beispielsweise folgenden Eintrag erzeugen:
#FHVER: 1:213
server_customservice_ports="tcp/123"
client_customservice="default"
#FHVER: 1:213
muss immer in der ersten Zeile stehen, wobei sich die Version ggf. ändern kann und dann entsprechend angepasst werden muss.
server_customservice_ports="tcp/123"
definiert den benutzerdefinierten Dienst mit dem entsprechenden Protokoll (TCP oder UDP) und dem dazugehörigen Port (hier 123).
client_customservice="default"
definiert die Ports auf der Clientseite.
nun Datei abspeichern und der benutzerdefinierte Dienst kann verwendet werden. Man benutzt dazu einfach den jeweiligen Namen in der firehol.conf
, wie für die anderen Standarddienste auch.
Am Ende muss man Firehol nur noch neustarten
/etc/init.d/firehol restart
Quellen
Firehol Dokumentation http://firehol.sourceforge.net/