%
% Xinetd.tex
% Last update: $Id$
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%% Kapitel Xinetd %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\chapter{Der Xinetd-Service}
\index{Xinetd}
\marklabel{MENUSYSTEMXINETD}{}


\section{Einleitung}

    \emph{'Xinetd'} ist ein quelloffener Superserver, der auf vielen
    Unix-Systemen l"auft. Xinetd steht f"ur extended internet daemon
    und verwaltet verschiedene Internetdienste wie FTP-Server,
    HTTP-Server und andere.

    Der Xinetd stellt verschiedene Zugangskontrollen
    zur Verf"ugung, wie zum Beispiel TCP-Wrapper-Zugangskontrolllisten,
    au"serdem vielf"altige Log-F"ahigkeiten und die M"oglichkeit, Dienste
    nach Uhrzeit zur Verf"ugung zu stellen. Xinetd kann das System in der
    Anzahl der zu startenden Server/Daemons einschr"anken und besitzt
    Verteidigungsmechanismen gegen Portscanner und andere Angriffsarten.



\section{Das Men"u im Setup-Programm}

    Das Men"u im Setup-Programm ist wie folgt aufgebaut:

    \mbox {}

\begin{tabular}{llll}
    & 1. &  Service administration \\
    \end{tabular}
\eline
    \begin{tabular}{p{1cm}llll}
    & x. &  Xinetd - administration \\
    \end{tabular}
\eline
    \begin{tabular}{p{2cm}lll}
    & 1. & & View documentaion \\
    & 2. & & Edit configuration \\
    & 3. & & Show status \\
    & 4. & & Stop Xinetd \\
    & 5. & & Start Xinetd \\
    & 6. & & Advanced configuration file handling \\
%    & 0. & & Exit \\
    \end{tabular}

    \mbox {}



\section{"Anderung der Konfiguration}

    Die Konfiguration kann "uber den Men"upunkt
    \glqq{}Edit configuration\grqq{}
    ge"andert werden.

    Nachdem der Editor beendet wurde wird die Konfiguration mit dem
    eischk-Programm automatisch auf syntaktische und teilweise auch
    auf semantische Fehler gepr"uft.
    Werden Fehler festgestellt, so werden diese gemeldet und der
    Benutzer zur Korrektur aufgefordert. Wird eine solche Korrektur
    nicht durchgef"uhrt, so kann es zu unvorhersehbaren Fehlfunktionen
    bei den Diensten kommen.

    Es wird zus"atzlich gefragt, ob die Konfiguration angewendet
    (aktiviert) werden soll. Wird dieses verneint, so unterbleibt
    die Aktivierung.

    Wird die Aktivierung best"atigt, werden "uber ein Skript die
    durchgef"uhrten "Anderungen wirksam gemacht.

\section{Die Konfigurationsdatei}

    Die Konfigurationsdatei \texttt{(/etc/config.d/xinetd)}
    enth"alt in einer Reihe von Abschnitten die Parameter, die die
    einzelnen Dienste parametrisieren bzw festlegen, ob ein Dienst
    "uberhaupt zur Verf"ugung gestellt wird oder nicht.


\section{Die Parameter}


\subsection{Xinetd (general settings)}

\begin{description}

\config{START\_XINETD}
{START\_XINETD}
{STARTXINETD}
{
    Soll  der  Xinetd-Daemon gestartet werden (yes) oder nicht (no)?

    G"ultige Werte: yes,no

    Standardeinstellung: \texttt{START\_XINETD='no'}
}


\end{description}

\subsection{Services (settings)}

\begin{description}


\config{XINETD\_TIME\_SERVICE}
{XINETD\_TIME\_SERVICE}
{XINETDTIMESERVICE}
{
    Soll der sogenannte Time Service (RFC 868) sowohl via UPD und TCP
    bereitgestellt werden (yes) oder nicht (no)?
    "uber diesen Dienst auf Port 37 k"onnen andere Rechner einen
    Zeitabgleich mit dem \eisfair-Server durchf"uhren.

    G"ultige Werte: yes,no

    Standardeinstellung: \texttt{XINETD\_TIME\_SERVICE='no'}
}


\config{XINETD\_DAYTIME\_SERVICE}
{XINETD\_DAYTIME\_SERVICE}
{XINETDDAYTIMESERVICE}
{
    Soll der sogenannte Daytime Service (RFC 867) sowohl via UPD und TCP
    bereitgestellt werden (yes) oder nicht (no)?
    "uber diesen Dienst auf Port 13 k"onnen andere Rechner die
    akutelle Uhrzei und das Datum in einer Zeile
    vom \eisfair-Server abfragen.

    G"ultige Werte: yes,no

    Standardeinstellung: \texttt{XINETD\_DAYTIME\_SERVICE='no'}
}


\config{XINETD\_ECHO\_SERVICE}
{XINETD\_ECHO\_SERVICE}
{XINETDECHOSERVICE}
{
    Soll der sogenannte Echo Service (RFC 862)  sowohl via UPD und TCP
    bereitgestellt werden (yes) oder nicht (no)?
    Aufgabe des Dienstes auf Port 7 ist es, alle empfangenen Daten
    unver"andert vom \eisfair-Server zum Client zur"uckzusenden.

    G"ultige Werte: yes,no

    Standardeinstellung: \texttt{XINETD\_ECHO\_SERVICE='no'}
}


\config{XINETD\_DISCARD\_SERVICE}
{XINETD\_DISCARD\_SERVICE}
{XINETDDISCARDSERVICE}
{
    Soll der sogenannte Discard Service (RFC 863) sowohl via UPD und TCP
    bereitgestellt werden (yes) oder nicht (no)?
    Aufgabe des Dienstes auf Port 9 ist es, alle empfangenen Daten zu
    verwerfen. Es wird keine Antwort vom \eisfair-Server gesendet

    G"ultige Werte: yes,no

    Standardeinstellung: \texttt{XINETD\_DISCARD\_SERVICE='no'}
}


\config{XINETD\_CHARGEN\_SERVICE}
{XINETD\_CHARGEN\_SERVICE}
{XINETDCHARGENSERVICE}
{
    Soll der sogenannte Chargen Service (RFC 864) sowohl via UPD und TCP
    bereitgestellt werden (yes) oder nicht (no)?
    "uber diesen Dienst auf Port 19 k"onnen andere Rechner
    Testen und Debuggen mit dem \eisfair-Server durchf"uhren.

    G"ultige Werte: yes,no

    Standardeinstellung: \texttt{XINETD\_CHARGEN\_SERVICE='no'}
}

\end{description}



\section{Die Funktion des Xinetd}

    Der Xinetd ist als Superserver konzipiert und kann gewissen
    Dienste starten, wenn sie angefragt werden. Dies kann insbesondere
    dann ein Vorteil sein, wenn Speicher knapp ist; damit werden
    dann Dienste nur gestartet, wenn sie auch wirklich gebraucht werden.

    Beispielsweise wird der telnetd erst dann gestartet, wenn eine
    Anfrage auf dem zu telnetd geh"orenden Port ankommt. So ist es
    auch zu erkl"aren, dass -- bis auf die Zeitpunkte, zu denen ein
    User per Telnet eingeloggt ist -- nie ein telnetd-Prozess in der
    Prozessliste zu finden ist.



\section{Konfiguration der Services f"ur den Xinetd}

    Es wurde die Bearbeitung sogenannter <service>.expert-Dateien
    implementiert. Falls eine Datei <service>.expert (z.B.
    ftp.expert) im Verzeichnis /etc/Xinetd.d existiert,
    so wird diese Datei in die originale Servicedatei
    <service> eingef"ugt.

    Das folgende Beispiel zeigt, was passiert.

    Originale Servicedatei /etc/xinetd.d/ftp

\begin{verbatim}
  service ftp
  {
    server = /usr/sbin/pure-ftpd
    server_args =  -l unix -A -E -k 95% -I 15 -c 20 -S 21
    socket_type = stream
    protocol = tcp
    wait = no
    user = root
    disable = no
  }
\end{verbatim}

  Expertdatei /etc/xinetd.d/ftp.expert

\begin{verbatim}
    per_source = 2
    only_from = 192.168.1.11
\end{verbatim}

  Zusammengef"ugte Datei /etc/xinetd.d/ftp

\begin{verbatim}
  service ftp
  {
  #B Expert
    per_source = 2
    only_from = 192.168.1.11
  #E Expert
    server = /usr/sbin/pure-ftpd
    server_args =  -l unix -A -E -k 95% -I 15 -c 20 -S 21
    socket_type = stream
    protocol = tcp
    wait = no
    user = root
    disable = no
  }
\end{verbatim}


    Die Datei /etc/xinetd.d/ftp.expert wurde in die
    Datei /etc/xinetd.d/ftp nach der "offnenden geschweiften
    Klammer aber vor dem Inhalt der Originaldatei, eingef"ugt.

    Zwei spezielle Kommentarzeilen wurde hinzugef"ugt
\begin{verbatim}
  #B Expert
  #E Expert
\end{verbatim}
    Siehe:
    (\link{http://www.die.net/doc/linux/man/man5/xinetd.conf.5.html}{Man-xinetd})
    f"ur eine Beschreibung der Xinetd Konfigurationsdatei.

    Das obige Beispiel limitiert den Zugriff via ftp auf
    eine einzige IP-Adresse (only\_from = 192.168.1.11)
    und limitiert zus"atzlich die Anzahl der Verbindungen
    auf 2 (per\_source = 2).

    Achtung:
    Bitte vorsichtig mit dieser Option umgehen, da es
    so sehr einfach ist eine fehlerhafte Konfigurationsdatei
    f"ur den Xinetd zu erzeugen.
    Bitte in Datei /var/log/messages nachschauen, ob
    der Xinetd erfolgreich startet.

    Bitte auf keinen Fall die beiden speziellen Kommentarzeilen
    ver"andert oder l"oschen. Sie sind sehr wichtig,
    wenn <service>.expert-Dateien gel"oscht bzw. ver"andert
    werden und dadurch nat"urlich auch die Inhalte der
    Servicedatei ge"andert werden m"ussen.

    Die Behandlung der <service>.expert-Dateien wird bei
    jedem Start des Xinetd durchgef"uhrt (z.B. bei
    /etc/init.d/xinetd start).

    Die Idee f"ur <service>.expert-Dateien stammt von
    Tobias Becker.

