Ports für jeden Dienst

Server-Prozesse lauschen bei UDP und TCP auf bestimmten Portnummern. Per Übereinkunft werden dazu Ports niedriger Nummern verwendet. Für die Standarddienste sind diese Portnummern in den RFCs festgeschrieben. Ein Port im "listen"-Modus ist gewissermaßen eine halboffene Verbindung. Nur Quell-IP und Quellport sind bekannt. Der Serverprozeß kann vom Betriebssystem dupliziert werden, so daß weitere Anfragen auf diesem Port behandelt werden können.

  • Die Portnummern werden auf dem Host-System konfiguriert und haben zwei Funktionen:

    • Allgemein verfügbare Dienste werden über 'well known' Ports (--> feste, per RFC zugeordnete Portnummer) erreichbar. Sie stehen also für ein Protokoll, das über die Nummer direkt angesprochen wird

    • oder sie werden beim Verbindungsaufbau vereinbart und einem Server-Programm zugewiesen

  • Die Portangabe ist nötig, wenn mehrere Serverprogramme auf dem adressierten Rechner laufen.

  • Die Portnummer steht im TCP-Header und ist 16 Bit groß. Theoretisch können also bis zu 65535 TCP-Verbindungen auf einem Rechner mit einer einzigen IP-Adresse aufgebaut werden.

  • Portnummern werden oft auch bei der Konfiguration von Internet-Clients als Parameter gefordert.

  • Die Client-Prozesse verwenden normalerweise freie Portnummern, die vom lokalen Betriebssystem zugewiesen werden (Portnummer > 1024).

Die "well known" Portnummern (0 bis 1023), die weltweit eindeutig adressiert werden müssen, werden durch die IANA (Internet Assigned Numbers Authority) vergeben. Einige Beispiele für TCP-Ports (UDP verwendet eine andere Zuordnung):

Portnummer

Protokoll

20

FTP (Daten)

21

FTP (Befehle)

22

Secure Shell

23

Telnet

25

SMTP

53

DNS-Server

70

Gopher

79

Finger

80

HTTP (Proxy-Server)

110

POP3

119

NNTP

143

IMAP

194

IRC

210

WAIS

256 - 1023

UNIX-spezifische Services

540

UUCP

1024 - 49151

Registered Ports

49152 - 65535

Dynamic / Private Ports

Eine vollständige Portliste erhält man bei http://www.iana.org/assignments/port-numbers.

IP-Adresse und Portnummer definieren einen Kommunikationsendpunkt, der in der TCP/IP-Welt "Socket" genannt wird. Die Grenze zwischen der Anwendungsschicht und der Transportschicht ist in den meisten Implementierungen zugleich die Grenze zwischen dem Betriebssystem und den Anwendungsprogrammen. Im OSI-Modell ist diese Grenze in etwa die Grenze zwischen den Schichten 4 und 5. Daher ordnet man IP meist ungefähr in die Ebene 3 und TCP ungefähr in Ebene 4 des OSI-Modells ein. Da TCP/IP jedoch älter und einfacher als das OSI-Modell ist, kann diese Einordnung nicht genau passen.


Port-Scans

Beim Scanning wird versucht, offene Ports eines Rechners zu ermitteln. Das ist meist auch der erste Schritt eines Angreifers, der in einem Rechner eindringen will. Deshalb dient ein Portscan auch dazu, die Sicherheit des eigenen Systems zu überprüfen. Bei den Scanning-Methoden wurden Verfahren entwickelt, bei denen versucht wird, den Scanvorgang auf dem gescannten Rechern unentdeckt zu lassen.

  • TCP-Connect-Scan
    Bei dieser Methode wird versucht, eine Verbindung zu einem Port auf dem Zielrechner aufzubauen. Der Scanner läßt einen vollständigen Dreiwege-Handshake zu, bevor er die Verbindung wieder unterbricht. Diese Art der Scans ist allerdings sehr leicht zu entdecken und kann auch leicht mit Hilfe von Firewalls abgeblockt werden.

  • TCP-SYN-Scan
    Diese Methode wird oft als "Half-Open-Scan" bezeichnet. Der Scanner sendet ein SYN-Packet an den Zielrechner, wie bei einem ganz normalen Verbindungsaufbau. Wenn der Zielrechner mit einem RST antwortet, weiß der Scanner, daß dieser Port geschlossen ist. Antwortet der Zielrechner jedoch mit einem SYN/ACK, handelt es sich um einem offenen Port. In diesem Falle wird die Verbindung vom Scanner sofort mit einem RST beendet. Diese Art des Scannens ist nicht ganz so leicht auf dem Zielrechner zu entdecken wie der Connect Scan.

  • Stealth FIN-Scan
    Stealth Scans sollen vom Zielrechner nicht entdeckt werden. Allerdings gibt es Programme, die genau solche Scans entdecken. Beim "Stealth FIN Scan" wird nur ein Packet mit einem FIN-Flag, ohne begleitendes ACK-Flag gesendet. Diese Art von Paket ist unzulässig. Wenn der Port offen ist, wird das Paket des Scanners vom Zielrechner ignoriert. Wenn der Port geschlossen ist, antwortet der Zielrechner mit einem RST-Paket.

  • Stealth Xmastree-Scan
    Bei diesem Scan sind die FIN-, URG-, und PUSH-Flags alle gemeinsam gesetzt. Auch dieses Paket ist unzulässig. Wenn der Port offen ist, wird das Paket des Scanners vom Zielrechner ignoriert. Wenn der Port geschlossen ist, antwortet der Zielrechner mit einem RST-Paket.

  • Stealth Null-Scan
    Bei diesem Scan sind alle Flags auf Null gesetzt. Alles Weitere wie oben.

  • ACK-Scan
    Dieser Scan wird verwendet, um Firewalls zu testen ob sie mit "stateful inspection" arbeiten (z.B. Firewall 1) oder ob es sich nur um einfache Packetfilter handelt, die eingehende SYN Packete verwerfen. Der ACK-Scan sendet ein Packet mit gesetztem ACK-Flag und zufälliger Sequenznummer an die Ports. Wenn das Paket von der Firewall durchgelassen wird, sendet der Server ein RST, da das Paket nicht zuzuordnen ist. In diesem Fall wird der Port als "ungefiltert" klassifiziert. Wenn die Firewall den Status einer Verbindung überwacht, wird das Paket ohne eine Antwort vom Zielrechner abgewiesen oder es wird dem Scanner mit einer ICMP Destination unreachable Nachricht geantwortet.