Page Menu
Home
FreeBSD
Search
Configure Global Search
Log In
Files
F153560633
D22816.diff
No One
Temporary
Actions
View File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Flag For Later
Award Token
Size
15 KB
Referenced Files
None
Subscribers
None
D22816.diff
View Options
Index: head/de_DE.ISO8859-1/books/handbook/firewalls/chapter.xml
===================================================================
--- head/de_DE.ISO8859-1/books/handbook/firewalls/chapter.xml
+++ head/de_DE.ISO8859-1/books/handbook/firewalls/chapter.xml
@@ -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 @@
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>
File Metadata
Details
Attached
Mime Type
text/plain
Expires
Wed, Apr 22, 10:17 PM (18 h, 35 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
32000832
Default Alt Text
D22816.diff (15 KB)
Attached To
Mode
D22816: Translate Blacklistd chapter into german
Attached
Detach File
Event Timeline
Log In to Comment