Firehol

Aus Cowwwiki
Zur Navigation springen Zur Suche springen

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:

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/