Firehol: Unterschied zwischen den Versionen
Mpl (Diskussion | Beiträge) Keine Bearbeitungszusammenfassung |
Keine Bearbeitungszusammenfassung |
||
Zeile 7: | Zeile 7: | ||
Firehol ist in den Repositories von Ubuntu bereits enthalten. Die Installation erfolgt somit sehr einfach mit | Firehol ist in den Repositories von Ubuntu bereits enthalten. Die Installation erfolgt somit sehr einfach mit | ||
<source lang="bash">apt-get install firehol</source> | |||
= Konfiguration = | = Konfiguration = | ||
Zeile 16: | Zeile 15: | ||
Ist die Applikation einmal installiert, muss man den Dienst aktivieren. Dies geschieht in der Datei <code>/etc/default/firehol</code>, indem | Ist die Applikation einmal installiert, muss man den Dienst aktivieren. Dies geschieht in der Datei <code>/etc/default/firehol</code>, indem | ||
START_FIREHOL=NO | <source lang="bash">START_FIREHOL=NO</source> | ||
auf | auf | ||
START_FIREHOL=YES | <source lang="bash">START_FIREHOL=YES</source> | ||
geändert wird. | geändert wird. | ||
Zeile 29: | Zeile 28: | ||
Nun muss die Firewall konfiguriert werden. Dies geschieht über die Datei <code>/etc/firehol/firehol.conf</code>. Ich verwende dabei folgende Grundstruktur: | Nun muss die Firewall konfiguriert werden. Dies geschieht über die Datei <code>/etc/firehol/firehol.conf</code>. Ich verwende dabei folgende Grundstruktur: | ||
<source lang="bash"> | |||
# Accept all client traffic on any interface | |||
interface any internet | |||
protection strong | |||
policy drop | |||
server "icmp ping ICMP Custom http" accept | |||
client all accept | |||
</source> | |||
Nun möchte ich kurz erklären, welche Bedeutung die einzelnen Zeilen haben: | Nun möchte ich kurz erklären, welche Bedeutung die einzelnen Zeilen haben: | ||
<source lang="bash">interface any internet</source> | |||
selektiert alle Schnittstellen, die Zugang ins Internet haben. Wenn man anstatt von <code>any</code> z. B. <code>eth1</code> verwendet, greift die Firewall nur für den Internetverkehr auf <code>eth1</code>. | selektiert alle Schnittstellen, die Zugang ins Internet haben. Wenn man anstatt von <code>any</code> z. B. <code>eth1</code> verwendet, greift die Firewall nur für den Internetverkehr auf <code>eth1</code>. | ||
<source lang="bash">protection strong</source> | |||
schaltet alle verfügbaren Schutzmaßnahmen auf dem Interface ein. Das sind zurzeit: <code>invalid fragments new-tcp-w/o-syn icmp-floods syn-floods malformed-xmas malformed-null malformed-bad</code>. | schaltet alle verfügbaren Schutzmaßnahmen auf dem Interface ein. Das sind zurzeit: <code>invalid fragments new-tcp-w/o-syn icmp-floods syn-floods malformed-xmas malformed-null malformed-bad</code>. | ||
<source lang="bash">policy drop</source> | |||
verwirft grundsätzlich alle Pakete, sofern diese nicht explizit erlaubt werden. | verwirft grundsätzlich alle Pakete, sofern diese nicht explizit erlaubt werden. | ||
<source lang="bash">server "icmp ping ICMP Custom http" accept</source> | |||
hiermit werden die '''eingehenden''' Dienste erlaubt. In dem Fall sind das: | hiermit werden die '''eingehenden''' Dienste erlaubt. In dem Fall sind das: | ||
Zeile 59: | Zeile 60: | ||
*http | *http | ||
<source lang="bash">client all accept</source> | |||
alle '''ausgehende''' Verbindungen werden damit zugelassen. | alle '''ausgehende''' Verbindungen werden damit zugelassen. | ||
Zeile 70: | Zeile 71: | ||
1. Datei in <code>/etc/firehol/services/</code> erzeugen: | 1. Datei in <code>/etc/firehol/services/</code> erzeugen: | ||
<source lang="bash">touch /etc/firehol/services/custom</source> | |||
2. Datei mit <code>vim</code> zur Bearbeitung öffnen und beispielsweise folgenden Eintrag erzeugen: | 2. Datei mit <code>vim</code> zur Bearbeitung öffnen und beispielsweise folgenden Eintrag erzeugen: | ||
<source lang="bash"> | |||
#FHVER: 1:213 | |||
server_customservice_ports="tcp/123" | |||
client_customservice="default" | |||
</source> | |||
<source lang="bash">#FHVER: 1:213</source> | |||
muss immer in der ersten Zeile stehen, wobei sich die Version ggf. ändern kann und dann entsprechend angepasst werden muss. | muss immer in der ersten Zeile stehen, wobei sich die Version ggf. ändern kann und dann entsprechend angepasst werden muss. | ||
<source lang="bash">server_customservice_ports="tcp/123"</source> | |||
definiert den benutzerdefinierten Dienst mit dem entsprechenden Protokoll (TCP oder UDP) und dem dazugehörigen Port (hier 123). | definiert den benutzerdefinierten Dienst mit dem entsprechenden Protokoll (TCP oder UDP) und dem dazugehörigen Port (hier 123). | ||
<source lang="bash">client_customservice="default"</source> | |||
definiert die Ports auf der Clientseite. | definiert die Ports auf der Clientseite. | ||
Zeile 97: | Zeile 99: | ||
Am Ende muss man '''Firehol''' nur noch neustarten | Am Ende muss man '''Firehol''' nur noch neustarten | ||
<source lang="bash">/etc/init.d/firehol restart</source> | |||
= Quellen = | = Quellen = |
Aktuelle Version vom 1. August 2010, 21:03 Uhr
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/