TCP-Wrapper bieten eine grundlegende Verkehrsfilterung des eingehenden Netzwerkverkehrs. Der Zugriff auf „verpackte“ Netzwerkdienste, die auf einem Linux-Server von anderen Systemen ausgeführt werden, kann zugelassen oder verweigert werden. Ein mit TCP umschlossener Dienst ist einer, der mit der Bibliothek libwrap.a kompiliert wurde. Verwenden Sie den Befehl ldd, um festzustellen, ob ein Netzwerkdienst mit libwrap.a verknüpft ist. Das folgende Beispiel ermittelt den absoluten Pfadnamen des sshd-Dienstes und listet dann die gemeinsam genutzten Bibliotheken auf, die mit dem sshd-Dienst verknüpft sind, wobei der grep-Befehl verwendet wird, um nach der libwrap-Bibliothek zu suchen:
# which sshd /sbin/sshd
# ldd /sbin/sshd | grep libwrap libwrap.so.0 => /lib64/libwrap.so.0 (0x00007f1fea580000)
Konfigurationsdateien
TCP-Wrapper verlassen sich auf zwei Konfigurationsdateien als Grundlage für die Zugriffskontrolle:
- /etc/hosts.allow
- /etc/hosts.deny
Wenn ein Client versucht, eine Verbindung zu einem Netzwerkdienst auf einem Remotesystem herzustellen, werden diese Dateien verwendet, um zu bestimmen, ob der Clientzugriff zugelassen oder verweigert wird. Verwenden Sie /etc/hosts.allow und /etc/hosts.deny, um Regeln zu definieren, die Clients selektiv den Zugriff auf Server-Daemons auf dem lokalen System erlauben oder verweigern. Das Format für Einträge ist für beide Dateien wie folgt:
daemon_list : client_list [: command]
Es folgt eine Beschreibung der einzelnen Felder:
- daemon_list :Eine durch Kommas getrennte Liste von Daemons oder Schlüsselwort ALL für alle Daemons
- client_list :Eine durch Kommas getrennte Liste von Clients oder das Schlüsselwort ALL für alle Clients
- Befehl :Ein optionaler Befehl, der ausgeführt wird, wenn ein Client versucht, auf einen Server-Daemon zuzugreifen
Um den Client-Zugriff zuzulassen, fügen Sie den Client-Hostnamen oder die IP-Adresse in /etc/hosts.allow hinzu. Um den Zugriff des Clients zu verweigern, fügen Sie seinen Namen oder seine IP-Adresse in /etc/hosts.deny.
hinzuDie Datei /etc/hosts.allow wird zuerst gelesen und zwar von oben nach unten. Wenn ein Daemon-Client-Paar mit der ersten Zeile in der Datei übereinstimmt, wird der Zugriff gewährt. Wenn die Zeile nicht übereinstimmt, wird die nächste Zeile gelesen und die gleiche Prüfung durchgeführt. Wenn alle Zeilen gelesen wurden und keine Übereinstimmung auftritt, wird die Datei /etc/hosts.deny von oben beginnend gelesen. Wenn in der Deny-Datei ein Daemon-Client-Paar gefunden wird, wird der Zugriff verweigert. Wenn in keiner der Dateien Regeln für das Daemon-Client-Paar gefunden werden oder keine Datei existiert, wird der Zugriff auf den Dienst gewährt.
Da die Zugriffsregeln in hosts.allow zuerst angewendet werden, haben sie Vorrang vor den in hosts.deny angegebenen Regeln. Wenn der Zugriff auf einen Dienst in hosts.allow erlaubt ist, wird daher eine Regel ignoriert, die den Zugriff auf denselben Dienst in hosts.deny verweigert. Im Folgenden finden Sie einige Beispiele für Einträge in der Datei /etc/hosts.allow:
1. So erlauben Sie Clients im 192.168.2-Subnetz den Zugriff auf FTP (Daemon ist vsftpd):
# vi /etc/hosts.allow vsftpd : 192.168.2.*
2. So erlauben Sie allen Clients den Zugriff auf ssh, scp und sftp (Daemon ist sshd):
# vi /etc/hosts.allow sshd : ALL
3. Platzieren Sie den folgenden Eintrag in der Datei /etc/hosts.deny, um den FTP-Dienst allen Clients außer dem Subnetz 192.168.2.* zu verweigern (dies setzt voraus, dass der vorherige Eintrag vsftpd:192.168.2.* in /etc/hosts existiert. erlauben):
# vi /etc/hosts.deny vsftpd : ALL
4. Verwenden Sie die .domain-Syntax, um alle Hosts einer bestimmten Domain darzustellen. Das folgende Beispiel erlaubt Verbindungen zu vsftpd von jedem Host in der Domäne example.com (wenn der Eintrag in /etc/hosts.allow steht):
# vi /etc/hosts.allow vsftpd : .example.com
Wenn dieser Eintrag in /etc/hosts.deny erscheint, wird die Verbindung verweigert.
TCP Wrapper (hosts.allow &hosts.deny) Befehlsoptionen in Linux