Firewall Builder - einheitliche Konfiguration von UNIX-Firewalls Hans-Ulrich Hohn Institut für Wissenschaftliches Rechnen Postfach 3640 76021 Karlsruhe Tel: 07247/82-4955 Fax: 07247/82-7955 Mail: hu@iwr.fzk.de Internet: http://www.fzk.de 16. November 2004
Zusammenfassung Diese Kurzanleitung für die Installation des Firewall Builders nebst einfacher Konfiguration wurde im Auftrag des PC-Arbeitskreises, des Forschungszentrums erstellt. Grundwissen über Firewalltechniken sind zum Verständnis des Dokuments nicht notwendig. Mit Hilfe des hier vorgestellten Werkzeugs soll es den Linux-Benutzern im Forschungszentrum Karlsruhe gelingen, auf einfache und einheitliche Art und Weise das Betriebssystem ihres Rechners gegen unbefugte Netzwerkzugriffe von Aussen abzusichern. Mit dem Firewall Builder wurde ein Werkzeug gewählt, dass sich in der Art seiner Bedienung stark an das Management des Firewall 1, NG von Checkpoint anlehnt.
Inhaltsverzeichnis 1 Betriebssystemhärtung 1 2 Login mit Key, ohne Passwort 2 3 Installing Firewall Builder on SuSE 9.2 3 4 Konfiguration SNMPD 5 5 Erster Aufruf von fwbuilder 6 5.1 Anlegen eines Firewallmoduls...................... 6 5.2 Erstellen einer Policy........................... 8 5.3 Aktivieren der Firewall-Regeln auf dem Rechner........... 9 5.4 Automatisieren des Firewallstarts für den Bootvorgang........ 10 5.4.1 Installation und Anpassung des fwbuilder Sys-V Initscripts. 10 6 Verzeichnisaufbau und Bedeutung 11 7 Kontrolle der erzeugten Firewallregeln 12 A Firewall Builder Fenster 13 II
Abbildungsverzeichnis 2.1 Generierung eines Schlüsselpaares für die Secure Shell........ 2 2.2 Übertragung des öffentlichen Schlüssels der Secure Shell....... 2 3.1 Pre-Requirements for Firewall Builder................. 3 4.1 Konfiguration SNMP-Daemon...................... 5 4.2 Start SNMP-Daemon........................... 5 4.3 Start kein LINKLOCAL unter S.u.S.E. 9.2.............. 5 5.1 Anlegen der Verzeichnisstruktur für fwbuilder............. 6 5.2 Anlegen eines Firewallmoduls...................... 7 5.3 Konfiguration Install.Script....................... 7 5.4 Erstmalige Übertragung der Firewallregeln.............. 9 5.5 Installation und Anpassung des fwbuilder Sys-V Initscripts..... 10 A.1 Firewall Builder, erste Anmeldung................... 13 A.2 Firewall Builder, Name der Konfigurationsdatei............ 13 A.3 Firewall Builder, Name der Defaultconfiguration........... 14 A.4 Firewall Builder, Startfenster...................... 14 A.5 Firewall Builder, Anlegen des Firewall Moduls............ 15 A.6 Firewall Builder, Interfacekonfiguration über SNMP......... 16 A.7 Firewall Builder, Abschluss Anlegen des Firewall Moduls....... 17 A.8 Firewall Builder, Löschen des sit0 -Interfaces............ 18 A.9 Firewall Builder, Festlegen des Installers................ 19 A.10 Firewall Builder, Festlegen des Management-Interfaces........ 20 A.11 Firewall Builder, lokalen Netzwerkverkehr zulassen.......... 21 A.12 Firewall Builder, global Policy...................... 22 A.13 Firewall Builder, Compilieren der Regeln................ 22 A.14 Firewall Builder, Installieren der Regeln................ 23 III
IV
Kapitel 1 Betriebssystemhärtung Betrachtet man die hohe Geschwindigkeit mit der Linux-Distributionen, wie z.b. die von S.U.S.E., in neuen Versionen erscheinen, so ist fraglich, ob der Kosten/Nutzen- Relation einer umfangreichen Betriebssystemhärtung noch in einem guten Verhältnis zum Aufwand steht. Ich selbst installiere regelmäßig nach Neuerscheinen einer S.U.S.E.-Linux Version das Betriebssystem meines Rechners neu. Die schlechten Erfahrungen, die ich mit Updates bisher gemacht habe, veranlassen mich zu dieser Vorgehensweise. Zur Zeit sind es c.a. 30 Einzelschritte die ich benötige, zu einem neuen und an meine Bedürfnisse angepassten Linux-Desktop zu gelangen. Zu den zu konfigurierenden Software-Paketen auf meinem Rechner zählen Dinge wie: Kernel kompilieren, Grafikkarte, SSH-Server, WEB-Browser, Sendmail, Samba, cryptofs und Cups konfigurieren. Ich benötige für die Neuinstallation eines so auf meine Bedürfnisse massgeschneiderten Systems ungefähr einen halben Arbeitstag. Für die Härtung und Kontrolle aller Dienste auf dem Rechner müsste ich c.a. eine halbe Arbeitswoche investieren. Auf meinem Desktop-Rechner verzichte ich desshalb gänzlich auf die Härtung von Diensten und konfiguriere an Stelle dessen einen Firewall auf dem System. Um auf allen in unserer Organisationseinheit eingesetzten Linux-Distributionen das gleiche Firewall Konfigurations-Frontend zu haben, greifen wir nicht auf die distributionseigenen Werkzeuge zurück, sondern verwenden einheitlich den Firewall Builder. Er ermöglicht unter anderem in einfachster Art die Konfiguration eines Personal- Firewalls, ohne dabei z.b. eine Masse an undurchschaubaren Regeln, wie das Pendant von S.u.S.E., zu erzeugen. Der Betrieb des Firewall Builders wird wesentlich einfacher, wenn zuvor die lokale Kommunikation über Secure Shell ohne Password-Prompt realisiert wurde. 1
Kapitel 2 Login mit Key, ohne Passwort Wenn man bei der ssh nicht immer das Passwort beim Login auf dem Rechner eintippen will, kann man auch Folgendes machen: Zuerst braucht man ein Schlüsselpaar. Falls man noch keines hat, kann man sich wie folgt eines generieren: root@localhost:~ > ssh-keygen -b 2048 -t dsa Abbildung 2.1: Generierung eines Schlüsselpaares für die Secure Shell Ein vorhandenes Schlüsselpaar wird damit überschrieben. Das Kommando generiert einen 2048 Bit langen DSA-Key für SSH Protokoll Version 2 - die Standardlänge von 1024 Bit wird nicht mehr als unumstritten sicher betrachtet. Anmerkung: 2048 Bit ist übrigens nicht doppelt so sicher wie 1024 Bit, sondern 2 hoch 1024 mal sicherer (ausgerechnet ist das eine Dezimalzahl mit mehr als 300 Stellen!). Danach muss man den öffentlichen Schlüssel auf den Firewall-Management Rechner übertragen: root@localhost:~ > ssh-copy-id -i /root/.ssh/id_dsa.pub \ root@localhost Abbildung 2.2: Übertragung des öffentlichen Schlüssels der Secure Shell Aus: http://linuxwiki.de/openssh 2
Kapitel 3 Installing Firewall Builder on SuSE 9.2 Der folgende englische Text wurde aus den WEB-Seiten des Firewall Builder Projektes entnommen. Using our binary RPMs on SuSE 9.2 is easy and requirements are just like for RedHat. Basically, all packages that you need to run Firewall Builder come with SuSE distribution and get installed automatically if you chose to install Gnome workstation. Use Yast to install packages, it automatically resolves dependencies and helps to get it done quickly. SuSE 9.2 Professional Edition comes with RPMs for gtkmm and libsigc++ libraries (gtkmm-1.2.10-301.i586.rpm and libsigc++-1.0.4-378.i586.rpm). The Personal Edition does not include these packages, but you can download them from ftp://ftp.suse.com/. Here is the list of other packages you would need to install Firewall Builder on SuSE 9.2: - glib-1.2.10 - gtk-1.2.10 - gtkmm-1.2.10 (nachinstalliert) - libsigc++-1.0.4 (nachinstalliert) - gdk-pixbuf-0.22.0 (nachinstalliert) - libxml2-2.6.12 - libxslt-1.1.9 - openssl-0.9.7d - net-snmp 5.1.2 - bind-utils-9.2.4 (nachinstalliert) Abbildung 3.1: Pre-Requirements for Firewall Builder 3
Firewall Builder binaries geladen von: http://www.fwbuilder.org/archives/cat downloads.html und zwar nach /local/install/fwbuilder : - libfwbuilder-2.0.3-1.suse91.i586.rpm - fwbuilder-2.0.3-1.suse91.i586.rpm - fwbuilder-ipt-2.0.3-1.suse91.i586.rpm Installiert durch: rpm -i libfwbuilder-2.0.3-1.suse91.i586.rpm rpm -i fwbuilder-2.0.3-1.suse91.i586.rpm rpm -i fwbuilder-ipt-2.0.3-1.suse91.i586.rpm 4
Kapitel 4 Konfiguration SNMPD Nachdem mittels yast kontrolliert wurde, daß der Simple Network Management Protocol-Daemon installiert ist, wird er wie folgt konfiguriert und neu gestartet: vi /etc/snmpd.conf... syslocation name_of_your_ws place_of_your_ws syscontact Sysadmin (me@anywhere.fzk.de)... Abbildung 4.1: Konfiguration SNMP-Daemon Der Start des SNMP-Daemons geschieht am einfachsten über: /etc/init.d/snmpd start Abbildung 4.2: Start SNMP-Daemon Da der SNMP-Daemon später nicht mehr benötigt wird, muss sein Startverhalten nicht automatisiert werden. Anmerkung: Unter S.u.S.E. 9.2 wurde etwas Ulkiges eingeführt. Alle Lokalen Interfaces bekommen zusätzlich zu den gewollten Routingeinträgen einen Eintrag für das lokale Netz 169.254.0.0/16 verpasst. Gehen Sie wie folgt vor, um dies loszuwerden: vi /etc/sysconfig/network/config vorher: LINKLOCAL_INTERFACES="eth*[0-9] tr*[0-9] wlan[0-9] ath[0-9]" nachher: LINKLOCAL_INTERFACES="" /etc/init.d/network stop /etc/init.d/network start Abbildung 4.3: Start kein LINKLOCAL unter S.u.S.E. 9.2 5
Kapitel 5 Erster Aufruf von fwbuilder Zunächst wird ein Verzeichnis für die Konfigurationsdateien von fwbuilder angelegt. Dies geschieht durch: mkdir /etc/firewall Abbildung 5.1: Anlegen der Verzeichnisstruktur für fwbuilder fwbuilder erwartet als Standardverzeichnis für die zu generierenden iptables- Firewallscripte das Verzeichnis /etc/firewall. Dann wird fwbuilder aufgerufen. Nach dem ersten Aufruf von fwbuilder muß zunächst ein neues Firewallmodul angelegt werden. Da wir zuvor den SNMP-Daemon gestartet haben und so konfigurierten, daß localhost SNMP-Leseerlaubnis hat, gestaltet sich dies sehr einfach. 5.1 Anlegen eines Firewallmoduls Zunächst in das Verzeichniss /etc/firewall wechseln, und dort fwbuilder aufrufen. Es erscheint ein Fenster in dem Create new project file ausgewählt wird. Als Dateiname für das neue Projekt wählt man (da es sich ja um eine Art Personal- Firewall handeln soll) localhost.fwb und betätigt save. Man gelangt daraufhin zum vorherigen Bildschirm und wählt dort Next. Im Weiteren wurde auf die Aktivierung des Revision Control Systems verzichtet. /etc/firewall/localhost.fwb wurde als default-konfiguration festgelegt. Nachdem die Konfigurationsoberfläche des Firewall Builders schliesslich gestartet ist wählt man mit der rechten Maustaste Firewalls ; New Firewall. 6
Name of the new object: localhost Firewall software: iptables OS oft the new firewall: Linux 2.4/2.6 -> Next Use SNMP to discover interfaces of the firewall SNMP read community string: public -> Discover Interfaces using SNMP -> Next -> Finish Abbildung 5.2: Anlegen eines Firewallmoduls Das wars! Der Firewall samt sämtlicher Interfacekonfigurationen ist nun vorhanden. Einzig das sit0 -Interface, ein Interface mittels dessen sog. IPv6-in-IPv4 Tunnel realisiert werden können, stört im weiteren Verlauf. Wir löschen es deshalb durch anklicken mit der rechten Maustaste und Auswahl von Delete. Eine Sache ist leider jedoch noch von Hand zu erledigen: Wie aktiviere ich die generierten Regeln auf dem Firewall? Voraussetzung ist, daß sie den SSH-Login wie zuvor beschrieben mittels Key, d.h. ohne Passwort, realisiert haben! Falls also nicht bereits geschehen, unterbrechen sie hier und schieben sie diesen Schritt nun dazwischen. Ansonsten selektieren sie auf der linken Bildschirmseite das Firewall-Objekt localhost mit der rechten Maustaste und wählen dann Edit. Unterhalb des Reiters General wählen Sie Firewall Settings... und nehmen dort unter dem Reiter Installer folgende Einstellungen vor: Policy install script: /usr/bin/fwb_install Command line parameter for this script: Directory on the firewall where the script should be installed: User name used to authenticate to the firewall: /etc/firewall root Abbildung 5.3: Konfiguration Install.Script Als letztes muss nun nur noch das Management-Interface angegeben werden. Hierzu am linken Bildschirmrand unterhalb des geöffneten Firewallobjektes localhost das Interface loopback auswählen und mit der rechten Maustaste anklicken. Edit auswählen und einem Haken bei Management interface setzen. 7
5.2 Erstellen einer Policy Es ist sinnvoll alle lokalen Netzwerkverbindungen zuzulassen. Hierunter verstehe ich alle Verbindungen zum loopback-interface. Wählt man den Firewall localhost mit der linken Maus an, so erscheint rechts ein Feld mir verschiedenen Reitern. Unter dem Reiter Policy werden die Regeln erstellt, die für alle Netzwerk-Interface gültig sind. Rechts davon erscheinen je vorhandenem NIC ein Reiter und am äussersten rechten Rand der Reiter zum Einstellen von Network Adress Translation. Zunächst wird ein Object vom Typ Addresses für den ADSM-Server angelegt: Name Library Address Coment hb2.fzk.de User 141.52.19.23 my ADSM-Server Als nächstes müssen die verschiedenen ADSM-Services definiert werden. Hierzu legen wir 7 verschiedene Services vom Typ TCP an: Name Library Source-Ports Destination-Ports Coment adsm-1500 User 0-0 1500-1500 ADSM-port 1500 adsm-1501 User 0-0 1501-1501 ADSM-port 1501 adsm-1510 User 0-0 1510-1510 ADSM-port 1510 adsm-1550 User 0-0 1550-1550 ADSM-port 1550 adsm-1560 User 0-0 1560-1560 ADSM-port 1560 adsm-1580 User 0-0 1580-1580 ADSM-port 1580 adsm-1581 User 0-0 1581-1581 ADSM-port 1581 Die 7 neuen Services werden in eine Gruppe vom Typ Services mit Namen ADSM gepackt: Group-Name Library Members Comment ADSM User adsm-1500, adsm-1501, my ADSM ports adsm-1510, adsm-1550, adsm-1560, adsm-1580, adsm-1581 Da lokale Netzwerkverbindungen nur das Loopback-Interface betreffen, wählen wir loopback und tragen dort folgende Regel ein: Source Destination Service Direction Action Time Options Coment 0 Any Any Any Both Accept Any none allow communication on loopback 8
Als für alle NICs gültige Policy tragen wir unter Policy folgende Regeln ein: Source Destination Service Action Time Options Coment 0 Any localhost ip fragments Deny Any log block fragments 1 Any localhost ssh Accept Any none Secure Shell 2 Any localhost Win2000 Accept Any none MS-Windows 3 hb2.fzk.de localhost ADSM Accept Any none ADSM backups 4 localhost Any Any Accept Any none allow outgoing 5 Any localhost any Deny Any log clean-up rule 5.3 Aktivieren der Firewall-Regeln auf dem Rechner Nachdem man so eine erste Policy erstellt hat, empfiehlt es sich diese zunächst durch den Firewall Builder auf Plausibilität prüfen zu lassen. Hierzu wählt man am oberen Bildschirmrand Rules und dann Compile. Hier sollten keine Warnungen auftauchen. War dieser Schritt erfolgreich, so können die neuen Firewall-Regeln aktiviert werden. Hierzu wählt man wiederum am oberen Bildschirmrand Rules und dann Install aus. Wenn das erste mal ein Regelsatz auf dem Rechner abgespeichert werden soll, muss einmalig in der Terminalsession, aus der der Firewll Builder aufgerufen wurde, eine Bestätigung abgegeben werden. Dies geschieht durch Eingabe von yes : Added interface lo Added interface eth0 Added interface sit0 The authenticity of host 127.0.0.1 (127.0.0.1) can t be established. RSA key fingerprint is 6b:1d:77:08:58:38:10:07:5a:f1:00:23:21:e9:cb:43. Are you sure you want to continue connecting (yes/no)? yes Abbildung 5.4: Erstmalige Übertragung der Firewallregeln 9
5.4 Automatisieren des Firewallstarts für den Bootvorgang Es existiert bereits ein Init-Script für SuSE 8.1. Dieses ist ohne Änderung auf für SuSE 9.2 verwendbar. Der Download erfolgte von: http://www.fwbuilder.org/archives/cat downloads.html Scripts; fw init-suse-8.1.tar.gz Entpackt wurde das ganze unterhalb von /local/install/fwbuilder in das Verzeichnis: /local/install/fwbuilder/fw init-suse-8.1 5.4.1 Installation und Anpassung des fwbuilder Sys-V Initscripts cd /local/install/fwbuilder/fw_init-suse-8.1 cp firewall.sysconfig /etc/sysconfig/firewall cp firewall /etc/init.d/. insserv firewall,start=3,5 vi /etc/init.d/firewall vorher: nachher: fw_script=/etc/firewall/$yourhost.fw fw_script=/etc/firewall/localhost.fw Abbildung 5.5: Installation und Anpassung des fwbuilder Sys-V Initscripts 10
Kapitel 6 Verzeichnisaufbau und Bedeutung Verzeichnis /etc/firewall /root/.qt/firewallbuilder2rc /local/install/fwbuilder /etc/init.d/firewall /etc/rc.d/rc3.d/s09firewall /etc/rc.d/rc3.d/k12firewall /etc/rc.d/rc5.d/s09firewall /etc/rc.d/rc5.d/k12firewall Bedeutung FW-Builder Konfigurationsdateien Standardverzeichnis FW-Builder Startdatei FW-Builder Installationsdateien FW-Builder System-V Init-Scripte 11
Kapitel 7 Kontrolle der erzeugten Firewallregeln Die Access Controll Lists können wie folgt überprüft werden: iptables -L Die Network Adress Translation Regeln können wie folgt überprüft werden: iptables -t nat -n -L 12
Anhang A Firewall Builder Fenster Abbildung A.1: Firewall Builder, erste Anmeldung Abbildung A.2: Firewall Builder, Name der Konfigurationsdatei 13
Abbildung A.3: Firewall Builder, Name der Defaultconfiguration Abbildung A.4: Firewall Builder, Startfenster 14
Abbildung A.5: Firewall Builder, Anlegen des Firewall Moduls 15
Abbildung A.6: Firewall Builder, Interfacekonfiguration über SNMP 16
Abbildung A.7: Firewall Builder, Abschluss Anlegen des Firewall Moduls 17
Abbildung A.8: Firewall Builder, Löschen des sit0 -Interfaces 18
Abbildung A.9: Firewall Builder, Festlegen des Installers 19
Abbildung A.10: Firewall Builder, Festlegen des Management-Interfaces 20
Abbildung A.11: Firewall Builder, lokalen Netzwerkverkehr zulassen 21
Abbildung A.12: Firewall Builder, global Policy Abbildung A.13: Firewall Builder, Compilieren der Regeln 22
Abbildung A.14: Firewall Builder, Installieren der Regeln 23