# Network services, Internet style # name port/protocol aliases # echo 7/tcp echo 7/udp discard 9/tcp sink null discard 9/udp sink null systat 11/tcp users daytime 13/tcp daytime 13/udp netstat 15/tcp qotd 17/tcp quote chargen 19/tcp ttytst source chargen 19/udp ttytst source ftp 21/tcp telnet 23/tcp smtp 25/tcp mail time 37/tcp timserver time 37/udp timserver rlp 39/udp resource # resource location nameserver 42/tcp name # IEN 116 whois 43/tcp nicname domain 53/tcp nameserver # name-domain server domain 53/udp nameserver mtp 57/tcp # deprecated tftp 69/udp rje 77/tcp netrjs finger 79/tcp link 87/tcp ttylink supdup 95/tcp hostnames 101/tcp hostname # usually from sri-nic ns 105/tcp # ph name server pop2 109/tcp postoffice2 pop3 110/tcp postoffice sunrpc 111/tcp portmapper sunrpc 111/udp portmapper auth 113/tcp authentication sftp 115/tcp uucp-path 117/tcp nntp 119/tcp readnews untp archie 191/udp # privileged archie port # # UNIX specific services # exec 512/tcp biff 512/udp comsat login 513/tcp who 513/udp whod shell 514/tcp cmd # no passwords used syslog 514/udp printer 515/tcp spooler # line printer spooler talk 517/udp ntalk 518/udp efs 520/tcp # for LucasFilm route 520/udp router routed timed 525/udp timeserver tempo 526/tcp newdate courier 530/tcp rpc conference 531/tcp chat netnews 532/tcp readnews netwall 533/udp # emergency broadcasts uucp 540/tcp uucpd # uucp daemon remotefs 556/tcp rfs_server rfs # Brunhoff rfs ingreslock 1524/tcp #archie 1525/udp # non-privileged archie port
Bei Unix-ähnlichen Systemen finden sich diese Informationen üblicherweise in der Datei /etc/services. Der Eintrag einer Anwendung in dieser Datei bedeutet nicht, daß das betreffende Serverprogramm auch wirklich auf diesem Rechner läuft, er sichert nur, daß das Serverprogramm "seine" Portnummer findet, falls es gestartet wird.
Der Start von Serverprogrammen wird üblicherweise beim Systemanlauf automatisch veranlaßt. Wenn man nun sämtliche eventuell irgendwann einmal gebrauchten Server beim Systemanlauf startet, verbrauchen sie alle Speicher (und langweilen sich ;-). Um diese Situation zu verbessern, hat man bei Unix-ähnlichen Systemen einen "Superserver" inetd (Internet-Dämon) eingeführt. Dieser beobachtet nun ständig eine Liste von Server-Portnummern und startet den betreffenden Server (z.B. für TELNET) erst dann, wenn wirklich ein Klient eine Verbindung aufbauen will. Die Liste der so "betreuten" Server ist in der Datei /etc/inetd.conf enthalten. Hier ein einfaches Beispiel:
# service_name sock_type proto flags user server_path args # ftp stream tcp nowait root /usr/etc/in.ftpd in.ftpd telnet stream tcp nowait root /usr/etc/in.telnetd in.telnetd shell stream tcp nowait root /usr/etc/in.rshd in.rshd login stream tcp nowait root /usr/etc/in.rlogind in.rlogind exec stream tcp nowait root /usr/etc/in.rexecd in.rexecd talk dgram udp wait root /usr/etc/in.talkd in.talkd
Das Zeichen # markiert den Beginn eines Kommentars. In der ersten Zeile ist die Syntax der Einträge in Kurzform angegeben. Die einzelnen Elemente haben folgende Bedeutung:
service_name Name des Dienstes sock_type Typ des Sockets: stream (für TCP) oder dgram (Datagramm; für UDP) proto Transportprotokoll: tcp oder udp flags wait: Server wartet auf das Ende der Behandlung eines Klienten
nowait: Server kann mehrere Klienten gleichzeitig behandelnuser Kennzeichen des Nutzers, mit dessen Rechten der Server auszuführen ist server_path Pfadname des Serverprogramms args Parameter beim Aufruf des Serverprogramms
Eine heute typische /etc/inetd.conf-Datei ist etwas umfangreicher:
# See "man 8 inetd" for more information. # # Echo, discard, daytime, and chargen are used primarily for testing. echo stream tcp nowait root internal echo dgram udp wait root internal discard stream tcp nowait root internal discard dgram udp wait root internal daytime stream tcp nowait root internal daytime dgram udp wait root internal chargen stream tcp nowait root internal chargen dgram udp wait root internal time stream tcp nowait root internal time dgram udp wait root internal # # These are standard services. ftp stream tcp nowait root /usr/sbin/tcpd /usr/sbin/wu.ftpd telnet stream tcp nowait root /usr/sbin/tcpd /usr/sbin/in.telnetd # Secure Shell ssh stream tcp nowait root /usr/sbin/tcpd /usr/local/sbin/sshd -i # # The line below is set up for running Smail: #smtp stream tcp nowait root /usr/sbin/tcpd /usr/bin/rsmtp -bs nntp stream tcp nowait root /usr/sbin/tcpd /usr/sbin/in.nntpd # # Shell, login, exec and talk are BSD protocols. shell stream tcp nowait root /usr/sbin/tcpd /usr/sbin/in.rshd login stream tcp nowait root /usr/sbin/tcpd /usr/sbin/in.rlogind #exec stream tcp nowait root /usr/sbin/tcpd /usr/sbin/in.rexecd talk dgram udp wait root /usr/sbin/tcpd /usr/sbin/in.ntalkd ntalk dgram udp wait root /usr/sbin/tcpd /usr/sbin/in.ntalkd # # Pop mail servers #pop2 stream tcp nowait root /usr/sbin/tcpd /usr/sbin/in.pop2d pop3 stream tcp nowait root /usr/sbin/tcpd /usr/sbin/in.pop3d # # Finger, systat and netstat give out user information which may be # valuable to potential "system crackers." Many sites choose to disable # some or all of these services to improve security. finger stream tcp nowait daemon /usr/sbin/tcpd /usr/sbin/in.fingerd systat stream tcp nowait guest /usr/sbin/tcpd /usr/bin/ps -auwwx netstat stream tcp nowait guest /usr/sbin/tcpd /bin/netstat -f inet
Gegenüber dem einfachen Beispiel vorher erkennen wir einige neue Dinge: