Port
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
- https://www.fosslinux.com/35730/5-ways-to-check-if-a-port-is-open-on-a-remote-linux-pc.htm
- https://superuser.com/questions/621870/test-if-a-port-on-a-remote-system-is-reachable-without-telnet
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 |