TCP/IP (Transmission Control Protocol/Internet Protocol) bezeichnet wichtige Internetprotokolle. Die Identifizierung eines teilnehmenden Hosts geschieht dabei über IP-Adressen.

Es können auf einem Host mehrere Server-Progamme gleichzeitig ausgeführt werden, die alle auf eingehende, auf TCP/IP basierende Anfragen (engl. Requests) lauschen. Z.B. könnte ein FTP-Server (File Transfer Protocol) und ein Webserver (http - Hypertext Transfer Protokoll) unter der gleichen IP-Adresse erreichbar sein.

Damit ein Request auch das richtige Server-Programm auf dem Host erreicht, wird der IP-Adresse ein Port hinzugefügt. Dieser Port "adressiert" dann das jeweilige Server-Programm auf dem Host.

TCP/IP-Pakete mit jeweiligem Zielport vom Client zum Server

TCP/IP-Pakete mit jeweiligem Zielport vom Client zum Server

Standardisierung

Der Port wird mit 2 Byte = 16 bit kodiert. Es ergeben sich damit 216 = 65 536 mögliche Ports. Um die Netzkonfiguration zu vereinfachen standardisierte die IANA (Internet Assigned Numbers Authority) die Portnummer, um die Netzkonfigurationen zu vereinfachen. Es werden 3 Bereiche unterschieden:

Standardisierte Ports (well known ports)

Ports 0 bis 1023

Diese Ports sind reserviert bzw. für bestimmte Dienste fest vergeben. Beispiele:

Port  

Beschreibung

21 FTP
22 SSH Remote Login Protocol
23 Telnet
25 Simple Mail Transfer Protocol (SMTP)
53 Domain Name System (DNS)
80 HTTP
443 HTTPS

Beispiel PuTTY Configuration

Mit PuTTY lassen sich u.a. Secure Shell - Verbindungen zu Remote Hosts aufbauen. Dazu wird der standardisierte Port 22 eingetragen:

PuTTY-Konfiguration

Beispiel: PuTTY-Konfiguration


Registrierte Ports

Ports 1024 bis 49151

Software-Hersteller können bei der IETF (Internet Engineering Task Force) für Produkt aus diesem Bereich Ports registrieren lassen. Beispiele:

Port  

Beschreibung

1433 Microsoft SQL-Server
3306 MySQL/Maria DB
25565 Minecraft

Dynamische Ports

Ports 49152 bis 65535

Die Ports aus diesem Bereich werden vom Betriebssystem zufällig ausgewählt und dynamisch an Clientprogramme vergeben. Der Client fügt diesen sogenannten Quellport (Absenderport) den TCP-Paketen seiner Anfrage hinzu. Nur so kann der Server mit seiner Antwort auch den richtigen Client auf dem Client-Host erreichen.

Quellport wird zufällig aus dem dynamischen Portbereich ausgewählt

Der Quellport wird zufällig aus dem dynamischen Portbereich ausgewählt

Beispielsweise kann ein Browser mehrere Webseiten gleichzeitig aufrufen und die Antworten müssen dem richtigen Browsertab zugeordnet werden.

Netstat in der Windows Konsole

Es kann im Fehlerfall vorkommen, dass zwei Clients den gleichen Quellport benutzen. Die Antwort vom Server kann dann nicht mehr eindeutig einem Client zugeordnet werden.
Zur Fehlersuche kann das Windows-Programm netstat mit Administratorrechten in der Konsole ausgeführt werden:

C:\Users\838235>netstat -an

Active Connections

Proto Local Address Foreign Address State
...
TCP 192.168.178.21:53493 52.13.148.70:443 ESTABLISHED
TCP 192.168.178.21:56055 51.103.5.186:443 ESTABLISHED
TCP 192.168.178.21:56736 51.144.227.73:443 TIME_WAIT
TCP 192.168.178.21:56744 40.114.177.156:443 LISTENING
...

Man sieht auf dem Host mit der IP-Adresse 192.168.178.21 wurden u.a. 4 Verbindungen mit dem Zielport 443 geöffnet. Port 443 ist der Standardport für https (Hypertext Transfer Protocol Secure). Der Grund hierfür sind 4 geöffnete Browsertabs, mit denen jeweils 4 unterschiedliche Webseiten aufgerufen werden (unterschiedliche Ziel-IPs). Man sieht, dass jeder Browsertab als eigenständiger Client fungiert und daher mit einer eigenen Quelladresse aus dem dynamisch vergebenen Portbereich auftritt. Nur so kann eine Antwort vom jeweiligen Server auch dem richtigen Browsertab zugeordnet werden.


Portweiterleitung (engl. Port Forwarding)

Achtung: Bevor Port Forwarding eingerichtet wird, müssen alle Kennwörter entsprechend komplex sein, so dass ein einfachen Port Scan mit Anmeldeversuchen unter Verwendung von Standardkennwörtern fehlschlägt. So sollte auch die Anmeldung mit dem Benutzer root, Administrator usw. deaktiviert werden, so dass zusätzlich der Benutzername erraten werden muss.

Ein Router, der das interne Netz mit dem Internet verbindet oder ein Proxy leitet Client-Anfragen (Requests) aus dem internen Netz (LAN = Local Area Network) in das Internet (WAN = Wide Area Network) weiter und merkt sich für die Server-Antwort (Response)  die entsprechende interne IP-Adresse, um diese zum anfragenden Client weiterzuleiten. Der Quellport des Absenders steht auf dem Router nur für die Antwort temporär offen.

Umgekehrt lässt ein  Router ohne Portweiterleitungen keine Requests "ungefragt" aus dem WAN in das LAN zu. Das ginge zum einen zu Lasten der Sicherheit, denn Angriffe aus dem Internet böten mehr Angriffsfläche. Zum Anderen wüsste der Router aber auch gar nicht, an welche lokale Internetadresse eine Anfrage von außen weitergeleitet werden müsste.

Wenn im LAN aber ein Server installiert wird, der von außen erreichbar sein soll, dann muss eine sogenannte Portweiterleitung (engl. Port Forwarding) auf dem Router konfiguriert werden:

Beispiel: Portweiterleitung (-freigabe) bei der Fritzbox


Portfreigaben: 1. Gerät hinzufügen

Portfreigaben: 1. Gerät hinzufügen

Hier erfolgt die Auswahl über den Gerätenamen, der mit einer internen statischen IP-Adresse assoziiert sein muss.
(s. Exkurs: Statische IP-Adressen)

Portfreigaben: 2. Gerät auswählen

Portfreigaben: 2. Gerät auswählen

Nach der Auswahl muss die Portweiterleitung konfiguriert werden. In diesem Beispiel wird ein SSH-Zugriff von außen erlaubt. Dafür kann keine vordefinierte Anwendung ausgewählt werden. Neben der Bezeichnung muss der eingehende und ausgehende Port, sowie das Protokoll festgelegt werden. Eine kurze Recherche ergibt, dass SSH-Requests standardmäßig auf dem Port 22 mittels TCP erfolgen. Dabei genügtz der Internetzugriff über IPv4:

Portfreigaben: 3. Port konfigurieren

Portfreigaben: 3. Port konfigurieren

Portfreigaben: 4. Portfreigabe speichern

Portfreigaben: 4. Portfreigabe speichern


Portfreigaben: 5. Portweiterleitung freigeben

Portfreigaben: 5. Portweiterleitung freigeben


Der Zugriff von außen ist nun möglich. Hierfür kann man die öffentliche IP-Adresse des Routers ablesen, wenn man keinen dynamischen DNS-Namen konfiguriert hat:

Öffentliche IP-Adresse des Routers

Öffentliche IP-Adresse des Routers


PuTTY-Konfiguration

Putty-Konfiguration

Der Zugriff ist nun mittels SSH möglich und  nach dem akzeptieren des Schlüssels öffnet sich die Secure SHell:

Zugriff mittels SSH und PuTTY

Zugriff mittels SSH und PuTTY


Wegen der IPv4-Adressknappheit wird dem normalen DSL-Anschluss i.d.R. nachts eine neue IP-Adresse zugewiesen. Deshalb müsste man jeden Tag die aktuelle IP-Adresse neu ermitteln. Um das zu vermeiden, sollte ein DynDNS-Eintrag vorgenommen werden.



Last modified: Friday, 24 March 2023, 10:34 AM