xinetd.conf

Diese Seite ist noch nicht fertig!

xinetd.conf - Extended Internet Service Daemon Konfigurationsdatei

Mit dem Super-Server xinetd können die Services gezielter freigegeben werden, als das mit dem Standard-inetd möglich wäre. Man muss allerdings ein paar Besonderheitem beachten.

BottomTop 

Die Datei enthält Einträge in der Form:
service <service_name>
{
<Attribut> <Zuordnungsoperator> <Wert> [<Wert>] ......
}

Einträge in spitzen Klammern "<" und ">" sind Text-Angaben. Wenn sie nicht durch andere Symbole relativiert werden, sind sie zwingend. Der Inhalt ist vom Kontext abhängig.
Als Zuweisungsoperatoren sind "=", "+=" und "-=" zulässig. Die meisten Attribute unterstützen nur den einfachen Zuweisungsoperator "=". Attribute, die einen Satz von Werten erlauben, unterstützen alle Zuweisungsoperatoren. Bei diesen Attributen wird mit "+=" zu den vorhandenen Werten ein neuer hinzugefügt, und mit "-=" ein Wert entfernt.
Angaben in eckigen Klammern "[" und "]" sind optional.
Bei Parametern, die durch ein Pipe-Symbol "|" getrennt sind, muss ein möglicher Parameter angegeben werden.
Liste der verfügbaren Attribute:
id = <ID-String> Identifiziert den Service durch den String <ID-String>. Wird verwendet, wenn ein Service verschiedene Protokolle nutzen kann. z. B. time-dgram für den Time-Service mit UDP, time-stream für den Time-Service mit TCP. Per Default wird der Name des Dienstes als ID verwendet.
type = [RPC][INTERNAL][UNLISTED] Dieses Kommando kennzeichnet den Typ des Services. Wird das Type-Attribut verwendet, muss mindestens eine Option angegeben werden!
RPC = Remote Procedure Call
INTERNAL = ein vom xinet-Daemon zur Verfügung gestellter Dienst
UNLISTED = ein Dienst, der nicht als RPC-Dienst, interner inet-Dienst und nicht in /etc/services definiert ist
flags = [REUSE][INTERCEPT][NORETRY][IDONLY][NAMEINARGS][NODELAY] Setz Steuer-Optionen für diesen Service. Wird das Flag-Attribut verwendet, muss mindestens eine Option angegeben werden!
REUSE = Setzt das SO_REUSEADDR1) Flag auf den Service-Port.
INTERCEPT = Hört Pakete oder erlaubte Verbindungen ab, um zu Überprüfen, dass sie von erlaubten Rechnern stammen. Diese Option kann nicht für interne oder verzweigende Dienste verwendet werden.
NORETRY = Verhindert Wiederholungsversuche bei Verzweigungsfehlern.
IDONLY = Akzeptiert eine Verbindung nur dann, wenn der entfernte Rechner den User identifiziert. Dazu muss auf dem entfernten Rechner ein Identifikations-Server laufen, wie z. B. der identd. Die Verwendung dieser Option ist nur sinnvoll, wenn auch die USERID aufgezeichnet2) wird.
NAMEINARGS = Ist diese Option gesetzt, wird das erste Argument in server_args als argv[0] an das Server-Programm übergeben. Damit ist es möglich, den tcpd als Server anzugeben und das eigentliche Server-Programm in server_args, sowie es normalerweise bei inetd eingetragen wird.
NODELAY = Wenn der Dienst ein TCP-Service ist, wird das TCP_NODELAY1) Flag für diesen Service gesetzt. Bei allen anderen Diensten hat diese Option keine Auswirkungen.
socket_type = stream|dgram|raw|seqpacket Hier wird die Art der Übertragung festgelegt. Stream meint hier eine gesicherte Datenverbindung mit Handshake und Flusskontrolle.
dgram bezeichnet eine ungesicherte Datenverbindung ohne Handshake und Flusskontrolle, sogenanntes "fire and forget".
raw wird für Dienste verwendet, die direkten Zugriff auf den IP-Layer benötigen.
seqpacket wird für Dienste verwendet, die eine gesicherte sequentielle Datagrammübertragung benötigen.
protocol = <Ein Protokoll aus /etc/protocols> Definiert das Transportprotokoll.
Übliche Werte sind UDP für dgram-Dienste und TCP für stream-Dienste.
wait = yes|no Mit dieser Anweisung wird festgelegt, ob der Server-Dienst auf das Ende der Aktion wartet, oder ob er zur Bearbeitung einen Unterprozess startet und den Port weiter überwacht.
user = <User> Legt fest, mit welchen User-Rechten dieser Service läuft. Der User muss in /etc/passwd angelegt sein! Dieses Attribut hat keine Wirkung, wenn der xinetd nicht als Super-User gestartet wird.
group = <Gruppe> Legt fest, mit welchen Gruppen-Rechten dieser Service läuft. Die Gruppe muss in /etc/group angelegt sein! Ist dieses Attribut nicht gesetzt, wird die Gruppe des Users verwendet.
Dieses Attribut hat keine Wirkung, wenn der xinetd nicht als Super-User gestartet wird.
instances = <Wert>|UNLIMITED Legt die Anzahl der gleichzeitig möglichen Zugriffe auf diesen Dienst fest.
<Wert> begrenzt die Anzahl der gleichzeitigen Zugriffe auf diesen Dienst auf die angegebene Zahl.
UNLIMITED erlaubt unbegrenzten Zugriff auf den Dienst.
nice = <Wert> Definiert die Priorität des Dienstprogramms. Der Wert ist eine (wahrscheinlich negative) Zahl3).
server = <Service-Daemon> <Service-Daemon> gibt den vollständigen Pfad zu dem ausführbaren Server-Programm an.
Z. B.: server = /usr/sbin/in.telnetd
server_args = <Parameter> <Parameter> enthält die Parameter, die an das Dienstprogramm übergeben werden. Im Gegensatz zum "klassichen" inetd sollte der Name des Server-Programms hier nur angegeben werden, wenn das Flag NAMEINARGS gesetzt ist.
defaults Mit dieser Anweisung beginnt der Block mit den allgemeingültigen Anweisungen. Der Block ist durch geschweifte Klammern "{" und "}" begrenzt.
log_type = SYSLOG <syslog-facility> [<syslog-level>]
log_type = FILE <Pfad> [<soft_limit>] [<hard_limit>]
Mit dieser Anweisung wird festgelegt, wohin die Ausgabe der Protokollinformationen erfolgen soll. Mit SYSLOG erfolgt die Protokollierung über den Syslog-Dienst. Über den Parameter syslog-facilty4) wird die Kategorie definiert. Der optionale Parameter syslog-level4) definiert die Dringlichkeit der Meldung. Standard ist INFO.
Mit FILE erfolgt die Protokollierung in die mit <Pfad> angegebene Datei.
log_on_success = [PID][HOST][USERID][EXIT][DURATION] Erfolg ein Zugriff auf einen der von xinetd gesteuerten Services, dann werden die hier definierten Informatioenn protokolliert. PID ist die Prozess-ID, HOST die IP-Adresse, USERID ist die User-ID ;-), EXIT zeichnet das Ende und den End-Status der Verbindung, und DURATION die Dauer der Verbindung auf. Es können auch mehrere Parameter angegeben werden.
log_on_failure = [HOST][USERID][ATTEMPT][RECORD] Kommt die Verbindung nicht zustande, werden die hier definierten Informationen protokolliert. HOST und USERID siehe oben. Mit ATTEMPT wird die Tatsache, dass ein Zugriff versucht wurde, aufgezeichnet. Mit RECORD können bei einigen Diensten zusätzliche Informationen über den Verursacher aufgezeichnet werden. Es können auch mehrere Parameter angegeben werden.
disabled = <service-name> Mit diesem Befehl wird der Service <service-name> deaktiviert.
# disabled = <service-name> Durch die Raute # wird die disable-Anweisung aufgehoben. Der Service <service-name> ist also freigegeben.
service <service-name> Mit dieser Anweisung beginnt die Definition des Services <service-name>. Wie der defaults-Block sind auch die Service-Blöcke durch geschweifte Klammern begrenzt.
rpc_version = 1-3 Legt fest, welche Version/en der RPCs verwendet werden. Es wird ausschließlich für RPC-Dienste benötigt.

BottomTop 

Beispiel:

defaults
{
log_type = FILE /var/log/xinetd.log
log_on_success = HOST EXIT DURATION
log_on_failure = HOST ATTEMPT RECORD

disabled = echo
disabled = discard
disabled = daytime
disabled = chargen
disabled = time
# disabled = ftp
# disabled = telnet
disabled = nntp
disabled = smtp
# disabled = printer
# disabled = shell
# disabled = login
# disabled = exec
# disabled = talk
# disabled = ntalk
# disabled = pop2
# disabled = pop3
# disabled = imap2
disabled = uucp
disabled = tftp
disabled = bootps
# disabled = finger
disabled = systat
disabled = netstat
disabled = ident
disabled = rstatd
# disabled = rusersd
# disabled = walld
disabled = http-rman
# disabled = rplay
disabled = netbios-ssn
disabled = netbios-ns
# disabled = swat
# disabled = rsync

}

service echo
{
socket_type = stream
protocol = tcp
wait = no
user = root
type = INTERNAL
id = echo-stream
}

service echo
{
socket_type = dgram
protocol = udp
wait = yes
user = root
type = INTERNAL
id = echo-dgram
}

service discard
{
socket_type = stream
protocol = tcp
wait = no
user = root
type = INTERNAL
id = discard-stream
}

service discard
{
socket_type = dgram
protocol = udp
wait = yes
user = root
type = INTERNAL
id = discard-dgram
}

service daytime
{
socket_type = stream
protocol = tcp
wait = no
user = root
type = INTERNAL
id = daytime-stream
}

service daytime
{
socket_type = dgram
protocol = udp
wait = yes
user = root
type = INTERNAL
id = daytime-dgram
}

service chargen
{
socket_type = stream
protocol = tcp
wait = no
user = root
type = INTERNAL
id = chargen-stream
}

service chargen
{
socket_type = dgram
protocol = udp
wait = yes
user = root
type = INTERNAL
id = chargen-dgram
}

service time
{
socket_type = stream
protocol = tcp
wait = no
user = root
type = INTERNAL
id = time-stream
}

service time
{
socket_type = dgram
protocol = udp
wait = yes
user = root
type = INTERNAL
id = time-dgram
}

service ftp
{
socket_type = stream
protocol = tcp
wait = no
user = root
log_on_failure += USERID
server = /usr/sbin/proftpd
instances = 30
bind = 192.168.100.13
}

service telnet
{
socket_type = stream
protocol = tcp
wait = no
user = root
only_from = 127.0.0.0/8 192.168.100.0/24
log_on_success += USERID
log_on_failure += USERID
server = /usr/sbin/in.telnetd
}

#service nntp
#{
# socket_type = stream
# protocol = tcp
# wait = no
# user = news
# server = /usr/sbin/leafnode
#}
service smtp
{
socket_type = stream
protocol = tcp
wait = no
user = root
server = /usr/sbin/sendmail
server_args = -bs
bind = 192.168.100.10
}

#service printer
#{
# socket_type = stream
# protocol = tcp
# wait = no
# user = root
# server = /usr/bin/lpd
# server_args = -i
#}

service shell
{
socket_type = stream
protocol = tcp
wait = no
user = root
only_from = 127.0.0.0/8 192.168.100.0/24
log_on_success += USERID
log_on_failure += USERID
server = /usr/sbin/in.rshd
server_args = -aL
}

service login
{
socket_type = stream
protocol = tcp
wait = no
user = root
only_from = 127.0.0.0/8 192.168.100.0/24
log_on_success += USERID
log_on_failure += USERID
server = /usr/sbin/in.rlogind
server_args = -a
}

service exec
{
socket_type = stream
protocol = tcp
wait = no
user = root
only_from = 127.0.0.0/8 192.168.100.0/24
log_on_success += USERID
log_on_failure += USERID
server = /usr/sbin/in.rexecd
}

service talk
{
socket_type = dgram
protocol = udp
wait = yes
user = root
server = /usr/sbin/in.talkd
}

service ntalk
{
socket_type = dgram
protocol = udp
wait = yes
user = root
server = /usr/sbin/in.talkd
}

service pop2
{
socket_type = stream
protocol = tcp
wait = no
user = root
server = /usr/sbin/ipop2d
bind = 192.168.100.10
}

service pop3
{
socket_type = stream
protocol = tcp
wait = no
user = root
server = /usr/sbin/popper
server_args = -s
bind = 192.168.100.10
}

service imap2
{
socket_type = stream
protocol = tcp
wait = no
user = root
server = /usr/sbin/imapd
bind = 192.168.100.10
}

service uucp
{
socket_type = stream
protocol = tcp
wait = no
user = uucp
server = /usr/lib/uucp/uucico
server_args = -l
}

service tftp
{
socket_type = dgram
protocol = udp
wait = yes
user = nobody
only_from = 127.0.0.0/8 192.168.100.0/24
log_on_success += USERID
log_on_failure += USERID
server = /usr/sbin/in.tftpd
server_args = /tftpboot
}

service bootps
{
socket_type = dgram
protocol = udp
wait = yes
user = root
server = /usr/sbin/bootpd
server_args = -c /tftpboot
}

service finger
{
socket_type = stream
protocol = tcp
wait = no
user = nobody
only_from = 127.0.0.0/8 192.168.100.0/24
log_on_success += USERID
log_on_failure += USERID
server = /usr/sbin/in.fingerd
server_args = -w
}

service systat
{
socket_type = stream
protocol = tcp
wait = no
user = nobody
only_from = 127.0.0.0/8 192.168.100.0/24
log_on_success += USERID
log_on_failure += USERID
server = /bin/ps
server_args = -auwwx
}

service netstat
{
socket_type = stream
protocol = tcp
wait = no
user = root
only_from = 127.0.0.0/8 192.168.100.0/24
log_on_success += USERID
log_on_failure += USERID
server = /bin/netstat
server_args = -a
}

service ident
{
socket_type = stream
protocol = tcp
wait = yes
user = nobody
only_from = 127.0.0.0/8 192.168.100.0/24
log_on_success += USERID
log_on_failure += USERID
server = /usr/sbin/in.identd
server_args = -w -e -t120
}

service rstatd
{
type = RPC
rpc_version = 1-3
socket_type = dgram
protocol = udp
wait = yes
user = root
only_from = 127.0.0.0/8 192.168.100.0/24
log_on_success += USERID
log_on_failure += USERID
server = /usr/sbin/rpc.rstatd
}

service rusersd
{
type = RPC
rpc_version = 2-3
socket_type = dgram
protocol = udp
wait = yes
user = root
only_from = 127.0.0.0/8 192.168.100.0/24
log_on_success += USERID
log_on_failure += USERID
server = /usr/sbin/rpc.rusersd
}

service walld
{
type = RPC
rpc_version = 1
socket_type = dgram
protocol = udp
wait = yes
user = root
server = /usr/sbin/rpc.rwalld
}

service http-rman
{
socket_type = stream
protocol = tcp
wait = no
user = nobody
only_from = 127.0.0.0/8 192.168.100.0/24
server = /usr/sbin/http-rman
}

service rplay
{
socket_type = dgram
protocol = udp
wait = yes
user = root
server = /usr/sbin/rplayd
server_args = -t 30 -c 60 -s 16384 -F0 --inetd
}

service netbios-ssn
{
socket_type = stream
protocol = tcp
wait = no
user = root
server = /usr/sbin/smbd
server_args = -l /var/log/samba -s /etc/smb.conf
}

service netbios-ns
{
socket_type = dgram
protocol = udp
wait = yes
user = root
server = /usr/sbin/nmbd
}

service swat
{
socket_type = stream
protocol = tcp
wait = no
user = root
only_from = 127.0.0.0/8 192.168.100.0/24
log_on_success += USERID
log_on_failure += USERID
server = /usr/sbin/swat
}

service rsync
{
socket_type = stream
protocol = tcp
wait = no
user = root
only_from = 127.0.0.0/8 192.168.100.0/24
log_on_success += USERID
log_on_failure += USERID
server = /usr/sbin/rsyncd
server_args = --daemon
}


1) Siehe setsockopt in Kategorie 2 der Man-Pages.
2) Siehe log_type, log_on_success und log_on_failure in diesem Dokument.
3) Siehe nice in Kategorie 3 der Man-Pages.
4) Die genauen Syslog-Facilities und -Level können in den Man-Pages zum Syslog-Dienst nachgelesen werden.



Anmerkung zur Fußzeile ;-)

zurück