Die Nutzung von Serverdiensten sollte aus Sicherheitsgründen
kontrolliert erfolgen. Bestimmte Dienste wie NFS oder Samba
sollten nur im Intranet bzw. nur in bestimmten Netzwerkbereichen
zur Verfügung stehen. Diese Kontrollfunktion kann der
TCP_Wrapper tcpd übernehmen. Wie kann man sich das nun
vorstellen? Normalerweise sieht ein Eintrag in der
Konfigurationsdatei des Superservers /etc/inetd
folgendermaßen aus:
/etc/inetd
|
sshd stream tcp nowait root /usr/sbin/sshd sshd -i
|
Eine Verbindungsanfrage zu dem ssh-Port soll angenommen werden
und nach erfolgreichem Start des Programms /usr/sbin/sshd
wird der TCP-Datenstrom an diesen Server weitergeleitet. Der
Serverprozess läuft unter root-Rechten ab.
Wenn man kontrollieren möchte, wer den ssh-Dienst ausführen
darf, muß man folgende Änderung vornehmen:
/etc/inetd
|
ssh stream tcp nowait root /usr/sbin/tcpd sshd
|
Nun wird anstelle des ssh-Servers der TCP_Wrapper tcpd
aufgerufen, und erst wenn dieser die Verbindungsanfrage positiv
entscheidet, wird diese an den ssh-Dienst weitergegeben. In
den Dateien /etc/hosts.allow und /etc/hosts.deny können
Netzwerkbereiche für bestimmte Dienste freigeschaltet oder
abgeschottet werden. Die folgenden Einträge
zeigen einige Konfigurationsmöglichkeiten:
/etc/hosts.allow
|
#/etc/hosts.allow
#Erlaube alle Dienste für das lokale Netz
ALL:ALL:192.168.
# Erlaube SSH für alle außer 192.168.1.5 und alle Rechner von Micrsoft.com
sshd : ALL EXCEPT 192.168.1.5 .microsoft.com : ALLOW
#Erlaube SSH für das lokale Netz
sshd : 192.168.1.0/255.255.255.0 : ALLOW
#Alle bis hierin noch nicht behandelten Anfragen werden an root gemailt
ALL : ALL : (echo "Zugriff von %c auf %s" | mail -s "%d-Zugriff" root)
|
Ein Nachteil des TCP_Wrappers ist der fehlende Schutz vor
IP-Spoofing Attacken, in denen eine falsche Identität
anderer Rechner vorgetäuscht wird. Ein anderer Nachteil
ist, dass Dienste mit dem TCP_Wrapper zusammenarbeiten
müssen (Unterstützung der Bibliothek libwrap).
|