» SelfLinux » Sicherheit » Grundlagen Sicherheit » Abschnitt 6 SelfLinux-0.10.0
zurück   Startseite Kapitelanfang Inhaltsverzeichnis GFDL   weiter

SelfLinux-Logo
Dokument Grundlagen Sicherheit - Abschnitt 6 Revision: 1.1.2.11
Autoren:  Gabriel Welsche,  Karsten Schulz
Formatierung:  Matthias Hagedorn
Lizenz:  GFDL
 

6 Superserver xinetd


6.1 Der Superserver inetd

Superserver sind für die Verwaltung vieler verschiedener Dienste (FTP, POP3, Telnet, Finger) zuständig. Erst wenn ein Dienst benötigt wird, startet der Superserver ein zugeordnetes Programm. Im Falle von FTP sieht das folgendermaßen aus: In der Konfigurationsdatei /etc/inetd.conf wird der FTP-Port dem FTP-Daemon zugewiesen. Wenn jemand versucht, eine Verbindung zu diesem Port aufzubauen, startet der Superserver den zugewiesenen FTP-Daemon. (Hinweis: Die Zuweisung der Port-Nummern erfolgt in /etc/services)



6.2 Zugriffssteuerung mit TCP_Wrapper

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).



6.3 Die bessere Alternative xinetd

Der Superserver xinetd ist eine Weiterentwicklung des inetd-Konzeptes mit umfangreichen Sicherheitsoptionen. Es wurden zahlreiche Erweiterungen in folgenden Bereichen vorgenommen:

  • Zugriffskontrolle
  • Protokollierung
  • Dienst-Weiterleitung
  • Schutz vor DOS Attacken
  • IPv6 Unterstützung

Zugriffskontrolle

Netzwerkanfragen aus nicht vertrauenswürdigen Netzwerkbereichen können aufgrund ihrer Ursprungsadresse abgelehnt werden (ähnlich TCP_Wrapper). Die weitere Nutzung der Dateien /etc/hosts.allow und /etc/hosts.deny ist möglich. Außerdem unterstützt xinetd eine Zeitbegrenzung für Dienste (access-time). Es können sowohl die maximalen Netzwerkverbindungen für einen Client (per_source) als auch auch für einen Dienst (instances) limitiert werden.

Log-Funktionen

Die Protokollierung erfolgt entweder mittels syslogd oder in separaten Dateien. Im ersten Fall, sind verschiedene Log-Level für jeden einzelnen Netzwerkdienst möglich. Neben Benutzerkennung (userID) und Server-Prozessidentifikation (PID) kann auch die Client-IP (HOST) und die Dauer eine Verbindung protokolliert werden. Ausserdem beinhaltet der xinetd umfangreiche Funktionen zur Darstellung fehlgeschlagener Verbindungsanfragen.

Dienst-Weiterleitung

TCP-Datenströme können zu einem anderen Rechner weitergeleitet werden (redirect). Es können auch Dienste weitergeleitet werden, die normalerweise von Außen nicht erreichbar sind. Dies ist eine mögliche Schwachstelle, man sollte dieses Feature daher nur sehr überlegt einsetzen!

Schutz vor DOS Attacken

Durch eine Begrenzung der Verbindungsanzahl verlieren so genannte "PORT-Bomben" ihre Wirkung (per_source, instances).
Wenn die Protokollierung nicht über den syslogd sondern in separaten Dateien erfolgt, kann eine Überflutung dieser Dateien durch Begrenzungen verhindert werden (log_type FILE datei soft_limit hard_limit).

IPv6 Unterstützung

Seit Version 2.1.8.8.pre wird das IPv6 Protokoll unterstützt.


6.4 Konfigurationsbeispiel (/etc/xinetd.conf):

/etc/xinetd.conf
1  defaults
2  {
3     instances  = 10
4     log_type   = SYSLOG auth
5     log_on_success = HOST USERID DURATION
6     log_on_failure = HOST USERID
7     only_from = 192.168.1.0/24
8  }
9
10 service ssh
11 {
12    socket_type  = stream
13    protocol     = tcp
14    wait         = no
15    user         = root
16    server       = /sbin/sshd
17    server_args  = -i
18 }
19
20 service ftp
21 {
22    socket_type  = stream
23    protocol     = tcp
24    wait         = no
25    user         = root
26    redirect     = 192.168.1.7 21
27    per_source   = 2
28    access_time  = 9:00-14:00
29    log_type     = FILE /var/log/ftp_redir
30 }
     

Im obersten Block stehen die Standardeinstellungen. Mit instances wird die Anzahl der einkommenden Verbindungen pro Netzwerkdienst auf 10 limitiert. In den Zeilen 4-6 wird die Protokollierung durch den Syslogd eingestellt. Für erfolgreiche Verbindungen (Zeile 5) wird die IP-Adresse des Client, die Benutzerkennung des Client-Prozesses und die Dauer der Verbindung festgehalten, bei fehlerhaften Verbindungsaufbau beschränkt sich die Protokollierung auf die IP-Adresse und UserID. In Zeile 7 wird der Zugriff auf einen Teil des lokalen Netzwerkes beschränkt.

In den Zeilen 10 bis 18 wird der ssh-Dienst konfiguriert, die Parameter sollten selbsterklärend sein.

Im letzten Block sind die Einstellungen des FTP-Dienstes zu finden. Alle Anfragen werden auf einen anderen Rechner mit der IP-Adresse 192.168.1.7 weitergeleitet (Zeile 26). Außerdem werden pro Client nur 2 Verbindungen zugelassen (Zeile 27) und auf einen Zeitraum zwischen 9:00 und 14:00 Uhr beschränkt. Die Protokollierung erfolgt in der Datei /var/log/ftp_redir (Zeile 29).




zurück   Seitenanfang Startseite Kapitelanfang Inhaltsverzeichnis GFDL   weiter