6.4 Nutzung von Services mittels Ports und Sockets
Mittels der IP-Adresse allein können die Anwendungen Ihrer Rechner nicht miteinander kommunizieren. Die IP-Adressen sind nur für die Adressierung zwischen den Rechnern zuständig. Eine Netzwerkanwendung selbst kann nicht mit einer IP-Adresse versehen werden. Die sendenden und empfangenden Anwendungen benötigen für ihre Kommunikation im Netzwerkverkehr aber eine Art Kanal, was mit den Ports umgesetzt wird.
Die von Ihnen bemühten Netzwerkdienste benötigen ebenfalls einen Antwort-Port, einen Rückkanal. Ihre Client-Anwendungen benutzen dafür nicht die Standard-Port-Nummern, sondern verwenden Nummern aus dem dynamischen Bereich (49152–65535, siehe Tabelle 6.3). Diese Port-Nummer übergibt Ihre Client-Anwendung schon beim Verbindungsaufbau dem betreffenden Netzwerkservice (Abbildung 6.6).
Abbildung 6.6 Port-Nummern für Anfrage und Antwort
Port-Nummern erweitern nicht nur die IP-Adressen um ein weiteres Merkmal, sondern ermöglichen darüber hinaus
-
die Annahme und Abgabe der zu transportierenden Daten,
-
die gleichzeitige Nutzung mehrerer verschiedener Netzwerkdienste (WWW, Mail, SSH …),
-
die mehrfache Nutzung gleichartiger Dienste (gleichzeitiges Anzeigen mehrerer Webseiten) und
-
die mehrfache Bedienung von Clients.
Eine vereinfachte Darstellung dieser Mechanismen finden Sie in Abbildung 6.7. Wie Sie sehen, greifen die PCs 192.168.1.125 bis 192.168.1.127 gleichzeitig auf den Webserver 192.168.1.5 zu. Dabei haben zwei dieser PCs dem Server sogar dieselbe Port-Nummer für die Rückantwort übermittelt. Das ist kein Problem, weil die Port-Nummer ja nur ein erweiterter Bestandteil der Adressierung ist.
Auf dem PC 192.168.1.127 arbeiten gleichzeitig ein Webbrowser, ein SSH-Client und ein E‐Mail-Programm. Dieser PC hat gleichzeitig zu verschiedenen Servern Verbindung, im Fall des E-Mail-Verkehrs sogar mehrere Verbindungen zu dem gleichen Server.
Abbildung 6.7 IP-Adressen und Port-Nummern, Zugriff auf Netzwerkdienste
6.4.1 Sockets und deren Schreibweise
Bei Verbindungen mittels TCP bildet die IP-Adresse zusammen mit einem Port einen Socket. IPv6-Sockets können Sie mit unterschiedlichen Schreibweisen darstellen.
Sockets und deren Schreibweisen
IPv4, Telnet: 192.168.1.125:23
IPv6, Telnet: [fd91:e4a5:5e03::dd05]:23
oder
fd91:e4a5:5e03::dd05:23
oder
fd91:e4a5:5e03::dd05.23
oder
fd91:e4a5:5e03::dd05#23
(RFCs 5952, Nr. 6 und 3986, 6874, 7320, 8820)
6.4.2 Übersicht über die Port-Nummern
Die Ports werden in drei Gruppen unterteilt:
-
0–1023: Well-known-Ports; diese sind weltweit eindeutig durch die IANA festgelegt.
-
1024–49151: Registered Ports; diese sind teilweise für Anwendungen bei der IANA registriert.
-
49152–65535: frei für die dynamische Nutzung
Die komplette Liste finden Sie unter www.iana.org/assignments/port-numbers.
Manche Ports sind mehrfach belegt, was Konflikte hervorrufen kann. Auch Trojaner und andere Schadsoftware benötigen einen Port für die Kommunikation mit der Außenwelt.
In Tabelle 6.3 finden Sie einige häufig benötigte Port-Nummern aufgelistet. Ihre Rechner verfügen ebenfalls über eine derartige Aufstellung:
Protokoll |
Service |
Zweck |
|
---|---|---|---|
20 |
UDP/TCP |
FTP-Daten |
Datenübertragung per File Transmission Protocol (FTP) |
21 |
UDP/TCP |
FTP-Sitzungssteuerung |
Steuerung der FTP-Datenübertragung |
22 |
UDP/TCP |
SSH |
Secure-Shell-Fernsitzung (SSH) und Secure File Transport Protocol, SFTP |
23 |
UDP/TCP |
TELNET |
Telnet-Fernsitzung |
25 |
UDP/TCP |
SMTP |
Simple Mail Transfer Protocol, Versenden von E-Mails (Annahme durch den Server) |
53 |
UDP/TCP |
DNS |
Domain-Nameserver |
69 |
UDP/TCP |
TFTP |
Trivial File Transfer Protocol |
80 |
UDP/TCP |
WWW |
HTTP-Webserver |
110 |
UDP/TCP |
POP3 |
Post Office Protocol V.3, Auslieferung von E-Mails |
119 |
UDP/TCP |
NNTP |
Network News Transfer Protocol, Übertragen von News-Group-Nachrichten |
137 |
UDP/TCP |
NETBIOS-NS |
NetBIOS-Name-Service |
138 |
UDP/TCP |
NETBIOS-DGM |
NetBIOS-Datagramm-Service |
139 |
UCP/TCP |
NETBIOS-SSN |
NetBIOS-Session-Service |
143 |
UDP/TCP |
IMAP |
Internet Message Access Protocol (IMAP), Zugriff auf E-Mails |
161 |
UDP/TCP |
SNMP |
Simple Network Management Protocol, Geräteüberwachung im Netzwerk |
162 |
UDP/TCP |
SNMPTRAP |
Übermittlung der SMNP-Traps |
179 |
UDP/TCP |
BGP |
Border Gateway Protocol, Routing-Protokoll zwischen autonomen Systemen |
194 |
UDP/TCP |
IRC |
Internet Relay Chat Protocol, Chat-Server |
220 |
UDP/TCP |
IMAP V3 |
IMAP Version 3, E-Mail-Zugriff |
396 |
UDP/TCP |
NETWARE-IP |
Novell-Netware, über IP-Netzwerk |
401 |
UDP/TCP |
UPS |
Meldungen von unterbrechungsfreien Stromversorgungen |
UDP/TCP |
MOBILE- |
Mobile-IP-Agent |
|
443 |
UDP/TCP |
HTTPS |
Webserver mit verschlüsselter Verbindung |
514 |
UDP |
SYSLOG |
zentrale Aufzeichnung von Systemereignissen |
989 |
UDP/TCP |
FTPS-Daten |
FTP über SSL-Verschlüsselung |
990 |
UDP/TCP |
FTPS |
Steuerung FTP über SSL-Verschlüsselung |
992 |
UDP/TCP |
TELNETS |
Telnet über SSL-Verschlüsselung |
993 |
UDP/TCP |
IMAPS |
IMAP V.4 über SSL-Verschlüsselung |
994 |
UDP/TCP |
IRCS |
IRC über SSL-Verschlüsselung |
995 |
UDP/TCP |
POP3S |
POP3 über SSL-Verschlüsselung |
Tabelle 6.3 Häufig benutzte Ports
Im Normalfall geben Sie beim Benutzen von Standardanwendungen (Webbrowser, E‐Mail-Programm, FTP-Client …) keine Port-Nummer beim Adressaufruf an. Ihre Anwendungen werden stets diese Standard-Port-Nummern benutzen. Aber es gibt genug Situationen, in denen Sie Internet-Services eine von den IANA-Vorgaben abweichende Port-Nummer zuweisen:
-
Testumgebungen auf Rechnern mit »Echtanwendungen«: Prüfen Sie Ihre neuen Webseiten usw. in der künftigen Zielumgebung. Sie können auch externe Tester mit in die Arbeit einbinden. Außenstehende bemerken dies in der Regel aber nicht.
-
Sicherheitsgründe: Webgestützte Administrationsoberflächen oder firmeninterne E‐Mail-Dienste für Außendienstmitarbeiter lassen Sie besser abseits der Standard-Ports abrufbar sein.
-
Ein Netzwerkdienst soll mehrfach vorhanden sein, z. B. SSH bei FreeBSD-Servern innerhalb von Jails.
6.4.3 Ports und Sicherheit
Ihre Rechner verfügen über offene Ports. Über diese kann Ihr Rechner von außen her auf verschiedene Weise angegriffen werden.
Mit einem Portscanner (z. B. nmap) überprüfen Sie, welche Ports an Ihrem Rechner geöffnet sind:
harald@ZE4:~$ nmap -p 1-65535 192.168.0.34
Starting Nmap 4.62 ( http://nmap.org ) at 2016-06-19 20:30 CEST
Interesting ports on ze4 (192.168.0.34):
Not shown: 65530 closed ports
PORT STATE SERVICE
22/tcp open ssh
53/tcp open domain
111/tcp open rpcbind
7741/tcp open unknown
32955/tcp open unknown
Nmap done: 1 IP address (1 host up) scanned in 0.
949 seconds
Sie sehen die geöffneten Ports. Damit alle Ports gescannt werden, geben Sie den Bereich mit der Option -p an. Eine genaue Anleitung erhalten Sie mit man nmap, falls Sie unter Linux oder FreeBSD arbeiten.
Sie dürfen mit einem Portscanner nur Ihre eigenen Systeme überprüfen. Eine darüber hinausgehende Nutzung kann strafrechtliche Folgen nach sich ziehen!
Ein Portscanner hat verschiedene Modi. Der TCP-SYN-Scan z. B. sendet ein Paket mit SYN-Flag zur vermeintlichen Verbindungsaufnahme. Sie können damit drei verschiedene Ergebnisse erhalten:
-
keine Antwort: Ein Paketfilter lässt weder Anfrage noch Antwort passieren.
UDP-Portscans arbeiten nicht so zuverlässig. Der Portscanner sendet ein leeres UDP-Paket an die jeweiligen Ports. Sendet der so kontrollierte Rechner ein UDP-Paket zurück, ist der Port offen. Aber auch beim Ausbleiben einer Antwort kann der Port offen oder durch einen Paketfilter geblockt sein. Diese Mehrdeutigkeit führt zu Problemen bei der Auswertung. Geschlossene Ports erkennen Sie an der Port-Unreachable-Meldung (ICMPv4: Typ 3 Code 3, ICMPv6: Typ 1 Code 4). Moderne Betriebssysteme drosseln die Ausgabe von ICMP-Meldungen, sodass der Portscan sehr lange dauern kann.
Auch mit netstat können Sie Ihren Rechner auf offene Ports hin überprüfen. Im Beispiel aus Abbildung 6.8 sehen Sie die Ausgabe unter Linux (bei FreeBSD funktioniert der Befehl genauso).
Abbildung 6.8 Ausgabe von »netstat«
Für das Ergebnis in Abbildung 6.8 lautet die Eingabe:
Hier werden Ports und Adressen numerisch ausgegeben. Sie erkennen übrigens gut die Socket-Schreibweise. Möchten Sie hingegen die Ausgabe mit Rechner- und Port-Namen, geben Sie nur
netstat -at
ein.
Mit der Eingabe von
netstat -tun
listen Sie alle von außen zugreifenden Verbindungen auf.
Möchten Sie die zugehörigen Prozessnummern in Erfahrung bringen, geben Sie unter Windows zusätzlich die Option »o« und bei Linux/FreeBSD »p« ein. Dass kann Ihnen beim Eingrenzen unerwünschter offener Ports behilflich sein. Über das jeweilige Prozessmanagement bekommen Sie mit dieser Prozess-ID weitere Informationen geliefert. Weitere Erläuterungen zu netstat finden Sie in Abschnitt 10.7.2, »Verbindungen mit ›netstat‹ anzeigen«.
Damit Ihr Rechner so wenige offene Ports wie möglich aufweist, können nachstehende Maßnahmen nützlich sein:
-
Bei Netzwerkanwendungen, die Ihr Rechner nur lokal für sich benötigt, beschränken Sie den Zugriff entsprechend auf localhost bzw. 127.0.0.1.
-
Blocken Sie Ports mittels Firewall.
-
Linux/FreeBSD: Verwenden Sie keinesfalls inetd, und verwenden Sie für jeden Netzwerkservice ein eigenes Start-Stopp-Skript.
Weitere Informationen zum Thema Portscan finden Sie in Abschnitt 6.8.2, »Durchführen von Portscans zum Austesten von Sicherheitsproblemen«.