Galileo Computing < openbook > Galileo Computing - Professionelle Bücher. Auch für Einsteiger.
Professionelle Bücher. Auch für Einsteiger.

Inhaltsverzeichnis
Vorwort
Geleitwort des Fachgutachters
1 Einführung
2 Mathematische und technische Grundlagen
3 Hardware
4 Netzwerkgrundlagen
5 Betriebssystemgrundlagen
6 Windows
7 Linux und UNIX
8 Grundlagen der Programmierung
9 Konzepte der Programmierung
10 Software-Engineering
11 Datenbanken
12 Server für Webanwendungen
13 Weitere Internet-Serverdienste
14 XML
15 Weitere Datei- und Datenformate
16 Webseitenerstellung mit (X)HTML und CSS
17 Webserveranwendungen
18 JavaScript und Ajax
19 Computer- und Netzwerksicherheit
A Glossar
B Zweisprachige Wortliste
C Kommentiertes Literatur- und Linkverzeichnis
Stichwort

Download:
- ZIP, ca. 6,6 MB
Buch bestellen
Ihre Meinung?

Spacer
 <<   zurück
IT-Handbuch für Fachinformatiker von Sascha Kersken
Der Ausbildungsbegleiter
Buch: IT-Handbuch für Fachinformatiker

IT-Handbuch für Fachinformatiker
3., aktualisierte und erweiterte Auflage
1014 S., 34,90 Euro
Galileo Computing
ISBN 978-3-8362-1015-7
gp 13 Weitere Internet-Serverdienste
  gp 13.1 Namens- und Verzeichnisdienste
    gp 13.1.1 Der DNS-Server BIND
    gp 13.1.2 Der Verzeichnisdienst OpenLDAP
  gp 13.2 Sonstige Server
    gp 13.2.1 vsftpd, ein FTP-Server
    gp 13.2.2 inetd und xinetd
  gp 13.3 Zusammenfassung


Galileo Computing

13.2 Sonstige Server  downtop

In diesem Abschnitt wird noch kurz auf zwei andere Netzwerkserverdienste eingegangen: FTP und xinetd.


Galileo Computing

13.2.1 vsftpd, ein FTP-Server  downtop

Die theoretischen Grundlagen des File Transfer Protocols wurden bereits in Kapitel 4, Netzwerkgrundlagen, beschrieben. Da es sich um einen der ältesten Internetdienste handelt, gibt es unzählige Implementierungen von FTP-Servern. Leider sind die meisten von ihnen verhältnismäßig unsicher. Schließlich stammt ihr Grundkonzept aus einer Zeit, in der die Universitätsnetze beinahe unter sich waren und in der Regel nicht beabsichtigten, einander Schaden zuzufügen.

Ein moderner FTP-Server ist vsftpd (Very Secure File Transfer Protocol Daemon). Er ist Bestandteil zahlreicher Linux- und UNIX-Distributionen. Falls Ihre nicht dazu gehört oder wenn Sie eine neuere Version haben möchten, können Sie ihn unter http://vsftpd.beasts.org herunterladen. Wenn Sie ihn starten, ohne die Konfigurationsdatei zu editieren, wird er als Anonymous-FTP-Server ausgeführt, von dem Daten nur heruntergeladen werden können.

Falls Sie ein spezielleres Verhalten benötigen, müssen Sie die Konfigurationsdatei /etc/vsftpd.conf bearbeiten. Es gibt zahlreiche mögliche Konfigurationsdirektiven. In der Datei selbst stehen recht ausführliche Kommentare dazu; noch mehr Informationen erhalten Sie auf der Manpage vsftpd.conf(5). [Die Zahl in Klammern steht für die Manual-Sektion. Geben Sie man 5 vsftpd ein, um Informationen zur Konfigurationsdatei zu erhalten. Ein einfaches man vsftpd ruft dagegen vsftpd(1) auf, die Manpage des Servers selbst. ] An dieser Stelle sollen nur ein paar Konfigurationsoptionen vorgestellt werden. Die Reihenfolge entspricht derjenigen in der Datei, wo sie zunächst auskommentiert stehen.

  • write_enable=YES|NO Legt fest, ob Schreibzugriffe generell gestattet sind oder nicht. Falls nichts anderes eingestellt wird, gilt dies zunächst einmal nur für lokale Benutzer.
  • ftpd_banner=Text Die Begrüßungsnachricht des Servers. Sie wird in den meisten FTP-Clients angezeigt, sobald ein Benutzer sich anmeldet. Oft enthält sie Informationen zu den Einstellungen und zur »Geschäftspolitik« des FTP-Servers. Beispiel:
ftpd_banner=Welcome to the lingoworld.de FTP Server.
  • local_enable=YES|NO Diese Direktive legt fest, ob sich neben den standardmäßig aktivierten anonymen Log-ins auch benannte User anmelden dürfen. Die Benutzerdaten stammen dabei aus der Datei /etc/passwd beziehungsweise den diversen PAM-Modulen.
  • chroot_local_user=YES|NO Aktivieren Sie diese Option, um den jeweils angemeldeten Benutzer mithilfe von chroot(1) in einen »Dateisystemkäfig« zu sperren. Das Home-Verzeichnis des entsprechenden Users wird damit zur absoluten Wurzel des Dateisystems. Vom Sicherheitsstandpunkt her ist dies sehr zu empfehlen, allerdings funktioniert diese Option nicht, wenn mehrere User einen gemeinsamen Zugriff auf FTP-Verzeichnisse benötigen.
  • anonymous_enable=YES|NO Legt fest, ob der Server anonyme Log-ins erlaubt. Die Voreinstellung ist YES.

Wenn Sie Änderungen an der Konfigurationsdatei vornehmen, müssen Sie den FTP-Server anschließend neu starten. Halten Sie sich dazu – sowie für den automatischen Start des Servers – an die allgemeinen Anleitungen zur Administration von UNIX-Programmen auf UNIX-Systemen.


Galileo Computing

13.2.2 inetd und xinetd  toptop

Manche Internet-Server werden nicht permanent benötigt, und es wäre deshalb eine gewisse Ressourcenvergeudung, sie permanent als Daemons laufen zu lassen. Die Alternative bietet ein Dienst, der bereits seit der »Internet-Steinzeit« für UNIX-Systeme zur Verfügung steht: der »Superdaemon« inetd. Er stellt die lauschenden Sockets für verschiedene TCP-Ports oder UDP-Dienste bereit und startet den jeweiligen Server, sobald eine Anfrage für diesen eintrifft. Einige ziemlich primitive Standarddienste kann er sogar selbst zur Verfügung stellen.

Früher war die Verwendung von inetd weit verbreitet. Selbst ältere Apache-Versionen besaßen eine Konfigurationsdirektive namens ServerType. Sie konnte die Werte stand-alone oder inetd annehmen, um den Webserver als Daemon zu betreiben beziehungsweise nur bei Bedarf zu starten.

Wegen diverser Design-Schwächen wurde der inetd inzwischen durch eine Neuimplementierung namens xinetd ersetzt. Da die Anleitungen vieler Server aber immer noch die Verhältnisse für inetd beschreiben, sollten Sie sich trotzdem beide Dienste anschauen.

inetd

Die Einstellungen für den inetd stehen in seiner Konfigurationsdatei /etc/inetd.conf. Jeder Eintrag steht in einer einzelnen Zeile und besteht aus diversen, durch Whitespace getrennten Feldern. Hier einige Beispiele:

echo stream tcp nowait root internal 
echo dgram  udp wait   root internal 
ftp  stream tcp nowait root /usr/sbin/tcpd in.ftpd -l -a

Die Felder haben folgende Bedeutung:

  • Dienstname – Aliasname des Ports beziehungsweise Dienstes gemäß /etc/services
  • Socket-Typ – Wie Sie bereits aus Kapitel 9, Konzepte der Programmierung, wissen, sind Sockets die Endpunkte einer Netzwerkverbindung. Es gibt zwei wichtige Arten: stream stellt eine zuverlässige Punkt-zu-Punkt-Verbindung durch die sogenannten Streaming-Sockets zur Verfügung, während dgram die Datagramm-Sockets zum verbindungslosen Senden einfacher Nachrichten bereitstellt. stream-Sockets gehören in aller Regel zu TCP, dgram-Sockets dagegen zu UDP.
  • Protokoll – Das Transportprotokoll: Möglich sind die beiden Werte tcp und udp. Einige Dienste, zum Beispiel echo, können sowohl über TCP als auch über UDP verwendet werden
  • Nebenläufigkeit – Nas nächste Feld enthält den Wert nowait, wenn der entsprechende Server mehrere Anfragen gleichzeitig verarbeiten kann, oder wait, wenn jeder Verbindungsversuch das Ende der vorherigen Verbindung abwarten muss. Da UDP einzelne Nachrichten sendet, genügt für dieses Protokoll stets wait, während die meisten TCP-Dienste nowait verwenden. Einzelheiten zum Thema TCP-Nebenläufigkeit erfahren Sie in den Abschnitten zur System- und Netzwerkprogrammierung in Kapitel 9, Konzepte der Programmierung, sowie im Rahmen der Diskussion über die Apache-MPMs im vorigen Kapitel.
  • UID – Die User-ID, unter der der Dienst ausgeführt wird. Die privilegierten Ports 0 bis 1023 dürfen nur durch den User root geöffnet werden, weshalb dieser Name auch in den Beispielzeilen zu sehen ist
  • Kommando – Hier ist zu lesen, was passiert, wenn der inetd eine TCP-Verbindungsanfrage beziehungsweise ein UDP-Datagramm für den jeweiligen Port oder Dienst empfängt. Der Wert internal bedeutet, dass inetd die Anfrage selbst verarbeitet. tcpd ist der TCP-Wrapper, ein weiterer Vermittler, der dann seinerseits den eigentlichen Server startet. Die dritte Möglichkeit ist der Pfad eines Serverprogramms.

xinetd

Der xinetd wurde als Ersatz für den klassischen inetd geschrieben. Seine Konfigurationsdateien besitzen ein aufwendigeres Format, da er auch mehr Möglichkeiten bietet. Er verwendet zunächst eine Datei namens /etc/xinetd.conf für allgemeine Voreinstellungen. Hier ein Beispiel für die Hauptkonfigurationsdatei:

defaults 
{ 
     log_type        = FILE /var/log/xinetd.log 
     log_on_success  = HOST EXIT DURATION 
     log_on_failure  = HOST ATTEMPT 
#    only_from       = localhost 
     instances       = 30 
     cps             = 50 10 
 
#    interface       = 127.0.0.1 
 
} 
includedir /etc/xinetd.d

Zeilen, die mit einem #-Zeichen beginnen, sind Kommentare. Zwei Einstellungen werden auf diese Weise standardmäßig auskommentiert: only_from zur Beschränkung von Zugriffen auf die angegebenen Client-Hosts beziehungsweise -Teilnetze sowie interface zur Verwendung bestimmter Netzwerkschnittstellen. Per Voreinstellung darf also jeder beliebige Host über alle Netzwerkschnittstellen zugreifen.

log_type legt fest, ob Protokolldaten – wie hier gezeigt – in eine Datei oder ins Syslog geschrieben werden. log_on_success bestimmt, welche Daten bei erfolgreichen Zugriffen geloggt werden sollen; im vorliegenden Beispiel Hostname, Verbindungsende und Verbindungsdauer. log_on_failure legt fest, welche Daten bei fehlgeschlagenen Zugriffen protokolliert werden – hier der Hostname und der Zugriffsversuch selbst.

Die Einstellung instances beschränkt die Anzahl gleichzeitig aktiver Server-Instanzen. cps (Clients per Second) besitzt zwei Werte – die Höchstzahl der Zugriffe pro Sekunde sowie die Wartezeit in Sekunden, falls diese überschritten wird.

Die includedir-Zeile bindet alle Dateien unterhalb des Verzeichnisses /etc/xinetd.d ein; diese enthalten die Einstellungen für die einzelnen Serverdienste. Das nachfolgende Beispiel zeigt die Datei /etc/xinetd.d/daytime. Es handelt sich um einen in RFC 867 definierten Internet-Standarddienst, der jede TCP- oder UDP-Anfrage auf Port 13 mit Datum und Uhrzeit beantwortet. Die UDP-Version besitzt eine eigene Konfigurationsdatei namens /etc/xinetd.d/daytime-udp. Hier der Inhalt der Datei:

service daytime 
{ 
     type        = INTERNAL 
     id          = daytime-stream 
     socket_type = stream 
     protocol    = tcp 
     user        = root 
     wait        = no 
     disable     = yes 
     FLAGS       = IPv6 IPv4 
}

Die Zeilen haben folgende Bedeutung:

  • service – Name des Dienstes gemäß /etc/services
  • type – Typ des Serverdienstes. INTERNAL bedeutet, dass der Dienst von xinetd selbst ausgführt wird. Weitere wichtige Typen sind RPC für NFS und NIS, TCPMUX für TCP-Multiplexing nach RFC 1078 sowie UNLISTED für benutzerdefinierte Serverdienste, deren Portnummern nicht in /etc/services stehen.
  • id – ID des Dienstes, ein eindeutiger Wert. Bei Diensten wie daytime, die sowohl TCP als auch UDP unterstützen, wird deshalb wie hier stream beziehungsweise dgram zur Unterscheidung angehängt; bei allen anderen Servern genügt der einfache Dienstname.
  • socket_type – Socket-Typ, stream oder dgram
  • protocol – Transportprotokoll, tcp oder udp
  • user – User-ID, unter der der Server ausgeführt wird
  • wait – Nebenläufigkeits-Konfiguration. Der Wert no entspricht dem inetd-Parameter nowait, während yes der Einstellung wait entspricht.
  • disable – Falls yes eingestellt wird, ist der Dienst standardmäßig deaktiviert. Kommentieren Sie die Zeile mittels # aus, um diesen Server zu testen.
  • FLAGS – Legt fest, mit welchen IP-Versionen der Server zusammenarbeitet; im vorliegenden Beispiel werden beide unterstützt. Der IPv6-Support ist eine der wichtigsten Neuerungen gegenüber inetd.

Außer daytime kann xinetd noch folgende Dienste selbst ausführen:

  • echo (Port 7) liefert jede an den Server gesendete Nachricht wörtlich wieder zurück. Es handelt sich also um eine Art erweitertes ping über höhere Transportprotokolle.
  • time (Port 37) ist ein weiterer Zeit-Server. Im Gegensatz zu daytime sendet er die Zeitinformation nicht als String, sondern numerisch, sodass Sie dieses Protokoll nicht mit telnet testen können – die Zeichen-Umsetzung des gelieferten 32-Bit-Integers ist nicht im Klartext lesbar.
  • chargen (Port 19) erzeugt einen Endlos-Zeichenstrom. In der Regel wird der von Menschen lesbare Bereich des ASCII-Zeichensatzes in einer Endlosschleife wiederholt. So lässt sich etwa die Zuverlässigkeit einer Netzwerkverbindung überprüfen.
  • discard (Port 9) ist die Netzwerk-Entsprechung von /dev/null: Was auch immer Sie an diesen Dienst senden, wird verworfen.


Ihr Kommentar

Wie hat Ihnen das <openbook> gefallen? Wir freuen uns immer über Ihre freundlichen und kritischen Rückmeldungen.






 <<   zurück
  
  Zum Katalog
Zum Katalog: IT-Handbuch für Fachinformatiker






IT-Handbuch für Fachinformatiker
bestellen
 Ihre Meinung?
Wie hat Ihnen das <openbook> gefallen?
Ihre Meinung

 Buchtipps
Zum Katalog: Linux






 Linux


Zum Katalog: Konzepte und Lösungen für Microsoft-Netzwerke






 Konzepte und
 Lösungen für
 Microsoft-Netzwerke


Zum Katalog: Webseiten programmieren und gestalten






 Webseiten
 programmieren
 und gestalten


Zum Katalog: C/C++






 C/C++


Zum Katalog: Java ist auch eine Insel






 Java ist auch
 eine Insel


Zum Katalog: Einstieg in SQL






 Einstieg in SQL


 Shopping
Versandkostenfrei bestellen in Deutschland und Österreich
InfoInfo




Copyright © Galileo Press 2008
Für Ihren privaten Gebrauch dürfen Sie die Online-Version natürlich ausdrucken. Ansonsten unterliegt das <openbook> denselben Bestimmungen, wie die gebundene Ausgabe: Das Werk einschließlich aller seiner Teile ist urheberrechtlich geschützt. Alle Rechte vorbehalten einschließlich der Vervielfältigung, Übersetzung, Mikroverfilmung sowie Einspeicherung und Verarbeitung in elektronischen Systemen.


[Galileo Computing]

Galileo Press, Rheinwerkallee 4, 53227 Bonn, Tel.: 0228.42150.0, Fax 0228.42150.77, info@galileo-press.de