From owner-svn-doc-head@freebsd.org Sun Sep 25 20:08:08 2016 Return-Path: Delivered-To: svn-doc-head@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 89D4FBE9D98; Sun, 25 Sep 2016 20:08:08 +0000 (UTC) (envelope-from bhd@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id 3233C1B2; Sun, 25 Sep 2016 20:08:08 +0000 (UTC) (envelope-from bhd@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id u8PK879h083809; Sun, 25 Sep 2016 20:08:07 GMT (envelope-from bhd@FreeBSD.org) Received: (from bhd@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id u8PK87rS083808; Sun, 25 Sep 2016 20:08:07 GMT (envelope-from bhd@FreeBSD.org) Message-Id: <201609252008.u8PK87rS083808@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: bhd set sender to bhd@FreeBSD.org using -f From: Bjoern Heidotting Date: Sun, 25 Sep 2016 20:08:07 +0000 (UTC) To: doc-committers@freebsd.org, svn-doc-all@freebsd.org, svn-doc-head@freebsd.org Subject: svn commit: r49428 - head/de_DE.ISO8859-1/books/handbook/firewalls X-SVN-Group: doc-head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-doc-head@freebsd.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: SVN commit messages for the doc tree for head List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 25 Sep 2016 20:08:08 -0000 Author: bhd Date: Sun Sep 25 20:08:07 2016 New Revision: 49428 URL: https://svnweb.freebsd.org/changeset/doc/49428 Log: Firewall Update part 4/4 -> IPFILTER Add bhd as a translator. Reviewed by: bcr Differential Revision: https://reviews.freebsd.org/D8026 Modified: head/de_DE.ISO8859-1/books/handbook/firewalls/chapter.xml Modified: head/de_DE.ISO8859-1/books/handbook/firewalls/chapter.xml ============================================================================== --- head/de_DE.ISO8859-1/books/handbook/firewalls/chapter.xml Sat Sep 24 17:05:12 2016 (r49427) +++ head/de_DE.ISO8859-1/books/handbook/firewalls/chapter.xml Sun Sep 25 20:08:07 2016 (r49428) @@ -19,6 +19,7 @@ MichaelBunzelÜbersetzt von JohannKois BenjaminLukas + BjörnHeidotting @@ -1674,2710 +1675,2138 @@ block drop out quick on $ext_if from any - - Die IPFILTER-Firewall (IPF) + + IPFW - firewall + Firewall - IPFILTER + IPFW - Geschrieben wurde IPFILTER von Darren Reed. IPFILTER ist vom - Betriebssystem unabhängig: Es ist eine Open Source Anwendung, - die auf die Betriebssysteme &os;, NetBSD, OpenBSD, &sunos;, HP/UX - und &solaris; portiert wurde. IPFILTER wird aktiv betreut und - gepflegt. Es werden regelmäßig neue Versionen - herausgegeben. - - IPFILTER basiert auf einer kernelseitigen Firewall und einem - NAT Mechanismus, der durch Anwenderprogramme - betreut und gesteuert werden kann. Die Regeln der Firewall werden - mit dem Programm &man.ipf.8; gesetzt oder gelöscht. Für - die Manipulation der NAT Regeln verwendet man - &man.ipnat.8;. Mit &man.ipfstat.8; werden Laufzeitstatistiken der - kernelseitigen Anteile von IPFILTER aufgelistet. Und mit dem - Programm &man.ipmon.8; kann man die Aktionen von IPFILTER in die - Protokolldateien des Systems speichern. - - IPF funktionierte ursprünglich mit einer - Regel-Prozess-Logik à la die letzte Regel, die - passt, entscheidet und verwendete ausschließlich - Regeln ohne feste Zustände. Inzwischen wurde die - Regel-Prozess-Logik drastisch modernisiert: Es gibt eine - und eine zustandsorientierte Option. Die offizielle Dokumentation beinhaltet - leider nur die veralteten Parameter zur Regelerstellung - die neuen - Funktionen werden nur als Zusatzoptionen aufgelistet, was ihre - Vorteile beim Erstellen einer weit überlegenen und viel - sichereren Firewall völlig untergräbt. - - Die Anweisungen in diesem Kapitel basieren darauf, Regeln mit - den Optionen und - zu erstellen. Mit diesem Grundwissen wird man einen kompletten - einschließenden Regelsatz erstellen können. - - Für eine ausführliche Erläuterung der alten Methode - zur Regelverarbeitung schauen Sie bitte auf - http://www.munk.me.uk/ipf/ipf-howto.html oder - http://coombs.anu.edu.au/~avalon/ip-filter.html. + IPFW ist eine + Stateful-Firewall + für &os;, die sowohl IPv4 als auch + IPv6 unterstützt. Die Firewall setzt sich + aus mehreren Komponenten zusammen: dem Kernel Firewall + Filter-Prozessor mit integriertem Paket-Accounting, + Protokollfunktionen, NAT, dem + &man.dummynet.4; Traffic-Shaper, + sowie Weiterleitungs-, Bridge- und ipstealth-Funktionen. - Antworten auf häufige Fragen finden Sie unter - http://www.phildev.net/ipf/index.html. + &os; enthält mit /etc/rc.firewall ein + Beispielregelwerk, welches mehrere Firewall-Typen für + gebräuchliche Szenarien definiert und unerfahrene Anwender + dabei unterstützen soll, ein geeignetes Regelwerk zu erstellen. + IPFW besitzt eine leistungsstarke + Syntax, mit der erfahrene Benutzer ihre eigenen Regeln + anfertigen können, um den Sicherheitsanforderungen der + jeweiligen Umgebung gerecht zu werden. - Und ein durchsuchbares Archiv der Mailingliste zu IPFILTER - gibt es unter http://marc.theaimsgroup.com/?l=ipfilter. + Diser Abschnitt beschreibt, wie + IPFW aktiviert wird und bietet einen + Überblick über die Regelsyntax. Zudem werden mehrere Regelsätze + für gebräuchliche Konfigurationsszenarien vorgestellt. - - Aktivieren von IPF + + <application>IPFW</application> aktivieren - IPFILTER - - enabling + IPFW + aktivieren - &os; enthält IPF in der Standardversion als ladbares - Kernelmodul. Dieses Modul wird vom System automatisch geladen, - wenn in der rc.conf der Eintrag - ipfilter_enable="YES" angelegt wird. In dieser - ursprünglichen Konfiguration ist die Protokollierung aktiv - und die Option default pass all ("Pakete passieren - lassen") als Standard gesetzt. Um die block all - ("alles Blockieren") Option zu setzen, muss man nicht gleich - einen neuen Kernel bauen - es reicht, block all - als letzte Position des Regelsatzes aufzulisten. - - - - Kernel-Optionen - - - Kerneloptionen + Das &os; Basissystem enthält für + IPFW ein ladbares Kernelmodul, was + bedeutet, dass kein angepasster Kernel benötigt wird, um + IPFW zu benutzen. - IPFILTER + + Kerneloptionen + IPFIREWALL - Kerneloptionen - - IPFILTER_LOG + Kerneloptionen + IPFIREWALL_VERBOSE - Kerneloptionen - - IPFILTER_DEFAULT_BLOCK + Kerneloptionen + IPFIREWALL_VERBOSE_LIMIT - IPFILTER - - Kerneloptionen + IPFW + Kerneloptionen - Es ist nicht unbedingt notwendig, IPF durch die folgenden - Optionen direkt in der Kernel einzubinden. Diese Möglichkeit - der Verwendung von IPF wird hier mehr als Hintergrundwissen angeboten. - Man sollte nur wissen, dass dadurch nicht mehr das Kernelmodul geladen - wird - und dementsprechend auch nicht mehr entladen werden kann. - - Die Beschreibung der einzelnen Optionen von IPF für die - Verwendung in der Kernelkonfiguration finden Sie auch in der Datei - /usr/src/sys/conf/NOTES. - - options IPFILTER -options IPFILTER_LOG -options IPFILTER_DEFAULT_BLOCK - - options IPFILTER aktiviert die Verwendung - der IPFILTER Firewall. - - options IPFILTER_LOG aktiviert den - Logging-Mechanismus. Das bedeutet, dass jedes Paket geloggt wird, - auf das eine Regel passt, die das Schlüsselwort - log enthält. Dazu wird der - Pseudo—Device ipl verwendet. - - options IPFILTER_DEFAULT_BLOCK ändert - das Verhalten der Firewall dahingehend, dass jedes Paket, dass nicht - explizit von einer pass Regel Zugang erhält, - abgewiesen, bzw. geblockt, wird. - - Diese Einstellungen werden erst aktiv, wenn der Kernel, in den sie - eingebunden wurden, kompiliert, installiert und gebootet wurde. - - - - Optionen in rc.conf - - Um IPF während des Bootvorgangs einzubinden, braucht man - lediglich die folgenden Zeilen der Datei - /etc/rc.conf anzufügen: - - ipfilter_enable="YES" # Startet IPF -ipfilter_rules="/etc/ipf.rules" # liest den Regelsatz aus einer Datei -ipmon_enable="YES" # Startet das IP-Monitor Log -ipmon_flags="-Ds" # D = Als Da:mon starten - # s = Protokollierung via syslog - # v = Protokollierung von tcp window, ack, seq - # n = Namen statt IP & port ausgeben - - - Falls sich hinter der Firewall ein lokales Netzwerk befindet, - das den reservierten privaten Adressbereich verwendet, müssen - die folgenden Zeilen zur Aktivierung von NAT - ebenfalls in /etc/rc.conf eingetragen - werden: - - gateway_enable="YES" # Aktivierung des LAN-Gateways -ipnat_enable="YES" # Startet die ipnat Funktion -ipnat_rules="/etc/ipnat.rules" # Liest die ipnat-Regeldefinitionen aus einer Datei - - - - - Der Befehl ipf - - ipf + Wenn Sie eine statische Unterstützung für + IPFW in den Kernel kompilieren + wollen, lesen Sie . Folgende + Optionen können in der Kernelkonfigurationsdatei verwendet + werden: - Mit dem Befehl &man.ipf.8; liest man die Datei, die den Regelsatz - enthält ein. Mit dem folgenden Befehl können Sie Ihre - eigenen, für Ihr System maßgeschneiderten Regeln einlesen - und so in einem Schritt alle Regeln der laufenden Firewall - ersetzen: + options IPFIREWALL # enables IPFW +options IPFIREWALL_VERBOSE # enables logging for rules with log keyword +options IPFIREWALL_VERBOSE_LIMIT=5 # limits number of logged packets per-entry +options IPFIREWALL_DEFAULT_TO_ACCEPT # sets default policy to pass what is not explicitly denied +options IPDIVERT # enables NAT - &prompt.root; ipf -Fa -f /etc/ipf.rules + Um IPFW beim Systemstart zu + aktivieren, fügen Sie folgende Zeile in + /etc/rc.conf ein: - bedeutet, dass alle intern gespeicherten - Tabellen mit Regeln gelöscht werden. + firewall_enable="YES" - gibt die Datei an, aus der die neuen Regeln - gelesen werden sollen. + Wenn Sie einen der von &os; zur Verfügung gestellten + Firewall-Profile benutzen möchten, fügen Sie eine weitere + Zeile hinzu, in der Sie das Profil bestimmen: - Mit diesen beiden Optionen erhalten Sie die Möglichkeit, - Änderungen an der Datei mit Ihrem Regelsatz vorzunehmen und - gleich die Firewall mit den neuen Regeln zu bestücken, ohne - den Rechner neu starten zu müssen. Da dieser Vorgang beliebig - wiederholt werden kann, ist es ein sehr bequemer Weg, neue Regeln - einzuarbeiten und zu testen. - - Um mehr über diese und weitere Optionen von &man.ipf.8; - zu erfahren, konsultieren Sie bitte die Manpage. - - &man.ipf.8; erwartet, dass es sich bei der Datei mit dem Regelsatz - um eine Standard-Textdatei handelt. Eine Datei, die ein Skript oder - Variablen enthält, wird nicht verarbeitet. - - Es gibt allerdings doch einen Weg, IPF Regeln mit Hilfe von - Skripten und Variablen zu erstellen. Weitere Informationen dazu - finden Sie unter . - + firewall_type="open" - - IPFSTAT + Folgende Profile stehen zur Verfügung: - ipfstat + + + open: gestattet jeglichen + Datenverkehr. + - - IPFILTER + + client: schützt lediglich diesen + Rechner. + - statistics - + + simple: schützt das gesamte + Netzwerk. + - Das normale Verhalten von &man.ipfstat.8; ist, die Zusammenfassung - der angefallenen Statistiken, die als Resultat der Anwendung von - nutzerspezifischen Regeln auf ein- und ausgehende Pakete seit dem - letzten Start der Firewall oder seit dem letzten Zurücksetzen - der Zähler auf Null durch das Kommando - ipf -Z angesammelt wurden, abzurufen und - anzuzeigen. + + closed: blockiert den gesamten + IP-Datenverkehr, mit Ausnahme des + Verkehrs über die Loopback-Schnittstelle. + - Für weiterführende Informationen schauen Sie bitte - auf die Manpage von &man.ipfstat.8;! + + workstation: schützt lediglich + diesen Rechner und verwendet zustandsorientierte + Regeln. + - Die Ausgabe von &man.ipfstat.8;, wenn keine Parameter - übergeben wurden, sieht etwa so aus: + + UNKNOWN: deaktiviert das Laden von + Firewallregeln. + - input packets: blocked 99286 passed 1255609 nomatch 14686 counted 0 -output packets: blocked 4200 passed 1284345 nomatch 14687 counted 0 -input packets logged: blocked 99286 passed 0 -output packets logged: blocked 0 passed 0 -packets logged: input 0 output 0 -log failures: input 3898 output 0 -fragment state(in): kept 0 lost 0 -fragment state(out): kept 0 lost 0 -packet state(in): kept 169364 lost 0 -packet state(out): kept 431395 lost 0 -ICMP replies: 0 TCP RSTs sent: 0 -Result cache hits(in): 1215208 (out): 1098963 -IN Pullups succeeded: 2 failed: 0 -OUT Pullups succeeded: 0 failed: 0 -Fastroute successes: 0 failures: 0 -TCP cksum fails(in): 0 (out): 0 -Packet log flags set: (0) + + filename: + absoluter Pfad zu einer Datei, in der die Firewallregeln + definiert sind. + + - Wenn die Option für - eingehend oder für - ausgehend übergeben wird, liefert das Kommando - eine entsprechende Liste von Filter-Regeln, die gerade installiert - sind und vom Kernel verwendet werden. + Wenn Sie firewall_type auf + client oder simple + setzen, müssen Sie die voreingestellten Regeln in + /etc/rc.firewall anpassen, damit sie + der Konfiguration des Systems entsprechen. - ipfstat -in zeigt alle aktive Regeln - für eingehende Verbindungen zusammen mit ihren Nummern. + Beachten Sie, dass das Profil filename + verwendet wird, um ein benutzerdefiniertes Regelwerk zu + laden. - ipfstat -on erledigt dasselbe für die - ausgehenden Verbindungen. + Eine alternative Möglichkeit, um ein benutzerdefiniertes + Regelwerk zu laden, bietet die Variable + firewall_script. Setzen Sie die Variable + auf den absoluten Pfad eines + ausführbaren Skripts, welches die Befehle + für IPFW enthält. Die Beispiele in + diesem Abschnitt gehen davon aus, dass + firewall_script auf + /etc/ipfw.rules gesetzt ist. - Die Ausgabe sieht in etwa folgendermaßen aus: + firewall_script="/etc/ipfw.rules" - @1 pass out on xl0 from any to any -@2 block out on dc0 from any to any -@3 pass out quick on dc0 proto tcp/udp from any to any keep state + Die Protokollierung wird mit diesem Eintrag + aktiviert: - ipfstat -ih zeigt die Tabelle der aktiven - Regeln für eingehende Verbindungen zusammen mit der Anzahl, - wie oft jeder einzelnen Regel entsprochen wurde. + firewall_logging="YES" - ipfstat -oh zeigt das Gleiche für - die ausgehenden Verbindungen. + Es existiert keine Variable für + /etc/rc.conf, um die Protokollierung zu + begrenzen. Um die Anzahl der Protokoll-Nachrichten pro + Verbindungsversuch zu begrenzen, legen Sie die Anzahl der + Einträge in /etc/sysctl.conf fest: - Hier wird die Ausgabe so oder so ähnlich aussehen: + net.inet.ip.fw.verbose_limit=5 - 2451423 pass out on xl0 from any to any -354727 block out on dc0 from any to any -430918 pass out quick on dc0 proto tcp/udp from any to any keep state + Nachdem Sie die Änderungen gespeichert haben, können Sie + die Firewall starten. Um auch die Anzahl der + Protokoll-Nachrichten zu konfigurieren, setzen Sie mit + sysctl den gewünschten Wert: - Einer der wichtigsten Funktionen von ipfstat - wird über die Option bereitgestellt. Mit - ihr wird eine Statustabelle vergleichbar der Prozess-Tabelle - von &man.top.1; ausgegeben. Mit dieser Funktion erhalten Sie im - Falle eines Angriffs die Möglichkeit, die angreifenden Pakete - zu identifizieren, abzufangen und auszuwerten. Weitere Unteroptionen - eröffnen, die IP-Adresse, den Port oder das Protokoll, geteilt - nach Herkunft und Ziel, auszuwählen und dann in Echtzeit zu - beobachten. Lesen Sie dazu bitte auch die Manpage von - &man.ipfstat.8;. + &prompt.root; service firewall start +&prompt.root; sysctl net.inet.ip.fw.verbose_limit=5 - - IPMON + + <application>IPFW</application> Regel-Syntax - ipmon + Wenn ein Paket die Firewall betritt, also + von der Firewall geprüft und verarbeitet wird, wird die + erste Regel des Regelwerkes auf das Paket angewandt. Auf + diese Weise wird in aufsteigender Reihenfolge der Regelnummer + mit allen weiteren Regeln verfahren. Falls die + Selektionsparameter einer Regel auf ein Paket zutreffen, wird + das Aktionsfeld der Regel ausgeführt und die Prüfung + des Pakets beendet, nachfolgende Regeln werden also nicht + mehr geprüft. Diese Suchmethode wird als erster + Treffer gewinnt bezeichnet. Falls keine Regel auf + das betreffende Paket zutrifft, wird die obligatorische + IPFW-Rückfallregel mit der Nummer + 65535 angewendet und das Paket wird ohne Rückantwort + verworfen. Wenn das Paket jedoch einer Regel mit dem + Schlüsselwort count, + skipto oder tee + entspricht, wird die Prüfung des Pakets weiter + fortgeführt. Weitere Details darüber, wie diese + Schlüsselwörter die Regelverarbeitung beeinflussen, finden Sie + in &man.ipfw.8;. - IPFILTER - - logging - - - Damit der Befehl ipmon korrekt arbeiten kann, - muss die Option IPFILTER_LOG in die - Kernelkonfiguration eingearbeitet werden. Das Kommando selbst - arbeitet in zwei verschiedenen Modi. Für den nativen Modus - startet man ipmon auf der Kommandozeile ohne die - Option . - - Der Hintergrundmodus (daemon mode) dient der - Erstellung eines stetigen Systemprotokolls, so dass Einträge - vergangener Ereignisse inspiziert werden können. So sollen &os; - und IPFILTER entsprechend ihrer Konfiguration zusammen arbeiten. - &os; kann mit einem eingebauten Mechanismus Systemprotokolle - turnusmäßig abspeichern. Aus diesem Grund sollte man - besser &man.syslogd.8; verwenden anstatt die Protokollinformationen - in eine Datei zu schreiben, wie es als Standard vorgesehen ist. In - der Standard-rc.conf-Datei (im Ordner - /etc/defaults/) wird dem Eintrag - ipmon_flags die Option - übergeben: - - ipmon_flags="-Ds" # D = Als Da:mon starten -# s = Protokollierung via syslog -# v = Protokollierung von tcp window, ack, seq -# n = Namen statt IP & port ausgeben - - Die Vorteile des Protokollierens liegen auf der Hand: Sie - versetzen den Administrator in die Lage, nach einem Vorfall - Informationen abzurufen, etwa welche Pakete aussortiert wurden, - welche Adressen diese Pakete gesendet haben oder wohin sie gesendet - werden sollten. Alles in allem erhält er ein sehr gutes Werkzeug - zum Aufspüren von Angreifern. - - Jedoch, auch wenn die Protokollierung aktiviert ist, wird IPF - keine einzige Regel zum Protokollieren von alleine entwerfen und - umsetzen. Der Administrator der Firewall entscheidet, welche Regeln - in seinem Regelsatz mitgeschrieben werden sollen und er muss - dementsprechend das Schlüsselword log in - dieser Regel angeben. Normalerweise werden nur Treffer auf abweisende - Regeln protokolliert. - - Es ist üblich, als letzte Regel eine alles blockierende - Regel mit dem Schlüsselwort log in den - Regelsatz einzutragen. Dadurch erkennt man alle Pakete, die keiner - Regel im Regelsatz entsprachen. - - - - IPMON Logging - - Syslogd verwendet seine eigene Methode - zum Sortieren der gesammtelten Protokolldaten - spezielle Gruppierungen - namens facility und level. IPMON - verwendet im daemon-Modus als - facility den Wert security. Die - folgenden level können für eine genauere - Trennung der Protokolldaten verwendet werden: - - LOG_INFO - Alle zu protokollierenden Pakete -LOG_NOTICE - Protokollierte Pakete, die passieren durften -LOG_WARNING - Protokollierte Pakete, die blockiert wurden -LOG_ERR - Protokollierte Pakete, deren Headerdaten nicht komplett vorlagen - - Damit IPFILTER angewiesen werden kann, alle Protokolldaten in - die Datei /var/log/ipfilter.log zu schreiben, - muss diese erst erstellt werden. Folgendes Kommando - übernimmt diese Aufgabe: - - &prompt.root; touch /var/log/ipfilter.log - - Die Funktionen von &man.syslogd.8; werden durch Definition in - der Datei /etc/syslog.conf gesteuert. In dieser - Datei kann sehr weitläfig eingestellt werden, wie - syslog mit den Systemnachrichten umgehen - soll, die ihm von Anwendungen wie IPF übergeben werden. - - Fügen Sie folgende Definition in die Datei - /etc/syslog.conf ein, um die Protokollierung - für IPF via syslog zu aktivieren: - - security.* /var/log/ipfilter.log + IPFW + Regel-Syntax + - security.* bedeutet, dass alle Nachrichten - der Klasse security.* am angegebenen Ort (hier - eine Datei) geschrieben werden sollen. + Bei der Erstellung der + IPFW-Regeln müssen die + Schlüsselwörter in der folgenden Reihenfolge geschrieben + werden. Einige Schlüsselwörter müssen zwingend angegeben + werden, während andere optional sind. Die Wörter in + Großbuchstaben repräsentieren Variablen und die Wörter in + Kleinbuchstaben müssen den Variablen vorangestellt + werden. Das Zeichen # wird benutzt, um + einen Kommentar einzuleiten und kann am Ende einer Regel oder + in einer eigenen Zeile stehen. Leerzeilen werden + ignoriert. - Um Änderungen an der Datei - /etc/syslog.conf zu aktivieren müssen Sie - den Rechner neu starten, oder den Befehl + CMD RULE_NUMBER set SET_NUMBER ACTION log + LOG_AMOUNT PROTO from SRC SRC_PORT to DST DST_PORT + OPTIONS - &prompt.root; /etc/rc.d/syslogd reload + Dieser Abschnitt bietet einen Überblick über diese + Schlüsselwörter und deren Optionen. Es ist keine vollständige + Liste aller verfügbaren Optionen. Eine vollständige + Beschreibung der Regel-Syntax, die Sie verwenden können um + IPFW-Regeln zu erstellen, finden + Sie in &man.ipfw.8;. - ausführen. + + + CMD + + Jede Regel muss mit ipfw add + beginnen. + + - Vergessen Sie nicht, /etc/newsyslog.conf - anzupassen, damit die neuen Protokolldateien, die eben konfiguriert - wurden, auch in den Rotationsturnus eingefügt werden! - + + RULE_NUMBER + + Jede Regel gehört zu einer Nummer zwischen + 1 und 65534. Die + Nummer wird verwendet, um die Reihenfolge der + Regelverarbeitung zu kennzeichnen. Es ist möglich, dass + mehrere Regeln dieselbe Nummer haben. In diesem Fall + werden sie entsprechend der Reihenfolge angewendet, in + der sie aufgenommen wurden. + + - - Die Formatierung der Logdatei + + SET_NUMBER + + Jede Regel ist einer Set-Nummer + zwischen 0 und 31 + zugeordnet. Sets können einzeln aktiviert oder + deaktiviert werden. Dies macht es möglich, eine Reihe + von Regeln schnell hinzuzufügen oder zu löschen. Wenn + SET_NUMBER nicht angegeben ist, wird + die Regel zu Set 0 + hinzugefügt. + + - Nachrichten, die durch ipmon erzeugt werden, - bestehen aus durch Leerstellen getrennten Datenfeldern. Folgende - Felder sind in allen Nachrichten enthalten: + + ACTION + + Eine Regel kann mit einer der folgenden Aktionen + verknüpft werden. Die festgelegte Aktion wird + ausgeführt, wenn das Paket den Selektionskriterien der + Regel entspricht. - - - Das Datum der Paketerstellung. - - - - Die Uhrzeit der Paketerstellung in der Form - HH:MM:SS.F, mit Stunden, Minuten, Sekunden - und Sekundenbruchteilen, wobei letztere mehrere Stellen lang - sein können. - - - - Der Name der Schnittstelle, die das Paket verarbeitet hat, - bspw. dc0. - - - - Die Gruppe und die Nummer der angewandten Regel, bspw. - @0:17. - - - - Die ausgeführte Aktion: p für - passed (zugelassen), b für blockiert, - S für short packet (unvollständiger - Header), n für no match (gar keine Regel - wurde berührt) und L für Log-Regel. Die Reihe, in der - die Flags angezeigt werden ist: S, p, b, n, L. Ein groß - geschriebenes P oder B bedeutet, dass das Paket aufgrund einer - globalen Einstellung protokolliert wurde und nicht wegen einer - einzelnen Regel. - - - - Die Adressen. Diese bestehen aus drei Feldern: Der - Quelladresse mit Port (getrennt durch ein Komma), dem Symbol - -> und der Zieladresse. Also bspw. - 209.53.15.22,80 -> 198.64.221.18,1722. - - - - PR gefolgt vom Namen eines - Netzwerk-Protokolls oder dessen Nummer. Bspw. - PR tcp. - - - - len gefolgt von der Länge des Headers - und der Gesamtlänge des Paketes, beispielsweise - len 20 40. - - + allow | accept | pass | + permit: All diese Aktionen sind + gleichbedeutend und erlauben Pakete, die mit der Regel + übereinstimmen. - Wenn es sich um ein TCP-Paket handelt, wird - ein weiteres Feld, beginnend mit einem Querstrich und gefolgt von - Buchstaben, die den gesetzten Flags entsprechen, angezeigt. Lesen - Sie bitte die Manpage &man.ipmon.8; für eine Liste der Buchstaben - und deren Bedeutungen. - - Falls das Paket ein ICMP-Paket ist, werden zwei Felder am Ende - hinzugefügt - das erstere ist immer ICMP, das - zweite enthält die ICMP-Nachricht und den Nachrichtentyp, - getrennt durch einen Schrägstrich. ICMP 3/3 - steht beispielsweise für Port nicht - erreichbar. - + check-state: Diese Aktion + überprüft die Regel in der dynamischen Zustandstabelle. + Bei einer Übereinstimmung wird die mit der dynamischen + Regel verknüpfte Aktion ausgeführt, andernfalls wird mit + der Prüfung gegen die nächste Regel fortgefahren. Die + Regel check-state hat selbst kein + Selektionskriterium. Sollte keine + check-state-Regel im Regelwerk + vorhanden sein, wird die dynamische Zustandstabelle beim + ersten Vorkommen einer keep-state- + oder limit-Regel überprüft. - - Die Erstellung eines Regelsatzes mit Variablen + count: Aktualisiert die + Zähler für alle Pakete, die mit dieser Regel + übereinstimmen. Die Prüfung wird mit der nächsten Regel + fortgesetzt. - Erfahrenere IPF Anwender erstellen sich eine Datei, die die - Regeln enthält und gestalten diese als ein Skript, in dem - Variablen verwendet werden. Der wichtigste Vorteil besteht darin, - dass man lediglich den Wert der Variablen anpassen muss und diese, - sobald das Skript gestartet wird, durch die entsprechenden Werte - ersetzt und die Regeln entsprechend formuliert werden. In Skripten - kann man so häufig verwendete Werte einfach als Variable in - mehreren Regeln zuweisen. Am folgenden Beispiel soll das - verdeutlicht werden. - - Die Syntax dieses Skriptes ist kompatibel mit den Shells - &man.sh.1;, &man.csh.1; und &man.tcsh.1;. - - Variablen beginnen mit einem Dollar-Zeichen: - $Variablenname. Im Beispiel unten steht - $oif für die Variable, in der der Name - der Schnittstelle abgelegt wird, über die der Verkehr nach - außen erfolgt. - - In Variablenzuweisungen fehlt das beginnende $-Zeichen. - Alleine der Name der Variable wird angegeben, gefolgt von einem - Gleichheitszeichen, und dem Wert, der der Variablen zugewiesen werden - soll. Dieser muss in doppelten Anführungszeichen - ("") stehen. Also folgt eine Zuweisung dem Schema - Variablenname = "Wert". - - ############# Start of IPF rules script ######################## - -oif="dc0" # Name der Internet-Schnittstelle -odns="192.0.2.11" # IP des DNS-Servers unseres ISPs -myip="192.0.2.7" # die statische IP, die uns der ISP zugeteilt hat -ks="keep state" -fks="flags S keep state" - -# Sie haben die Wahl, aus diesem Skript eine eigene -# /etc/ipf.rules erstellen zu lassen oder es einfach -# direkt als Skript laufen zu lassen. -# -# Entfernen Sie dazu das eine Kommentarzeichen -# und kommentieren Sie die andere Zeile aus! -# -# 1) Diese Zeile verwenden Sie zur Erstellung von /etc/ipf.rules -#cat > /etc/ipf.rules << EOF -# -# 2) Diese Zeile, wenn Sie direkt mit dem Skript arbeiten wollen -/sbin/ipf -Fa -f - << EOF + deny | drop: Diese Aktionen + sind gleichbedeutend und verwerfen Pakete, die mit + dieser Regel übereinstimmen. + + Es stehen noch weitere Aktionen zur Verfügung. + Einzelheiten finden Sie in &man.ipfw.8;. + + -# Erlaubnis ausgehenden Verkehrs an den Nameserver des ISPs -pass out quick on $oif proto tcp from any to $odns port = 53 $fks -pass out quick on $oif proto udp from any to $odns port = 53 $ks - -# Erlaubnis ausgehenden unsicheren www-Verkehrs -pass out quick on $oif proto tcp from $myip to any port = 80 $fks - -# Erlaubnis ausgehenden sicheren www-Verkehrs https via TLS SSL -pass out quick on $oif proto tcp from $myip to any port = 443 $fks -EOF -################## End of IPF rules script ######################## - - Das ist schon alles. Die Regeln selbst sind im Beispiel nicht - so wichtig - achten Sie auf die Anwendung der Variablenzuweisung - am Anfang und die Verwendung der Variablen im Skript. Falls das - obige Beispiel in einer Datei namens - /etc/ipf.rules.script gespeichert wurde, - können die Regeln mit folgenden Kommando neu geladen - werden: - - &prompt.root; sh /etc/ipf.rules.script - - Es gibt ein Problem mit Regelsatz-Dateien, die Variablen - verwenden: IPF kann mit Variablen nichts anfangen - und kann derartige - Skripte nicht direkt einlesen. + + LOG_AMOUNT + + Erfüllt ein Paket die Selektionskriterien mit dem + Schlüsselwort log, wird dies von + &man.syslogd.8; mit der Annotation + SECURITY protokolliert. Dies erfolgt + allerdings nur, wenn die Anzahl der protokollierten + Pakete der betreffenden Regel die definierte + LOG_AMOUNT-Grenze nicht übersteigt. + Wenn LOG_AMOUNT nicht definiert ist, + wird die Grenze aus dem Wert von + net.inet.ip.fw.verbose_limit + benutzt. Ein Wert von 0 bedeutet + eine unbegrenzte Protokollierung. Wird eine definierte + Grenze erreicht, wird die Protokollierung für diese + Regel deaktiviert. Um die Protokollierung zu + reaktivieren, können Sie den Protokoll- oder Paketzähler + mit ipfw resetlog + zurücksetzen. - Unser kleines Skript kann daher nur auf eine der beiden folgenden - Weisen verwendet werden: + + Die Protokollierung findet statt, nachdem alle + Selektionskriterien geprüft und bevor die endgültige + Aktion auf das Paket angewendet wird. Der + Administrator entscheidet, welche Regel protokolliert + werden soll. + + + - - - Entfernen Sie das Kommentarzeichen der Zeile, die mit - cat beginnt. Kommentieren Sie die Zeile aus, - die mit /sbin/ipf beginnt. Schreiben Sie die - Zeile ipfilter_enable="YES" in die Datei - /etc/rc.conf und rufen Sie dann das Skript - auf, um /etc/ipf.rules zu erstellen oder - zu erneuern. - - - - Deaktivieren Sie IPFILTER in den Systemstart-Skripten, indem - Sie die Zeile ipfilter_enable="NO" in die - Datei /etc/rc.conf eintragen (was auch der - Standard-Einstellung entspricht). - - Fügen Sie ein Skript ähnlich dem folgenden in Ihr - Verzeichnis /usr/local/etc/rc.d/. Es - sinnvoll, dem Skript einen offensichtlichen Namen zu geben, wie - etwa ipf.loadrules.sh. Die Endung - .sh ist dabei verbindlich. - - #!/bin/sh -sh /etc/ipf.rules.script - - Die Zugriffsrechte für die Datei, die das Skript - enthält, müssen für den Eigentümer - root auf Lesen, Schreiben und Ausführen - gesetzt werden. + + PROTO + + Dieser optionale Wert wird verwendet, um einen + beliebigen Protokollnamen oder -nummer aus + /etc/protocols gegen das Paket zu + prüfen. + + - &prompt.root; chmod 700 /usr/local/etc/rc.d/ipf.loadrules.sh - - + + SRC + + Nach dem Schlüsslwortfrom muss + die Quelladresse stehen, oder ein Schlüsselwort, das die + Quelladresse darstellt. Eine Adresse wird dargestellt + duch any, me (jede + Adresse dieses Systems), me6 (jede + IPv6-Adresse dieses Systems), oder + table gefolgt von der Nummer der + Tabelle, welche die Adressen enthält. + IP-Adressen können in + CIDR-Notation geschrieben werden. + Beispielsweise 1.2.3.4/25 oder + 1.2.3.4:255.255.255.128. + + - Wenn nun Ihr System startet, werden Ihre IPF-Regeln geladen. - + + SRC_PORT + + Optional kann ein Quellport über eine Nummer oder + einen Namen aus /etc/services + spezifiziert werden. + + - - IPF Regelsätze + + DST + + Nach dem Schlüsselwort to muss + die Zieladresse stehen, oder ein Schlüsselwort, das die + Zieladresse darstellt. Es können die gleichen + Schlüsselwörter und Adressen benutzt werden, die bereits + im SRC-Abschnitt beschrieben wurden. + + - Ein Regelsatz ist eine Gruppe von IPF-Regeln, die anhand der - Werte eines Netzwerkpaketes entscheiden, ob dieses Paket durchgelassen - oder blockiert wird. Der Austausch von Paketen erfolgt immer - zweiseitig in Form einer sogenannten Session. Der Regelsatz der - Firewall verarbeitet sowohl die eingehenden Pakete aus dem - öffentlichen Internet als auch die Pakete, die vom System als - Antwort auf die Ersteren gesendet werden. Jeder Dienst, der via - TCP/IP arbeitet, zum Beispiel - telnet, www oder - mail, ist vordefiniert durch sein Protokoll und - seinen privilegierten Port, an dem er auf Anfragen wartet und - reagieren kann. Pakete, die gezielt einen Dienst ansprechen sollen, - werden von einem unprivilegierten Port des Senders an einen konkreten - privilegierten Port des Zielsystems geschickt. Alle genannten - Parameter (Ports, Adressen usw.) können als Auswahlkriterien zum - erstellen von Regeln eingesetzt werden, die Dienste erlauben oder - blockieren. + + DST_PORT + + Optional kann ein Zielport über eine Nummer oder + einen Namen aus /etc/services + spezifiziert werden. + + - - IPFILTER + + OPTIONS + + Nach der Quell- und Zieladresse können noch weitere + Optionen angegeben werden. Wie der Name bereits sagt, + sind OPTIONS optional. Häufig + verwendete Optionen sind in oder + out, mit denen die Richtug des + Pakets bestimmt wird, icmptypes + gefolgt vom Typ der ICMP-Nachricht, + sowie keep-state. - rule processing order - + Wenn ein Paket auf eine + keep-state-Regel zutrifft, wird + die Firewall eine dynamische Regel erstellen, die dem + bidirektionalen Datenverkehr zwischen den gleichen + Quell- und Zieladressen mit dem gleichen Protokoll + entspricht. + + Dynamische Regeln sind für einen sogenannten + SYN-flood-Angriff + anfällig, bei dem eine riesige Anzahl an dynamischen + Regeln erzeugt wird. Verwenden Sie die Option + limit, um einen solchen Angriff + entgegenzuwirken. Diese Option begrenzt die Anzahl + der gleichzeitig möglichen Sitzungen. Es handelt sich + dabei um einen Zähler, der die Anzahl von dynamischen + Regeln in Kombination mit der Quelladresse verfolgt. + Übersteigt der Zähler den durch limit + definierten Wert, wird das Paket verworfen. - IPF wurde ursprünglich mit einer Regel-Prozess-Logik - geschrieben, die ausschließlich statusfreie Regeln zuließ - und nach dem Prinzip die letzte Regel, die passt, - entscheidet arbeitete. Mit der Zeit erhielt IPF eine - Option sowie Option - für die Anwendung von zustandsorientierten Regeln, was die - Regel-Prozess-Logik signifikant modernisierte. - - Die Anweisungen in diesem Kapitel basieren auf der Verwendung - von Regeln, die diese beiden neuen Optionen verarbeiten. Dies ist - das Framework zur Entwicklung eines Firewallregelsatzes. - - - Wenn Sie mit einer Firewall arbeiten, seien Sie - sehr vorsichtig. Durch wenige Einstellungen - können Sie sich aus Ihrem System - aussperren. Wenn Sie auf der sicheren Seite - sein wollen, führen Sie die Firewall-Konfiguration direkt am - entsprechenden Gerät aus und nicht über eine - Netzwerkverbindung wie bspw. ssh. - *** DIFF OUTPUT TRUNCATED AT 1000 LINES ***