Port

Aus Mikiwiki
Zur Navigation springen Zur Suche springen

Ein Port (engl. Anschluss) ist ein Teil einer Adresse, der Datensegmente einem Netzwerkdienst zuordnet.

Konzept

Das Port-Konzept ist beispielsweise in TCP, UDP und SCTP vorgesehen, um Protokolle auf den höheren Schichten des OSI-Modells zu adressieren. In diesen drei Protokollen ist die Portnummer 16 Bit gross, sie kann also Werte von 0 bis 65535 annehmen.

Port Bezeichnung Beschreibung
0 - 1023 well known ports Bestimmten Anwendungen von der IANA fest zugeordnete und allgemein bekannte Ports. Unter Linux dürfen nur mit root-Rechten laufende Programme diese Ports öffnen, weswegen sie auch als "privilegierte Ports" bekannt sind.
1024 - 49151 registered ports Von Anwendungsherstellern bei der IANA für eigene Protokolle registrierte Ports. Die Registrierung hat den Vorteil, dass eine Anwendung anhand der Portnummer identifiziert werden kann - allerdings nur, wenn die Anwendung tatsächlich den registrierten Port verwendet.
49152 - 65535 dynamic ports
private ports
Variabel einsetzbare unregistrierte Ports, die keiner Anwendung zugeordnet wurden.

Damit ein Rechner gleichzeitig mehrere Verbindungen (engl. multiplexing) bearbeiten kann, müssen diese voneinander unterschieden werden. Dazu bedient sich das Transmission Control Protocol der Ports. Jeder Anwendung, die TCP benutzen will, wird ein Port zugeordnet. Es gibt 65'536 verschiedene, fortlaufend numerierte Ports. Es gelten folgende Grundsätze:

  • Ein Paar aus IP-Adresse und Port wird Socket genannt.
  • Eine Verbindung zwischen zwei Rechnern ist eindeutig durch zwei Sockets bestimmt.
  • Ein Rechner kann mehrere TCP-Verbindungen gleichzeitig bearbeiten. Dafür werden verschiedene Ports bestimmt. Dieser Vorgang wird Multiplexing genannt.

Beispielsweise kommunizieren Webclient (z. B. ein Webbrowser) und Webserver mit Hilfe von IP-Adressen und Ports auf direktem Wege miteinander:

CLIENT Quell-IP-Adresse:Quell-Port           SERVER Ziel-IP-Adresse:Ziel-Port
       192.168.1.42:5000 -------------------------> 192.168.1.1:80

CLIENT Ziel-IP-Adresse:Ziel-Port             SERVER Quell-IP-Adresse:Quell-Port
       192.168.1.42:5000 <------------------------- 192.168.1.1:80

Wichtige TCP- und UDP-Ports sind die folgenden.

Port Dienst Erläuterung Netzwerkprotokolle
20 ftp-data Dateiübertragung (Default data) TCP
21 ftp Dateiübertragung (Control), der Standardport TCP
22 ssh Telnet Secure Shell (SSH) TCP
23 telnet Telnet TCP
25 smtp Mailversand mit SMTP TCP
53 domain Namensauflösung (DNS) TCP, UDP
68 Dynamische IP-Adresszuordnung (DHCP) TCP, UDP
79 finger Finger TCP
80 www-http Browsen mit HTTP TCP
110 Mails abrufen mit POP3 TCP
123 ntp Zeitdienst NTP TCP, UDP
143 imap2 Mails abrufen mit IMAP
443 Verschlüsselt browsen mit HTTPS TCP
995 Verschlüsselt Mails abrufen mit POP3S TCP

Die Datei "/etc/services" enthält eine Liste bekannter Ports samt der Dienstnamen sowie einer kurzen Beschreibung. Die Zuordnung von Diensten zu Ports ist jedoch unverbindlich; praktisch alle Dienste erlauben die freie Wahl, auf welchem Port sie lauschen sollen. Gerade für sicherheitsrelevante Programme werden häufig Portnummern abseits des Standards benutzt, um sie einer schnellen Entdeckung (etwa durch Portscanner) zu entziehen.

Ein Port besitzt nur die Zustände offen oder geschlossen - entweder lauscht ein Programm darauf oder nicht. In jedem Fall darf ein anfragender Rechner bei Kontaktversuchen eine Antwort erwarten:

  • Wartet ein Programm auf eine neue Verbindung, so erhält der anfragende Rechner ein Antwortpaket mit gesetzten SYN-ACK-Flags.
  • Ist der Port nicht belegt, kommt stattdessen ein Paket mit RST-ACK-Flags zurück.

Falls keine Antwort erfolgt, kann das zwei Ursachen haben:

  • Das Paket ist auf dem Weg verloren gegangen.
  • Eine Firewall hat das Paket verworfen.

Das ist eines der Hauptprobleme beim Portscanning: Es lässt sich bei einzelnen Paketen nicht mit Bestimmtheit sagen, ob der Port gefiltert ist (also eine Firewall das Paket verwirft), oder ob das Paket nur verlorengegangen ist.

Sicherheit

Um mit einer Anwendung zu kommunizieren, greift ein Client auf den entsprechenden Port eines auf dem Server laufenden Netzwerkdiensts zu. Von aussen erreichbare Netzwerkdienste stellen jedoch immer ein Sicherheitsrisiko dar, als mögliche Angriffspunkte dienen Angreifern eine fehlerhafte Konfiguration oder Sicherheitslücken im Programm.

Mit einer Firewall lässt sich der Zugriff von aussen abschotten.

Die Ports müssen ohnehin nicht dauerhaft offenstehen: das Programm Knock erlaubt es, bestimmte Ports gewissermassen auf Zuruf zu öffnen und wieder zu schliessen.

FAQ

Erreichbarkeit eines Ports prüfen

Mit Curl.

http_proxy="" curl http://localhost:443

Mit openssl.

openssl s_client -connect localhost:443

Herausfinden der unter einem Port laufenden Anwendung

Siehe

nmap zeigt beispielsweise Port 4443 als offen an.

# nmap -p 1-65535 localhost
...
4443/tcp  open  pharos
...

Anzeige der Benutzerprozesse, welche den port 4443 verwenden.

# fuser 4443/tcp
4443/tcp:              904 13701 13854 13855 13856 13942 22867 22868 22884 22894 22934

Anzeige der die PID 904 startenden Anwendung.

# ls -l /proc/904/exe
lrwxrwxrwx 1 root root 0 Jul 13 04:09 /proc/904/exe -> /usr/sbin/apache2

Weblinks

Herausgeber Sprache Webseitentitel Anmerkungen
Wikipedia ger Port (Protokoll)wbm Enzyklopädischer Artikel
Utorrent ger Willkommen bei der µTorrent-Portüberprüfungwbm Test zur Überprüfung, ob ein bestimmter Port auf dem lokalen Rechner aus dem Internet erreichbar ist