Firehol: Unterschied zwischen den Versionen

Aus Cowwwiki
Zur Navigation springen Zur Suche springen
Keine Bearbeitungszusammenfassung
Benjaminfras (Diskussion | Beiträge)
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


apt-get install firehol
<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:


# Accept all client traffic on any interface
<source lang="bash">
interface any internet
# Accept all client traffic on any interface
        protection strong
interface any internet
        policy drop
      protection strong
        server "icmp ping ICMP Custom http" accept
      policy drop
        client all accept
      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:


interface any internet
<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>.


protection strong
<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>.


policy drop
<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.


server "icmp ping ICMP Custom http" accept
<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


client all accept
<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:
touch /etc/firehol/services/custom
<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
#FHVER: 1:213
        server_customservice_ports="tcp/123"
      server_customservice_ports="tcp/123"
        client_customservice="default"
      client_customservice="default"
</source>






#FHVER: 1:213
<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.


server_customservice_ports="tcp/123"
<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).


client_customservice="default"
<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
/etc/init.d/firehol restart
<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:

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/