Date: Sat, 14 Dec 2019 20:12:21 +0000 (UTC) From: Bjoern Heidotting <bhd@FreeBSD.org> To: doc-committers@freebsd.org, svn-doc-all@freebsd.org, svn-doc-head@freebsd.org Subject: svn commit: r53689 - head/de_DE.ISO8859-1/books/handbook/firewalls Message-ID: <201912142012.xBEKCLAB046908@repo.freebsd.org>
next in thread | raw e-mail | index | archive | help
Author: bhd Date: Sat Dec 14 20:12:21 2019 New Revision: 53689 URL: https://svnweb.freebsd.org/changeset/doc/53689 Log: Translate Blacklistd chapter into german Reviewed by: bcr Differential Revision: https://reviews.freebsd.org/D22816 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 Fri Dec 13 21:07:06 2019 (r53688) +++ head/de_DE.ISO8859-1/books/handbook/firewalls/chapter.xml Sat Dec 14 20:12:21 2019 (r53689) @@ -5,7 +5,7 @@ $FreeBSD$ $FreeBSDde: de-docproj/books/handbook/firewalls/chapter.xml,v 1.53 2012/04/30 16:15:52 bcr Exp $ - basiert auf: r52944 + basiert auf: r53425 --> <chapter xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" version="5.0" @@ -3885,6 +3885,348 @@ LOG_ERR - packets which have been logged and which can getrennt durch einen Schrägstrich. Beispielswiese <literal>icmp 3/3</literal> für die Nachricht <foreignphrase>Port unreachable</foreignphrase>.</para> + </sect2> + </sect1> + + <sect1 xml:id="firewalls-blacklistd"> + <title>Blacklistd</title> + + <para>Blacklistd ist ein Daemon der auf Sockets lauscht, um + Benachrichtigungen von anderen Daemons über fehlgeschlagene + oder erfolgreiche Verbindungsversuche zu erhalten. Dieser + Daemon wird häufig verwendet, um zu viele Verbindungsversuche + auf offenen Ports zu blockieren. Ein Beispiel ist + <application>SSH</application>, das viele Anfragen von Bots oder + Skripten erhält, die versuchen, Passwörter zu erraten und + Zugriff zu erhalten. Mit Hilfe von + <application>blacklistd</application> kann der Daemon + die Firewall benachrichtigen, eine Filterregel zu erstellen, um + übermäßige Verbindungsversuche einer einzigen Quelle nach einer + Reihe von Versuchen zu blockieren. Blacklistd wurde + ursprünglich auf NetBSD entwickelt und erschien dort in der + Version 7. &os; 11 hat blacklistd von NetBSD + importiert.</para> + + <para>In diesem Kapitel wird die Einrichtung und Konfiguration + von blacklistd besprochen. Sie finden aber auch Beispiele für + die Verwendung von blacklistd. Sie sollten allerdings mit + grundlegenden Firewall-Konzepten wie Filterregeln vertraut sein. + Weitere Informationen finden Sie im Kapitel Firewalls. In + diesen Beispielen wird PF benutzt, aber auch andere unter &os; + verfügbare Firewalls sollten in der Lage sein mit blacklistd + zusammen zu arbeiten.</para> + + <sect2> + <title>Blacklistd aktivieren</title> + + <para>Die Konfiguration für blacklistd wird in + &man.blacklistd.conf.5; gespeichert. Um das Laufzeitverhalten + von blacklistd zu beeinflussen, sind verschiedene + Kommandozeilenoptionen verfügbar. Die permanente + Konfiguration über Neustarts hinweg sollte in + <filename>/etc/blacklistd.conf</filename> gespeichert + werden. Um den Daemon während des Systemstarts zu aktivieren, + fügen Sie eine Zeile <literal>blacklistd_enable</literal> in + <filename>/etc/rc.conf</filename> hinzu:</para> + + <screen>&prompt.root; <userinput>sysrc blacklistd_enable=yes</userinput></screen> + + <para>Sie können den Daemon auch manuell starten:</para> + + <screen>&prompt.root; <userinput>service blacklistd start</userinput></screen> + </sect2> + + <sect2> + <title>Erstellen von Blacklistd-Regeln</title> + + <para>Die Regeln für blacklistd werden in + &man.blacklistd.conf.5; mit einem Eintrag pro Zeile + konfiguriert. Jede Regel enthält ein Tupel, das durch + Leerzeichen oder Tabulator getrennt ist. Eine Regel gilt + entweder für einen lokalen oder einen + entfernten Rechner.</para> + + <sect3> + <title>Lokale Regeln</title> + + <para>Ein typischer Eintrag für eine lokale Regel in + <filename>/etc/blacklistd.conf</filename> sieht wie + folgt aus:</para> + + <programlisting>[local] +ssh stream * * * 3 24h</programlisting> + + <para>Alle Regeln, die dem Abschnitt + <literal>[local]</literal> folgen, werden als lokale Regeln + behandelt, die für den lokalen Rechner gelten. In einem + <literal>[remote]</literal>-Abschnitt gelten alle Regeln für + entfernte Maschinen.</para> + + <para>Die sieben Felder einer Regel werden entweder durch + Tabulator oder Leerzeichen getrennt. Die ersten vier Felder + identifizieren den Netzwerkverkehr, welcher geblockt werden + soll. Die drei folgenden Felder definieren das Verhalten + von blacklistd. Wildcards werden mit einem Sternchen + (<literal>*</literal>) gekennzeichnet und stimmen mit allen + anderen in diesem Feld überein. Das erste Feld definiert + den Standort. In den lokalen Regeln sind dies die Ports. + Die Syntax ist wie folgt:</para> + + <programlisting>[<replaceable>address</replaceable>|<replaceable>interface</replaceable>][/<replaceable>mask</replaceable>][:<replaceable>port</replaceable>]</programlisting> + + <para>Adressen können als IPv4 im numerischen Format oder IPv6 + in eckigen Klammern angegeben werden. Ebenfalls kann der + Name der Schnittstelle wie + <literal><replaceable>em0</replaceable></literal> verwendet + werden.</para> + + <para>Im zweiten Feld wird der Socket-Typ definiert. + TCP-Sockets sind vom Typ <literal>stream</literal>, + wohingegen UDP als <literal>dgram</literal> bezeichnet wird. + Das obige Beispiel verwendet TCP, weil SSH dieses Protokoll + benutzt.</para> + + <para>Im dritten Feld kann ein Protokoll definiert werden. + Die folgenden Protokolle können verwendet werden: + <literal>tcp</literal>, <literal>udp</literal>, + <literal>tcp6</literal>, <literal>udp6</literal> oder + numerisch. Eine Wildcard, wie im Beispiel, wird + typischerweise verwendet, um alle Protokolle abzubilden, es + sei denn, es gibt einen Grund, den Verkehr nach einem + bestimmten Protokoll zu differenzieren.</para> + + <para>Im vierten Feld wird der effektive Benutzer oder + Eigentümer des Daemon-Prozesses definiert, welcher das + Ereignis meldet. Hier kann der Benutzer oder die + <acronym>UID</acronym> sowie eine Wildcard verwendet + werden (siehe Beispiel oben).</para> + + <para>Der Name der Firewallregel wird im fünften Feld + definiert. In der Voreinstellung setzt blacklistd + alle geblockten Pakete unter einen pf-Anker namens + <literal>blacklistd</literal> in + <filename>pf.conf</filename> wie folgt:</para> + + <programlisting>anchor "blacklistd/*" in on $ext_if +block in +pass out</programlisting> + + <para>Für separate Blacklists kann in diesem Feld ein + Ankername benutzt werden. In anderen Fällen genügt eine + Wildcard. Ein Name mit vorangestelltem Bindestrich + (<literal>-</literal>) bedeutet, das ein Anker mit dem + voreingestellten Regelnamen verwendet werden sollte. Ein + modifiziertes Beispiel von oben mit dem Bindestrich würde + so aussehen:</para> + + <programlisting>ssh stream * * -ssh 3 24h</programlisting> + + <para>Mit einer solchen Regel werden alle neuen + Blacklistregeln zu einem Anker namens + <literal>blacklistd-ssh</literal> hinzugefügt.</para> + + <para>Um ganze Subnetze für eine einzelne Regelverletzung zu + blockieren, kann ein <literal>/</literal> im Regelnamen + benutzt werden. Dadurch wird der verbleibende Teil des + Namens als Maske interpretiert, die auf die in der Regel + angegebene Adresse angewendet wird. Diese Regel würde + beispielsweise jede Adresse blockieren, die an + <literal>/24</literal> angrenzt:</para> + + <programlisting>22 stream tcp * */24 3 24h</programlisting> + + <note> + <para>Es ist wichtig, hier das richtige Protokoll anzugeben. + IPv4 und IPv6 behandeln <literal>/24</literal> + unterschiedlich, deshalb kann <literal>*</literal> im + dritten Feld für diese Regel nicht benutzt werden.</para> + </note> + + <para>Diese Regel bewirkt, dass, wenn ein Rechner in + diesem Netzwerk wegen seines Verhaltens blockiert wird, + auch alle anderen Rechner aus diesem Netzwerk blockiert + werden.</para> + + <para>Das sechste Feld, genannt <literal>nfail</literal>, legt + die Anzahl der Anmeldeversuche fest, die erforderlich sind, + um die betreffende IP auf die Blacklist zu setzen. Eine + Wildcard an dieser Stelle bedeutet, dass niemals geblockt + wird. Im obigen Beispiel ist eine Anzahl von 3 definiert, + was bedeutet, dass die IP nach drei fehlgeschlagenen + Anmeldeversuchen über <application>SSH</application> + gesperrt wird.</para> + + <para>Das letzte Feld in der Regel gibt an, wie lange ein + Rechner auf der Blacklist steht. Die Standardeinheit ist + Sekunden, aber Suffixe wie <literal>m</literal> (Minuten), + <literal>h</literal> (Stunden) und <literal>d</literal> + (Tage) können auch angegeben werden.</para> + + <para>Die Regel im Beispiel besagt, dass nach dreimaliger + Authentifizierung über <application>SSH</application> eine + neue PF-Regel für diesen Rechner angelegt wird. Beim + Überprüfen der Regeln werden zuerst lokale Regeln, von sehr + spezifisch bis am wenigsten spezifisch, geprüft. Wenn eine + Übereinstimmung auftritt, werden die + <literal>remote</literal>-Regeln angewendet und die Felder + <literal>name</literal>, <literal>nfail</literal> und + <literal>disable</literal> werden durch die entsprechende + <literal>remote</literal>-Regel geändert.</para> + + </sect3> + + <sect3> + <title>Remote-Regeln</title> + + <para>Mit Remote-Regeln wird das Verhalten von blacklistd, in + Abhängigkeit vom aktuell ausgewerteten Remote-Rechner, + festgelegt. Die einzelnen Felder einer Remote-Regel sind + identisch mit den Feldern einer lokalen Regel. Der einzige + Unterschied besteht darin, wie blacklistd sie verwendet. + Zur besseren Verständlichkeit wird folgende Regel + benutzt:</para> + + <programlisting>[remote] +203.0.113.128/25 * * * =/25 = 48h</programlisting> + + <para>Das Adressfeld kann eine IP-Adresse (entweder v4 oder + v6), einen Port oder beides beinhalten. Dies ermöglicht es, + wie in diesem Beispiel, spezielle Regeln für einen + bestimmten entfernten Adressbereich festzulegen. Die Felder + für den Socket-Typ, Protokoll und Besitzer werden genauso + wie in den lokalen Regeln interpretiert.</para> + + <para>Die Felder für den Namen sind jedoch unterschiedlich. + Das Gleichheitszeichen (<literal>=</literal>) in einer + Remote-Regel weist blacklistd an, den Wert aus der + entsprechenden lokalen Regel zu verwenden. Das bedeutet, + dass der Eintrag der Firewall-Regel übernommen und das + Präfix <systemitem class="netmask">/25</systemitem> (eine + Netzmaske von <systemitem + class="netmask">255.255.255.128</systemitem>) hinzugefügt + wird. Wenn eine Verbindung aus diesem Adressbereich + geblockt wird, ist das gesamte Subnetz betroffen. Ein + PF-Ankername kann auch hier verwendet werden. In diesem + Fall fügt blacklistd Regeln für diesen Adressbereich dem + Namen des Ankers hinzu. Die Standardtabelle wird verwendet, + wenn eine Wildcard angegeben wird.</para> + + <para>Für eine Adresse kann im Feld <literal>nfail</literal> + die Anzahl von Fehlversuchen definiert werden. Dies ist + nützlich für Ausnahmen, um weniger strenge Anwendungen zu + ermöglichen, oder um Anmeldeversuche ein wenig nachsichtiger + zu gestalten. Die Sperrung wird aufgehoben, wenn im + sechsten Feld eine Wildcard benutzt wird.</para> + + <para>Remote-Regeln ermöglichen eine strengere Durchsetzung + der Beschränkungen bei Anmeldeversuchen im Vergleich zu + Anmeldeversuchen die aus dem lokalen Netzwerk kommen.</para> + </sect3> + </sect2> + + <sect2> + <title>Blacklistd Client Konfiguration</title> + + <para>Es gibt einige Softwarepakete in &os;, die die + Funktionalität von blacklistd nutzen können. Die beiden + bekanntesten sind &man.ftpd.8; und &man.sshd.8;. Beide + Programme nutzen blacklistd, um übermäßige Verbindungsversuche + zu unterbinden. Um blacklistd im SSH-Daemon zu aktivieren, + muss folgend Zeile in + <filename>/etc/ssh/sshd_config</filename> hinzugefügt + werden:</para> + + <programlisting>UseBlacklist yes</programlisting> + + <para>Damit die Änderungen wirksam werden, muss sshd im + Anschluss neu gestartet werden.</para> + + <para>Für &man.ftpd.8; wird blacklistd mit dem Schalter + <literal>-B</literal> aktiviert. Entweder in + <filename>/etc/inetd.conf</filename> oder in + <filename>/etc/rc.conf</filename>:</para> + + <programlisting>ftpd_flags="-B"</programlisting> + + <para>Das ist alles, was benötigt wird, damit diese Programme + mit blacklist kommunizieren.</para> + </sect2> + + <sect2> + <title>Blacklistd Verwaltung</title> + + <para>Blacklistd stellt dem Benutzer das Verwaltungswerkzeug + &man.blacklistctl.8; zur Verfügung. Es zeigt blockierte + Adressen und Netzwerke an, die nach den in + &man.blacklistd.conf.5; definierten Regeln auf der Blacklist + stehen. Um die Liste der aktuell blockierten Rechner + anzuzeigen, benutzen Sie <command>dump</command> zusammen mit + der Option <option>-b</option>:</para> + + <screen>&prompt.root; <userinput>blacklistctl dump -b</userinput> + address/ma:port id nfail last access +213.0.123.128/25:22 OK 6/3 2019/06/08 14:30:19</screen> + + <para>Dieses Beispiel zeigt, dass es sechs von drei erlaubten + Anmeldeversuchen auf Port 22 aus dem Adressbereich <systemitem + class="netmask">213.0.123.128/25</systemitem> gab. Es sind + mehr Versuche aufgelistet, als erlaubt sind, da SSH es einem + Client erlaubt, mehrere Anmeldungen über eine einzige + TCP-Verbindung zu tätigen. Eine derzeit laufende Verbindung + wird nicht von blacklistd unterbunden. Der letzte + Verbindungsversuch ist in der letzten Spalte der Ausgabe + aufgeführt.</para> + + <para>Um die verbleibende Zeit zu sehen, die sich dieser Rechner + auf der Blacklist befindet, fügen Sie <option>-r</option> zum + vorherigen Befehl hinzu:</para> + + <screen>&prompt.root; <userinput>blacklistctl dump -br</userinput> + address/ma:port id nfail remaining time +213.0.123.128/25:22 OK 6/3 36s</screen> + + <para>In diesem Beispiel bleiben noch 36 Sekunden, bis dieser + Rechner nicht mehr blockiert wird.</para> + </sect2> + + <sect2> + <title>Rechner aus der Blocklist entfernen</title> + + <para>Manchmal ist es notwendig, einen Rechner aus der Blocklist + zu entfernen, bevor die verbleibende Zeit abgelaufen ist. + Leider bietet blacklistd keine Möglichkeit dies zu tun. Es + ist jedoch möglich, die Adresse mit <command>pfctl</command> + aus der PF-Tabelle zu entfernen. Für den blockierten Port + gibt es einen untergeordneten Anker innerhalb des definierten + blacklistd-Ankers in <filename>/etc/pf.conf</filename>. Wenn + es beispielsweise einen untergeordneten Anker zum Blockieren + von Port 22 gibt, wird dieser als + <literal>blacklistd/22</literal> bezeichnet. In diesem + untergeordneten Anker befindet sich eine Tabelle, die die + blockierten Adressen enthält. Diese Tabelle wird Port + genannt, gefolgt von der Portnummer. In diesem Beispiel würde + es <literal>port22</literal> heißen. Mit diesen Informationen + und &man.pfctl.8; ist es nun möglich, alle geblockten Adressen + anzuzeigen:</para> + + <screen>&prompt.root; <userinput>pfctl -a <replaceable>blacklistd/22</replaceable> -t <replaceable>port22</replaceable> -T show</userinput> +... +213.0.123.128/25 +...</screen> + + <para>Nachdem Sie die entsprechende Adresse ermittelt wurde, + kann sie mit folgendem Befehl aus der Liste entfernt + werden:</para> + + <screen>&prompt.root; <userinput>pfctl -a <replaceable>blacklistd/22</replaceable> -T delete <replaceable>213.0.123.128/25</replaceable></userinput></screen> + + <para>Die Adresse ist nun aus PF entfernt, erscheint aber immer + noch in der Liste von <command>blacklistctl</command>, da + dieser keine Kenntnis von Änderungen an PF hat. Der Eintrag + in blacklist's Datenbank wird irgendwann ablaufen und dann aus + der Ausgabe entfernt werden. Der Eintrag wird wieder + hinzugefügt, falls der Rechner erneut gegen eine der Regeln + von blacklistd verstößt.</para> </sect2> </sect1> </chapter>
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201912142012.xBEKCLAB046908>