Website-Suche

So sichern Sie Netzwerkdienste mithilfe von TCP-Wrappern unter Linux


In diesem Artikel erklären wir, was TCP-Wrapper sind und wie man sie konfiguriert, um den Zugriff auf Netzwerkdienste einzuschränken, die auf einem Linux-Server ausgeführt werden. Bevor wir beginnen, müssen wir jedoch klarstellen, dass die Verwendung von TCP-Wrappern eine ordnungsgemäß konfigurierte Firewall nicht überflüssig macht.

In dieser Hinsicht können Sie sich dieses Tool als hostbasierte Zugriffskontrollliste vorstellen und nicht als ultimative Sicherheitsmaßnahme für Ihr System. Indem Sie eine Firewall und TCP-Wrapper verwenden, statt sich gegenseitig zu bevorzugen, stellen Sie sicher, dass Ihr Server keinen Single Point of Failure hat.

Hosts.allow und hosts.deny verstehen

Wenn eine Netzwerkanfrage Ihren Server erreicht, verwenden TCP-Wrapper hosts.allow und hosts.deny (in dieser Reihenfolge), um zu bestimmen, ob der Client einen bestimmten Dienst verwenden darf .

Standardmäßig sind diese Dateien leer, alle auskommentiert oder nicht vorhanden. Somit wird alles durch die TCP-Wrapper-Schicht zugelassen und Ihr System ist für den vollständigen Schutz auf die Firewall angewiesen. Da dies aus dem in der Einleitung genannten Grund nicht erwünscht ist, stellen Sie sicher, dass beide Dateien vorhanden sind:

ls -l /etc/hosts.allow /etc/hosts.deny

Die Syntax beider Dateien ist gleich:

<services> : <clients> [: <option1> : <option2> : ...]

Wo,

  1. Dienste ist eine durch Kommas getrennte Liste von Diensten, auf die die aktuelle Regel angewendet werden soll.
  2. Clients stellen die Liste der durch Kommas getrennten Hostnamen oder IP-Adressen dar, die von der Regel betroffen sind. Folgende Wildcards werden akzeptiert:

    1. ALL stimmt mit allem überein. Gilt sowohl für Kunden als auch für Dienstleistungen.
    2. LOCAL stimmt mit Hosts überein, deren FQDN keinen Punkt enthält, beispielsweise „localhost“.
    3. BEKANNT weist auf eine Situation hin, in der der Hostname, die Hostadresse oder der Benutzer bekannt sind.
    4. UNKNOWN ist das Gegenteil von KNOWN.
    5. PARANOID führt dazu, dass eine Verbindung unterbrochen wird, wenn Reverse-DNS-Lookups (zuerst nach der IP-Adresse, um den Hostnamen zu ermitteln, dann nach dem Hostnamen, um die IP-Adressen zu erhalten) jeweils eine andere Adresse zurückgeben.
  3. Schließlich gibt eine optionale Liste von durch Doppelpunkte getrennten Aktionen an, was passieren soll, wenn eine bestimmte Regel ausgelöst wird.

Beachten Sie möglicherweise, dass eine Regel, die den Zugriff auf einen bestimmten Dienst in /etc/hosts.allow erlaubt, Vorrang vor einer Regel in /etc/hosts.deny hat, die den Zugriff verbietet Es. Wenn außerdem zwei Regeln für denselben Dienst gelten, wird nur die erste berücksichtigt.

Leider unterstützen nicht alle Netzwerkdienste die Verwendung von TCP-Wrappern. Um festzustellen, ob ein bestimmter Dienst sie unterstützt, gehen Sie wie folgt vor:

ldd /path/to/binary | grep libwrap

Wenn der obige Befehl eine Ausgabe zurückgibt, kann diese mit TCP umschlossen werden. Ein Beispiel hierfür sind sshd und vsftpd, wie hier gezeigt:

So verwenden Sie TCP-Wrapper, um den Zugriff auf Dienste einzuschränken

Stellen Sie beim Bearbeiten von /etc/hosts.allow und /etc/hosts.deny sicher, dass Sie eine neue Zeile hinzufügen, indem Sie nach der letzten Zeile die Eingabetaste drücken nicht leere Zeile.

Um den SSH- und FTP-Zugriff nur auf 192.168.0.102 und localhost zuzulassen und alle anderen zu verweigern, fügen Sie diese beiden Zeilen in /etc/hosts.deny hinzu :

sshd,vsftpd : ALL
ALL : ALL

und die folgende Zeile in /etc/hosts.allow:

sshd,vsftpd : 192.168.0.102,LOCAL
#
hosts.deny	This file contains access rules which are used to
#		deny connections to network services that either use
#		the tcp_wrappers library or that have been
#		started through a tcp_wrappers-enabled xinetd.
#
#		The rules in this file can also be set up in
#		/etc/hosts.allow with a 'deny' option instead.
#
#		See 'man 5 hosts_options' and 'man 5 hosts_access'
#		for information on rule syntax.
#		See 'man tcpd' for information on tcp_wrappers
#
sshd,vsftpd : ALL
ALL : ALL
#
hosts.allow	This file contains access rules which are used to
#		allow or deny connections to network services that
#		either use the tcp_wrappers library or that have been
#		started through a tcp_wrappers-enabled xinetd.
#
#		See 'man 5 hosts_options' and 'man 5 hosts_access'
#		for information on rule syntax.
#		See 'man tcpd' for information on tcp_wrappers
#
sshd,vsftpd : 192.168.0.102,LOCAL

Diese Änderungen erfolgen sofort, ohne dass ein Neustart erforderlich ist.

Im folgenden Bild sehen Sie die Auswirkung des Entfernens des Wortes LOCAL aus der letzten Zeile: Der FTP-Server wird für localhost nicht mehr verfügbar sein. Nachdem wir den Platzhalter wieder hinzugefügt haben, ist der Dienst wieder verfügbar.

Um alle Dienste für Hosts zuzulassen, deren Name example.com enthält, fügen Sie diese Zeile in hosts.allow hinzu:

ALL : .example.com

und um den Zugriff auf vsftpd für Maschinen unter 10.0.1.0/24 zu verweigern, fügen Sie diese Zeile in hosts.deny hinzu:

vsftpd : 10.0.1.

Beachten Sie bei den letzten beiden Beispielen den Punkt am Anfang und am Ende der Kundenliste. Es wird verwendet, um „ALLE Hosts und/oder Clients anzugeben, deren Name oder IP diese Zeichenfolge enthält“.

War dieser Artikel hilfreich für Sie? Haben Sie Fragen oder Anmerkungen? Sie können uns gerne eine Nachricht über das Kommentarformular unten hinterlassen.