TCP Wrapper ist ein rechnerbasiertes Zugriffskontrollsystem, das die Fähigkeiten von Abschnitt 29.2, „Der inetd „Super-Server““ erweitert. Beispielsweise können Verbindungen protokolliert, Nachrichten zurückgesandt oder nur interne Verbindungen angenommen werden. Weitere Informationen über TCP Wrapper und dessen Funktionen finden Sie in tcpd(8).
TCP Wrapper sollten nicht als Ersatz für eine ordentlich konfigurierte Firewall angesehen werden. Stattdessen sollten TCP Wrapper in Verbindung mit einer Firewall und anderen Sicherheitsmechanismen eingesetzt werden, um bei der Umsetzung einer Sicherheitsrichtlinie eine weitere Sicherheitsschicht zu bieten.
Um TCP Wrapper unter FreeBSD zu
aktivieren, fügen Sie die folgenden Zeilen in
/etc/rc.conf
ein:
inetd_enable="YES" inetd_flags="-Ww"
Anschließend muss /etc/hosts.allow
richtig konfiguriert werden.
Im Gegensatz zu anderen Implementierungen der
TCP Wrapper wird unter FreeBSD vom
Gebrauch der Datei hosts.deny
abgeraten. Die Konfiguration sollte sich vollständig in
/etc/hosts.allow
befinden.
In der einfachsten Konfiguration werden Dienste abhängig
von den Optionen in /etc/hosts.allow
erlaubt oder gesperrt. Unter FreeBSD wird in der Voreinstellung
jeder von inetd gestartete Dienst
erlaubt.
Eine Konfigurationszeile ist wie folgt aufgebaut:
Dienst : Adresse : Aktion
.
Dienst
ist der von
inetd gestartete Dienst (auch
Daemon genannt). Die Adresse
ist ein
gültiger Rechnername, eine IP-Adresse oder
eine IPv6-Adresse in Klammern
([
]
). Der Wert
allow
im Feld Aktion
erlaubt Zugriffe, der Wert deny
verbietet
Zugriffe. Die Zeilen in hosts.allow
werden für jede Verbindung der Reihe nach abgearbeitet.
Trifft eine Zeile auf eine Verbindung zu, wird die
entsprechende Aktion ausgeführt und die Abarbeitung ist
beendet.
Um beispielsweise einkommende
POP3-Verbindungen für den Dienst
mail/qpopper zu erlauben, sollte
hosts.allow
um die nachstehende Zeile
erweitert werden:
# This line is required for POP3 connections: qpopper : ALL : allow
Jedes Mal, wenn diese Datei bearbeitet wird, muss inetd neu gestartet werden:
#
service inetd restart
TCP Wrapper besitzen weitere Optionen, die bestimmen, wie Verbindungen behandelt werden. In einigen Fällen ist es gut, wenn bestimmten Rechnern oder Diensten eine Nachricht geschickt wird. In anderen Fällen soll vielleicht der Verbindungsaufbau protokolliert oder eine E-Mail an einen Administrator versandt werden. Oder ein Dienst soll nur für das lokale Netz bereitstehen. Dies alles ist mit so genannten Wildcards, Metazeichen und der Ausführung externer Programme möglich.
Stellen Sie sich vor, eine Verbindung soll verhindert
werden und gleichzeitig soll dem Rechner, der die Verbindung
aufgebaut hat, eine Nachricht geschickt werden. Solch eine
Aktion ist mit twist
möglich.
twist
führt beim Verbindungsaufbau ein
Kommando oder ein Skript aus. Ein Beispiel ist in
hosts.allow
enthalten:
# Alle anderen Dienste sind geschützt ALL : ALL \ : severity auth.info \ : twist /bin/echo "You are not welcome to use %d from %h."
Für jeden Dienst, der nicht vorher in
hosts.allow
konfiguriert wurde, wird die
Meldung „You are not allowed to use
daemon name
from
hostname
.“ zurückgegeben.
Dies ist nützlich, wenn die Gegenstelle sofort benachrichtigt
werden soll, nachdem die Verbindung getrennt wurde. Der Text
der Meldung muss in Anführungszeichen
("
) stehen.
Ein so konfigurierter Server ist anfällig für Denial-of-Service-Angriffe. Ein Angreifer kann die gesperrten Dienste mit Verbindungsanfragen überfluten.
Eine weitere Möglichkeit bietet spawn
.
Wie twist
verbietet spawn
die Verbindung und führt externe Kommandos aus. Allerdings
sendet spawn
dem Rechner keine Rückmeldung.
Sehen Sie sich die nachstehende Konfigurationsdatei an:
# Verbindungen von example.com sind gesperrt: ALL : .example.com \ : spawn (/bin/echo %a from %h attempted to access %d >> \ /var/log/connections.log) \ : deny
Damit sind Verbindungen von der Domain *.example.com
gesperrt.
Jeder Verbindungsaufbau wird zudem in
/var/log/connections.log
protokolliert.
Das Protokoll enthält den Rechnernamen, die
IP-Adresse und den Dienst, der angesprochen
wurde. In diesem Beispiel wurden die Metazeichen
%a
und %h
verwendet.
Eine vollständige Liste der Metazeichen finden Sie in
hosts_access(5).
Die Wildcard ALL
passt auf jeden
Dienst, jede Domain oder jede IP-Adresse.
Eine andere Wildcard ist PARANOID
. Sie
passt auf jeden Rechner, dessen
IP-Adresse möglicherweise gefälscht ist.
Dies ist beispielsweise der Fall, wenn der Verbindungsaufbau
von einer IP-Adresse erfolgt, die nicht zu
dem übermittelten Rechnernamen passt. In diesem Beispiel
werden alle Verbindungsanfragen zu
Sendmail abgelehnt, wenn die
IP-Adresse nicht zum Rechnernamen
passt:
# Block possibly spoofed requests to sendmail: sendmail : PARANOID : deny
Die Wildcard PARANOID
wird
Verbindungen ablehnen, wenn der Client oder der Server eine
fehlerhafte DNS-Konfiguration
besitzt.
Weitere Informationen über Wildcards und deren Funktion finden Sie in hosts_access(5).
Wenn Sie neue Einträge zur Konfiguration hinzufügen,
sollten Sie sicherstellen, dass nicht benötigte Einträge in
hosts.allow
auskommentiert
werden.
Wenn Sie Fragen zu FreeBSD haben, schicken Sie eine E-Mail an
<de-bsd-questions@de.FreeBSD.org>.
Wenn Sie Fragen zu dieser Dokumentation haben, schicken Sie eine E-Mail an
<de-bsd-translators@de.FreeBSD.org>.