Weiter Zurück [Inhalt] Online Suche im Handbuch LITTLE-IDIOT NETWORKING

15.2 Entpacken des Firewall Quellcodes

Die Firewall besitzt für alle unterstützte Prozessoren denselben Quellcode. Dieser befindet sich in sifi-1.0.tar.gz und muß mit "tar -xzvf sifi-1.0.tar.gz" entpackt werden. Ein Einzelfällen könnte es notwendig sein, "tar" oder "gzip" nachzuinstallieren. Es erscheint ein Verzeichnis sifi-1.0. Hier befinden sich die Quellcodes. Mit "cd sifi-1.0" befindet sich man nun im korrekten Verzeichnis. Es müssen evtl. einige Anpassung in folgenden Files vorgenommen werden:

include/sf_config.h
#define SF_TRUSTED_CNT_MAX 20     Hier werden die TRUSTED Hosts begrenzt 
#define SF_FRIENDS_CNT_MAX 50     Hier werden die FRIENDS Hosts begrenzt
#define SF_VAR_CNT_MAX  200       Begrenzung der Zahl der Variablen

include/sf_global.h
#define SF_ADDRESS_CNT_MAX 340    Hier werden die Zahl der Clients begrenzt
#define NUM_PROC_ENTRIES 21       Hier wird die Zahl der PROC-Einträge bestimmt
#define SF_TCP_HASH_SIZE 499      Für viele Verbindungen muß die Zahl
hochgesetzt werden. Es muß immer ca. Faktor 2 größer sein, als die Zahl der
Verbindungen. Damit der HASH Mechanismus funktioniert, muß immer eine
Primzahl gewählt werden.

include/sf_custom.h.in
#define CONF_DIR        "/etc/firewall.d/"       Pfad der Konfigurationsfiles
#define LOG_DIR         "/var/log/"              Pfad der Logfiles
#define RUN_DIR         "/var/run/"              Pfad der PID und PIPES
#define LOG             LOG_DIR"firewall"        File für Logfiles
#define SPY_LOG         LOG_DIR"firewall.spy"    SPY Logfiles
#define REPORT          LOG_DIR"firewall.report" Firewall Report

#define LOG_WIDTH       132                      Breite der Logeinträge     
#define PID_FILE        RUN_DIR"firewall.pid"    ProzessID
#define IPIPE           RUN_DIR"firewall.in"     Pipe für Lesen
#define OPIPE           RUN_DIR"firewall.out"    Pipe zum Schreiben
#define SFIDENT         BIN_PREFIX"/sfident"     Pfad zum Identd

#define PASSWD        CONF_DIR"firewall.passwd"  File für Paßworte
#define DEFAULT_CONFIG  CONF_DIR"firewall.conf"  Konfigurationsfile 
#define GENERATED_CONFIG CONF_DIR"firewall.conf.new" Überarbeites
Konfigurationsfile

#define DEVICE          "/dev/firewall"          Firewall - Device
#define MAIL            "@MAILER@"               Sendmailprogramm
#define FINGER          "@FINGER@"               Fingerprogramm
#define FINGER_ARG      "-pl"                    Optionen zu Finger
#define SPY_USING_RUSERS                         Remote-User Identifikation
#define RUSERS          "@RUSERS@"               Remote-User
#define RUSERS_ARG      "-al"                    Argumente zu Remote-User

#define MAX_REPEATS     100             Alle 100 Ereignisse 1 Logeintrag
#define MAX_HOLD        2*60            Verzögerungswert für Wiederholungen
#define SPY_TIMEOUT     5*60            SPY Einträge alle 5 Minuten

#define MAX_CLIENTS     5               Maximale Zahl der gleichzeitigen
Clients. Für viele Clients müssen die Zahlen der TCP Verbindungen und der
HASH Wert stark vergrößert werden. 

#define CLIENT_TIMEOUT  300             Wenn der Client hängt...                                                                 

Zum Aufbau eines Hochleistungs-Firewall, die fragmentierte Pakete entgegennimmt, muß die Zahl der HASH Einträge auf hohe Werte gesetzt werden, z.B. 15383. Warnung: Bei zu hohen Werten und zuwenig Memory werden alle Verbindungen abgebrochen. Die Zahl der Clients ist selber zu bestimmen. Beim Einsatz in schnellen Netzwerken sollte der Timeout heruntergesetzt werden.

Nun sollte ein User firewall und eine Gruppe firewall angelegt werden. In dem File /etc/passwd sollte sich dann folgender Eintrag befinden:

firewall:x:888:888::/dev/null:/bin/false

In der Datei /etc/group sollte folgende Gruppe angelegt werden:

firewall:x:888:

Anpassung des Linux Kernels

Der aktuelle Kernel muß folgende Optionen zumindest aktiviert haben. Für genaue Erklärungen, welche Optionen im Kernel was bewirken, siehe Kapitel ref id="kerneloptionen">

Hier zu wechselt man in das Verzeichnis /usr/src/linux und startet das Konfigurationsprogramm mit make menuconfig . Falls der Kernel sich in einem anderen Verzeichnis befinden sollte, muß auch die Datei make.options im Verzeichnis sf-1.0 angepaßt werden. Nach der Konfiguration des Kernels muß dieser kompiliert werden: make clean; make dep; make zImage . Nach ein paar Minuten ist der Kernel fertig kompiliert. Mit cp /usr/src/linux/arch/i386/boot/zImage /boot/vmlinuz wird der gerade aktuell Kernel überschrieben. Damit der Bootmanager auch den neuen Kernel erkennt, genügt die Eingabe von "lilo". Beim nächsten Bootvorgang ist der neue Kernel aktiv.

Nun kann die Firewall kompiliert und installiert werden:

Es werden die Files sfc, sfident und sf.o generiert. make install erzeugt das eigendliche Firewall-Device, die Firewall-Pipe und kopiert die Programme an ihren endgültigen Platz in /usr/lib/

Wichtig ist nun das Konfigurationsfile in /etc/firewall.d/firewall.conf. Hier müssen die Beispiele aus dem samples Verzeichnis angepasst und mit cp samples/Beispiel.conf nach /etc/firewall.d/firewall.conf kopiert werden.

Nun muß das Kernelmodul dem Betriebssytem hinzugefügt werden: insmod sf

Die Firewall kann nun gestartet werden: sfc start

Um den Verkehr überwachen zu können, kann man folgende Befehle testen:

tail -f /var/log/firewall

Die Firewall läßt sich so wieder anhalten: sfc stop; rmmod sf

Das Control Panel läßt sich so starten: sfControl

Warnung: Bei geladenem Kernelmodul ist jedes forwarden von Paketen unterbunden (default policy), nach dem Entfernen des Moduls besteht die Möglichkeit, daß die Firewall völlig transparent ist, da Kernel forwarding aktiviert wurde. Empfohlen ist, während der Konfiguration der Firewall das Kabel in Richtung Internet zu ziehen.....

Zur Sicherheit des Firewall Hosts sollte man folgende Dinge beherzigen:


Weiter Zurück [Inhalt] Online Suche im Handbuch LITTLE-IDIOT NETWORKING