TCP-Wrapper können mehr als nur den Zugriff auf Dienste erlauben oder verweigern. Mit dem optionalen Befehlsargument können sie Verbindungsbanner senden, vor Angriffen von bestimmten Hosts warnen und die Protokollierung verbessern.
TCP-Wrapper-Banner für einen Dienst
Um ein TCP-Wrapper-Banner für einen Dienst zu implementieren, verwenden Sie die Banner-Option. Dieses Beispiel implementiert ein Banner für vsftpd. Sie müssen irgendwo auf dem System eine Bannerdatei erstellen und ihr den gleichen Namen wie dem Daemon geben. In diesem Beispiel heißt die Datei /etc/banners/vsftpd und enthält die folgenden Zeilen:
220-Hello, %c 220-All activity on ftp.example.com is logged. 220-Inappropriate use results in access privileges being removed.
Das %c Token stellt eine Vielzahl von Client-Informationen bereit. Das %d-Token (nicht gezeigt) wird zum Namen des Daemons erweitert, mit dem der Client versucht hat, eine Verbindung herzustellen. Damit dieses Banner bei eingehenden Verbindungen angezeigt wird, fügen Sie die folgende Zeile zur Datei /etc/hosts.allow hinzu:
# vi /etc/hosts.allow vsftpd : ALL : banners /etc/banners/
TCP-Wrapper, um vor potenziellen Angriffen zu warnen
TCP-Wrapper können Sie mithilfe der Spawn-Direktive vor potenziellen Angriffen von einem Host oder Netzwerk warnen. Die Direktive spawn führt einen beliebigen Shell-Befehl aus. In diesem Beispiel wird versucht, über das Netzwerk 200.182.68.0/24 zuzugreifen. Fügen Sie die folgende Zeile in die Datei /etc/hosts.deny ein, um alle Verbindungsversuche von diesem Netzwerk abzulehnen und die Versuche in einer speziellen Datei zu protokollieren:
# vi /etc/hosts.deny ALL : 200.182.68.0 : spawn /bin/echo `date` %c %d >> /var/log/intruder_alert
Um die Verbindung zuzulassen und zu protokollieren, platzieren Sie die Spawn-Direktive in der Datei /etc/hosts.allow.
Zugriff verweigern und Verbindungsversuch protokollieren
Der folgende Eintrag in /etc/hosts.deny verweigert allen Client-Zugriffen auf alle Dienste (sofern nicht ausdrücklich in /etc/hosts.allow zugelassen) und protokolliert den Verbindungsversuch:
# vi /etc/hosts.deny ALL : ALL : spawn /bin/echo “%c tried to connect to %d and was blocked” >> /var/log/tcpwrappers.log
Die Protokollebene kann mithilfe der Option „Schweregrad“ erhöht werden. Gehen Sie davon aus, dass jeder, der versucht, per SSH auf einen FTP-Server zuzugreifen, ein Eindringling ist. Um dies zu kennzeichnen, platzieren Sie ein Notruf-Flag in den Protokolldateien anstelle des Standard-Flags info und verweigern Sie die Verbindung. Fügen Sie dazu die folgende Zeile in /etc/hosts.deny ein:
# vi /etc/hosts.deny sshd : ALL : severity emerg
Dies verwendet die standardmäßige authpriv-Protokollierungsfunktion, erhöht jedoch die Priorität vom Standardwert von info auf emerg, wodurch Protokollmeldungen direkt an die Konsole gesendet werden.
Zugriff von einer bestimmten Domain verweigern
Das folgende Beispiel besagt, dass bei einem Verbindungsversuch zum SSH-Daemon (sshd) von einem Host in der Domäne example.com der echo-Befehl ausgeführt wird, um den Versuch an eine spezielle Protokolldatei anzuhängen, und die Verbindung abzulehnen. Da die optionale Deny-Direktive verwendet wird, verweigert diese Zeile den Zugriff, selbst wenn sie in der Datei /etc/hosts.allow erscheint:
# vi /etc/hosts.allow sshd : .example.com \ : spawn /bin/echo `/bin/date` access denied >> /var/log/sshd.log \ : deny
Jedem Optionsfeld (spawn und deny) ist ein umgekehrter Schrägstrich (\) vorangestellt, um zu verhindern, dass die Regel aufgrund der Länge fehlschlägt.
Verstehen von TCP-Wrappern (/etc/hosts.allow &/etc/hosts.deny) in Linux