TU Wien | ZID | ZIDline 9 | Linux Firewall CD

Neue Firewall-Lösung für die TU-Institute auf Linux-Basis

Walter Selos

Die bereits am ZID existierenden bewährten Lösungen, die mit einer Diskette das Auslangen finden, haben den Nachteil, dass auf der Diskette sowohl die Systemsoftware wie auch die Konfigurationsdateien untergebracht werden müssen. Das kann - vor allem bei sehr vielen Firewall-Regeln - zu Platzproblemen führen. Als Abhilfe wird hier eine wesentlich flexiblere Lösung - basierend auf einer CD - vorgestellt. Auf der dennoch notwendigen Diskette sind nur noch die Konfigurationsdateien sowie einige dazu notwendige Scripts vorhanden.

Für eine weitere Beschreibung dieser Lösung möchte ich nochmals deren Ziel in Erinnerung rufen, nämlich einen einfachen Paketfilter zur Verfügung zu stellen, der bei der Inbetriebnahme keine Konfigurationsmaßnahmen an den involvierten Computern erfordert. Im Falle eines Ausfalls des Gerätes, kann man (allerdings ungeschützt) weiter arbeiten, indem das Gerät durch ein ausgekreuztes Patchkabel ersetzt wird, ebenfalls ohne weitere Konfigurationsmaßnahmen. (Das kann allerdings auf einigen Switches der TU Schwierigkeiten machen, daher bitte vorher die Abt. Kommunikation kontaktieren.) Voraussetzung hierfür ist, dass die hinter dem Firewall liegenden (zu schützenden) Computer zu einem VLAN oder mittels Switches so zusammengefasst werden, dass deren gesamter Netzwerkverkehr durch ein einziges Kabel geführt wird. Dieses kann dann durch den Firewall ersetzt werden. Dazu ist es notwendig, mit dem ZID, Abt. Kommunikation, Kontakt  aufzunehmen.

Diese Firewall-Lösung ist schon an einigen Stellen längere Zeit im Einsatz und läuft sehr stabil. Da sowohl in der Planungsphase als auch bei der Aufstellung und Konfiguration immer wieder spezifische Fragen auftauchen, möchte ich in den nächsten Zeilen das Konzept genauer betrachten und einige Details und Tipps bekannt geben, die aufgrund der bisherigen Betriebserfahrung für Aufstellung, Konfiguration und Betrieb hilfreich sein werden.

Wie funktioniert dieser Firewall ?

Es wird, wie bereits bei der letzten Disketten-Lösung, Proxy-Arp verwendet. Dies hat den Vorteil, mit Standardkomponenten von Linux auszukommen, um ohne zusätzliche Patches eine "Pseudo-Bridge" zu realisieren, allerdings nur für IP-Protokolle.

Zum weiteren Verständnis ist es notwendig, einige Worte über das Arp-Protokoll zu verlieren: Sind mehrere Computer mit Ethernet-Schnittstellen zu einem LAN verbunden, wird der Netzwerkverkehr auf der untersten Ebene mit dem Ethernet-Protokoll bewerkstelligt. Die Adressierung der einzelnen Rechner erfolgt über die so genannte MAC-Adresse, eine weltweit eindeutige Adresse für jede Ethernet-Karte. Da wir aber IP-Protokolle (tcp, udp, icmp, snmp, gre ...) verwenden, haben wir mittels Konfiguration der Firewall-Software jedem Rechner eine eindeutige IP-Adresse vergeben. Wenn wir einen anderen Rechner in unserem LAN über seinen DNS-Namen ansprechen, gibt uns der Nameserver der TU die dazugehörige IP-Adresse xxxx zurück. Der Firewall-Rechner macht nun ein Broadcast auf das ganze LAN mit der Frage "Wer hat die IP-Adresse xxxx ? ".

Der Rechner mit dieser Adresse gibt nun seine MAC-Adresse zurück, womit die Verbindung mittels des Ethernet-Protokolls aufgebaut werden kann. Diese wird temporär im so genannten arp-cache abgespeichert, welchen Sie sich jederzeit, sowohl unter Unix/Linux wie auch unter Windows ansehen können (der Befehl dazu heißt: arp).

Erklärung der Funktionsweise von Proxy-Arp

Nachdem im Linux-Kernel (/proc - Filesystem) ip_forwarding sowie proxy_arp für beide Interfaces aktiviert wurden  (siehe die echo "1" > /proc/.... - Einträge in der Script-Datei "fwrules"), müssen nun für jeden am Inside-Interface angeschlossenen Rechner (das sind die zu schützenden) statische Routen eingetragen werden (dies macht das Script "fwrules" automatisch, wenn man diese Rechner in eine Datei "inside_hosts" auf der Diskette einträgt).

Wenn nun eine Verbindung zwischen innen und außen hergestellt wird, wird die durch das ARP-Protokoll erhaltene MAC-Adresse durch die MAC-Adresse des zweiten Interfaces des Firewall-Rechners ersetzt. Die Rücksubstitution kann der Firewall mittels der eingetragenen statischen Routen bewerkstelligen.

So sieht man im arp-cache eines Rechners innerhalb des Firewalls alle außerhalb liegenden IP-Adressen mit der selben MAC-Adresse (nämlich der des Inside-Interfaces des Firewalls). Ebenso sind im arp-cache eines außerhalb des Firewalls liegenden Rechners alle innen liegenden IP-Adressen mit der MAC-Adresse des Outside-Interfaces des Firewalls zu sehen.

Man hat dadurch die Funktion einer Ethernet-Bridge, die allerdings nur IP-Pakete durchlässt. Über die mittels iptables gefilterte FORWARD-chain lassen sich Firewall-Regeln definieren (siehe Datei "fwrules").

Das heißt auch, dass man beim Anschluss der Rechner hinter dem Firewall mitunter auf den Timeout der ARP-Caches warten muss (besonders beim Ändern der Konfiguration zwischen Firewall und ausgekreuztem Patchkabel).

Um dieses Warten zu verkürzen und aus anderen Gründen, welche mit der ausfallsicheren Konfiguration vieler unserer Router zu tun haben, wird von einem Programm (broadarp) ein ARP-Broadcast beim Startup des Firewalls durchgeführt, welches alle im "inside_hosts"-File eingetragenen Rechner mit der MAC- Adresse des Firewalls nach außen bekannt gibt.

Wie man aus dem Konzept erkennen kann, ist es nicht nur möglich, ein gesamtes Subnetz hinter den Firewall zu positionieren, sondern auch nur Teile davon.

Erläuterungen zum Linux-Teil des Firewalls (für UNIX-Eingeweihte)

Es wurde, basierend auf Mandrake 9.0 eine bootfähige CD zusammengestellt. Beim Bootvorgang werden die beschreibbaren Dateien (z.B. /etc/* /home/* /tmp/* /var/log/*) auf einer RAM-Disk abgelegt.

Das System startet dann im Runlevel 2. Als erstes Script in diesem Runlevel wird die Datei "config" aufgerufen. Diese sieht nach, ob eine FAT-Diskette am Mountpoint /config_dir gemountet ist und diese eine Datei "fw01" beinhaltet. Wenn ja, wird die Datei "config" auf der Diskette gesucht und als Script gestartet. Da kann man theoretisch hineinschreiben, was man will, was bedeutet, dass man es hier mit einer sehr allgemeinen Schnittstelle zu tun hat und man keineswegs nur auf die Funktion als Firewall eingeschränkt ist, der Phantasie sind hier keine Grenzen gesetzt.

So habe ich schon als Anregung für andere Verwendungsmöglichkeiten auf der CD im Unterverzeichnis /samples Beispiel-Disketten nicht nur für Proxy-Arp, sondern auch für die Verwendung IP-Masquerading, Adsl-Router und ISDN-Router (ohne Funktionsgarantie, obwohl die alle schon einmal gelaufen sind ...) abgelegt.

Es gibt ziemlich vollständige Manualpages auf der CD, einen vi (die nicht vi-Kundigen können den Editor vom "mc" - einem Norton-Commander-Nachbau für Linux - verwenden, dennoch sollten Unix-Unkundige sehr vorsichtig ans Werk gehen ...).

Man könnte auch (aber bitte nur kurzfristig, für Wartungszwecke!) einen sshd starten, man kann einen syslogd starten, aber auch nur zum Fehlersuchen, weil die RAM-Disk nicht allzu groß ist, oder längerfristig, aber dann übers Netz auf eine andere Unix/Linux-Maschine (syslog.conf auf die Diskette bringen, editieren und über ein vorhandenes Script, z.B. "fwrules" auf /etc kopieren und danach den syslogd starten).

Ebenso kann man sich mit ssh auf andere Maschinen einloggen (gut für Testzwecke) und damit auch Dateien (z.B. Konfigurationsdateien) auf einer anderen Maschine abspeichern.

Ein Vorteil dieser Lösung: Es kann kein Hacker  (sollte, was allerdings sehr unwahrscheinlich ist, doch einer reinkommen) sich mit einem Rootkit breit machen (die Diskette sollte ja schreibgeschützt sein und die RAM-Disk ist nach einem Neustart auch garantiert Rootkit-frei !).

Inbetriebnahme

Voraussetzungen:

Jetzt kann von der Firewall CD gebootet werden.

Wenn Sie beim Login-Prompt als fwadmin (Passwort: firewall, Sie bekommen root-Rechte) einloggen, werden die Netzwerkkarten am pci-Bus gesucht und ausgeschrieben. Das erleichtert Ihnen die Suche nach den nötigen Kernelmodulen.

Dann wird empfohlen, das Script "makefloppy" aufzurufen. Im Auswahlmenu wählen Sie dann "proxy-arp" aus und ändern die Passwörter für root und fwadmin.

Es werden dann die Beispiel-Dateien von /samples/ proxy-arp auf die Diskette geschrieben, ebenso die neuen Dateien  /etc/passwd und /etc/shadow.

Die Diskette ist nun auf /config_dir gemountet und Sie müssen nun die beiden relevanten Konfigurationsdateien "myconfig" und "fwrules" editieren und alle innenliegenden Rechner in die Datei "inside_hosts" eintragen (am besten mit der IP-Adresse).

Einige Tipps

Links

Download: linux.tuwien.ac.at/Security.html
Advanced Routing Howto: gd.tuwien.ac.at/opsys/linux/LDP/HOWTO/Adv-Routing-HOWTO/
Wartung: sts.tuwien.ac.at/pss/


Seitenanfang | ZIDline 9 - Dezember 2003 | ZID | TU Wien