Netzwerkanalyse, Fehlersuche, Testberichte
Home / News
Netzwerkanalyse
Grundlagen
Verkabelung
Erste Schritte
Baselining
Let's sniff
Tools
Auswerten/Filtern
Typische Probleme 1
Typische Probleme 2
Sicherheit
Bücher
Tutorials
Cacti
DSL einrichten
DynDNS einrichten
m0n0wall | pfSense
Nmap
VirtualBox
Wireshark
FAQ
Know How
Testberichte
Hardware-DB
Netzwerklexikon
Links / Service
Suche
Kontakt
Impressum
Feedback
Sitemap
Know How

Offene Ports - was ist das eigentlich?

Schauen wir uns zuerst einmal an, was ein Port im TCP/IP-Protokollstack überhaupt ist. Ein Port oder eine Portnummer ist eine Ziffer, die einen Endpunkt einer Kommunikation beschreibt. Die Kombination aus IP-Adresse, Transportprotokoll (TCP, UPD) und Portnummer ermöglicht die eindeutige Identifikation.

Jeder Serverdienst oder Prozess benötigt eine eindeutige Portnummer um seinen Service anbieten zu können. Dafür kommen in der Regel die sogenannten Well-known-Ports zu Anwendung. So wird ein Webserver per Default immer auf Port tcp/80 (http) und tcp/443 (https) starten. Diese Ports sind genormt (well known) und ein Webbrowser wird den Server auf genau diesen Ports ansprechen.

Server mit zwei offenen Ports
Server mit 2 offenen TCP-Ports

Wenn ein Service startet fordert er beim Netzwerkstack des Betriebssystems die in seiner Konfiguration vorgesehenen Ports an. Der Netzwerkstack stellt dann quasi eine Verbindung zwischen der Portnummer und dem Serverprozess her. Alle eingehenden Pakete mit dem entsprechenden Ziel-Port wird der Netzwerkstack ab diesem Zeitpunkt an den Prozess weiterleiten. Der Port befindet sich jetzt im Status LISTEN, LISTENING oder auf Deutsch ABHÖREN. Der Port lauscht sozusagen auf eingehende Daten, der Port ist jetzt offen.

Pro Transportprotokoll (TCP und UDP) kann jede Portnummer nur an eine Applikation vergeben werden. Der Versuch eine weitere Serveranwendung auf einem bereits genutzten Port zu starten führt zu einem Fehler in der Art "Port is already in use".

Port-Nummer für UDP und TCP sind jeweils 2 Byte lang (16 Bit). Das gilt sowohl für IP Version 4 als auch für IPv6.

Sind die Ports immer offen?

Solange auf einem System keine Serverdienste laufen, ist auch kein Port offen. Der Netzwerkstack des Betriebssystems wird eingehende Pakete also nicht an irgendwelche Prozesse weiterleiten. Per Default werden einkommende Verbindungen auf geschlossenen TCP-Ports mit einem TCP-Reset beantwortet. Dieses Verhalten kann durch den Einsatz von Firewalls unterdrückt werden. Eingehender UDP-Traffic auf geschlossenen Ports wird einfach stillschweigend verworfen.

Wenn ich also von meinem PC aus keine Dienste im Netzwerk anbieten möchte, sollte kein Port offen sein.

Offene Ports anzeigen

Welche Ports auf einem System offen sind, sich also im Status LISTEN befinden, zeigt uns das Kommando netstat an. Netstat ist auf allen Plattformen wie Windows, macOS und allen Linux-Varianten (Debian, Ubuntu, etc.) verfügbar. Die Optionen für den Aufruf von netstat sind teilweise unterschiedlich, aber netstat kann mir überall die offenen Ports anzeigen.

Offene Ports anzeigen mit netstat unter Windows

Unter Windows startet man zunächst eine Eingabeaufforderung (Kommandozeile) und kann dort das Kommando netstat ausführen. Der Aufruf "netstat -h" zeigt einen Hilfetext mit den möglichen Parametern von netstat an.

C:\Users\mku>netstat -h

Zeigt die Protokollstatistik und aktuelle TCP/IP-Netzwerkverbindungen an.

NETSTAT [-a] [-b] [-e] [-f] [-n] [-o] [-p Protokoll] [-r] [-s] [-t] [-x] [-y] [Intervall]

  -a            Zeigt alle Verbindungen und lauschenden Ports an.
  -b            Zeigt die ausführbare Datei an, die beim Erstellen jeder
                Verbindung bzw. jedes lauschenden Ports involviert ist. In
                einigen Fällen enthalten bekannte ausführbare Dateien mehrere
                unabhängige Komponenten. Dann wird die Reihenfolge der
                Komponenten angezeigt, die beim Erstellen der Verbindung oder
                des lauschenden Ports involviert sind. In diesem Fall befindet
                sich der Name der ausführbaren Datei unten in []. Oben
                befinden sich die aufgerufene Komponente usw., bis TCP/IP
                erreicht wurde. Bedenken Sie, dass diese Option sehr
                zeitaufwändig sein kann und nur erfolgreich ist, wenn Sie über
                ausreichende Berechtigungen verfügen.
  -e            Zeigt die Ethernet-Statistik an. Kann mit der Option "-s"
                kombiniert werden.
  -f            Zeigt vollqualifizierte Domänennamen (FQDN) für Remoteadressen an.
  -n            Zeigt Adressen und Portnummern numerisch an.
  -o            Zeigt die mit jeder Verbindung verknüpfte, übergeordnete
                Prozesskennung an.
  -p Protokoll  Zeigt Verbindungen für das angegebene Protokoll an.
                Mögliche Protokolle: TCP, UDP, TCPv6 oder UDPv6.
                Mögliche Protokolle bei Verwendung mit der Option "-s":
                IP, IPv6, ICMP, ICMPv6, TCP, TCPv6, UDP oder UDPv6.
  -q            Zeigt alle Verbindungen, lauschenden Ports und gebundene
                nicht lauschende TCP-Ports an. Gebundene nicht lauschende Ports können
                einer aktiven Verbindung zugeordnet sein oder nicht.
  -r            Zeigt den Inhalt der Routingtabelle an.
  -s            Zeigt die Statistik für die einzelnen Protokolle an.
                Standardmäßig wird die Statistik für IP, IPv6, ICMP, ICMPv6,
                TCP, TCPv6, UDP und UDPv6 angezeigt.
                Mit der Option "-p" können Sie dies weiter einschränken.
  -t            Zeigt den aktuellen Abladungsstatus der Verbindung an.
  -x            Zeigt Verbindungen, Listener und freigegebene Endpunkte für
                NetworkDirect an.
  -y            Zeigt die TCP-Verbindungsvorlage für alle Verbindungen an.
                Nicht kombinierbar mit anderen Optionen.
  Intervall     Zeigt die gewählte Statistik nach der mit Intervall angegebenen
                Anzahl von Sekunden erneut an. Drücken Sie STRG+C zum
                Beenden der Intervallanzeige. Ohne Intervallangabe werden
                die aktuellen Konfigurationsinformationen einmalig
                angezeigt.
Um die offenen TCP-Ports in numerischer Darstellungen zu erhalten nutzen wir das Kommando "netstat -anp TCP". Alle Portnummern die uns hier im Status ABHÖREN angezeigt werden sind offene Ports.

C:\Users\mku>netstat -anp TCP

Aktive Verbindungen

  Proto  Lokale Adresse         Remoteadresse          Status
  TCP    0.0.0.0:135            0.0.0.0:0              ABHÖREN
  TCP    0.0.0.0:445            0.0.0.0:0              ABHÖREN
  TCP    0.0.0.0:3306           0.0.0.0:0              ABHÖREN
  TCP    0.0.0.0:3389           0.0.0.0:0              ABHÖREN
  TCP    0.0.0.0:5040           0.0.0.0:0              ABHÖREN
  TCP    0.0.0.0:7680           0.0.0.0:0              ABHÖREN
  TCP    0.0.0.0:33060          0.0.0.0:0              ABHÖREN
  TCP    0.0.0.0:49664          0.0.0.0:0              ABHÖREN
  TCP    0.0.0.0:49665          0.0.0.0:0              ABHÖREN
  TCP    0.0.0.0:49666          0.0.0.0:0              ABHÖREN
  TCP    0.0.0.0:49667          0.0.0.0:0              ABHÖREN
  TCP    0.0.0.0:49668          0.0.0.0:0              ABHÖREN
  TCP    0.0.0.0:49669          0.0.0.0:0              ABHÖREN
  TCP    0.0.0.0:49674          0.0.0.0:0              ABHÖREN
  TCP    127.0.0.1:49670        127.0.0.1:49671        HERGESTELLT
  TCP    127.0.0.1:49671        127.0.0.1:49670        HERGESTELLT
  TCP    127.0.0.1:49672        127.0.0.1:49673        HERGESTELLT
  TCP    127.0.0.1:49673        127.0.0.1:49672        HERGESTELLT
  TCP    127.0.0.1:59608        127.0.0.1:59609        HERGESTELLT
  TCP    127.0.0.1:59609        127.0.0.1:59608        HERGESTELLT
  TCP    127.0.0.1:59612        127.0.0.1:59613        HERGESTELLT
  TCP    127.0.0.1:59613        127.0.0.1:59612        HERGESTELLT
  TCP    192.168.178.26:139     0.0.0.0:0              ABHÖREN
  TCP    192.168.178.26:3389    192.168.178.60:60704   HERGESTELLT

Mit der Option -o zeigt netstat zusätzlich auch noch die Prozess-ID (kurz PID) des Programmes an welches hinter einer Portnummer steht. Über das Kommando tasklist kann man sich eine Liste aller Prozesse mit ihrer PID anzeigen lassen und so herausfinden welches Programm welchen Port geöffnet hat.

Offene Ports anzeigen mit netstat unter Linux

Unter Linux wird netstat ebenfalls von der Kommandozeile (Terminal, Shell, Bash) aus gestartet. Die Optionen unterscheiden sich ein klein wenig vom Windows netstat.

~# netstat -h
usage: netstat [-vWeenNcCF] [] -r         netstat {-V|--version|-h|--help}
       netstat [-vWnNcaeol] [ ...]
       netstat { [-vWeenNac] -i | [-cnNe] -M | -s [-6tuw] }

        -r, --route              display routing table
        -i, --interfaces         display interface table
        -g, --groups             display multicast group memberships
        -s, --statistics         display networking statistics (like SNMP)
        -M, --masquerade         display masqueraded connections

        -v, --verbose            be verbose
        -W, --wide               don't truncate IP addresses
        -n, --numeric            don't resolve names
        --numeric-hosts          don't resolve host names
        --numeric-ports          don't resolve port names
        --numeric-users          don't resolve user names
        -N, --symbolic           resolve hardware names
        -e, --extend             display other/more information
        -p, --programs           display PID/Program name for sockets
        -o, --timers             display timers
        -c, --continuous         continuous listing

        -l, --listening          display listening server sockets
        -a, --all                display all sockets (default: connected)
        -F, --fib                display Forwarding Information Base (default)
        -C, --cache              display routing cache instead of FIB
        -Z, --context            display SELinux security context for sockets

  ={-t|--tcp} {-u|--udp} {-U|--udplite} {-S|--sctp} {-w|--raw}
           {-x|--unix} --ax25 --ipx --netrom
  =Use '-6|-4' or '-A ' or '--   '; default: inet
  List of possible address families (which support routing):
    inet (DARPA Internet) inet6 (IPv6) ax25 (AMPR AX.25)
    netrom (AMPR NET/ROM) ipx (Novell IPX) ddp (Appletalk DDP)
    x25 (CCITT X.25)

Unter Linux zeigt uns "netstat -ln" die offenen Ports numerisch an. Mit dem Kommando "netstat -lnp" zeigt uns Linux zusätzlich auch noch die PID und den Namen des Programmes hinter den Ports an.

~# netstat -lnp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name
tcp        0      0 127.0.0.1:9090          0.0.0.0:*               LISTEN      18735/prometheus
tcp        0      0 127.0.0.1:9100          0.0.0.0:*               LISTEN      56209/node_exporter
tcp        0      0 127.0.0.1:33060         0.0.0.0:*               LISTEN      725/mysqld
tcp        0      0 127.0.0.53:53           0.0.0.0:*               LISTEN      572/systemd-resolve
tcp        0      0 127.0.0.1:3306          0.0.0.0:*               LISTEN      725/mysqld
tcp6       0      0 :::8086                 :::*                    LISTEN      143123/influxd
tcp6       0      0 :::3000                 :::*                    LISTEN      11057/grafana-serve
tcp6       0      0 :::4711                 :::*                    LISTEN      134909/iperf3
tcp6       0      0 :::443                  :::*                    LISTEN      706/apache2
tcp6       0      0 :::80                   :::*                    LISTEN      706/apache2
udp        0      0 127.0.0.53:53           0.0.0.0:*                           572/systemd-resolve

Etwas verwirrend kann hier die Anzeige einer Reihe von Diensten als tcp6 only sein. Man könnte denken, dass der Apache nur auf IPv6 im LISTEN ist. Allerdings wird hier die IPv4-Adresse auf eine IPv6-Adresse gemappt und Apache lauscht dadurch nur auf dem tcp6-Socket. Und dieser Socket akzeptiert sowohl IPv4 als auch IPv6.

TCP Ports

Innerhalb der TCP/IP-Suite wird das Transmission Control Protocol (kurz TCP) für verbindungsorientierte Kommunikation genutzt. Bekannte Protokolle die TCP-Ports nutzen sind FTP, HTTP/HTTPS, SSH und SMTP. Weniger bekannt ist das DNS ebenfalls TCP nutzen kann.

PortnummerProtokoll
22Secure Shell ssh
23Telnet
25SMTP
139NetBIOS Session Service
179BGP
445Microsoft File Sharing/SMB

UDP Ports

Das User Datagram Protocol (UDP) ist das verbindungslose Transportprotokoll der TCP/IP-Protokollfamilie. Verbreitete Anwendungen von UDP sind SNMP, NTP, DNS und RTP.

PortnummerProtokoll
53DNS
67 und 68BOOTP und DHCP
69TFTP
123NTP
319 und 320Precision Time Protocol PTP

Portscanner NMAP

Um über das Netzwerk herauszufinden ob an einem Zielsystem offene Ports existieren nutz man sogenannte Portscanner. Der bekannteste Vertreter ist sicher NMAP. Mit NMAP lassen sich offene Ports mit einer Vielzahl unterschiedlicher Scan-Verfahren prüfen.

Firewalls und offene Ports

Firewalls können unerwünschte Zugriffe auf offene Ports verhindern. Sie können Zugriffe basierend auf Portnummern filtern, daher spricht man auch von Portfiltern.

ICMP Port - Welchen Port nutzt Ping?

Die Antwort ist einfach: Ping hat gar keine Portnummer. ICMP ist ein eigenes Protokoll in der TCP/IP-Suite und wird direkt in IP enkapsuliert. ICMP hat dort die Protokollnummer 1.

Windows, Apple, Linux, Android - gibt es Unterschiede?

Die Netzwerkstacks aller Geräte die heute TCP/IP für die Kommunikation nutzen basieren auf den gleichen Standards (RFCs). Nur dadurch kann ein Iphone mit iOS problemlos auf einen Linux Webserver zugreifen und eine PS5 über Cisco-Router ins Internet gelangen. Die Portnummern und deren Verwendung ist über alle Plattformen identisch.

Offene Ports - Links

Hier noch ein paar weiterführende Links zu offenen Ports, netstat und nmap:

Aktuelle Artikel
Offene Ports - was ist das eigentlich?
Grundlagen zu UDP- und TCP-Port, offenen Ports und der Nutzung von netstat unter Linux und Windows

Iperf als Service konfigurieren
Der Artikel beschreibt wie sich Iperf3 auf einem Linux-System als Dienst einrichten lässt, um so einen permanenten Iperf-Server zu betreiben.

JPerf - grafische Oberfläche für iperf
Mit iperf kann die Übertragungsgeschwindigkeit von Netzwerken gemessen werden. JPerf ist eine grafische Oberfläche für iperf. Der Artikel beschreibt die Messung mit TCP und UDP und gibt Anregungen zur Fehlersuche bei Performanceproblemen.

Alle Artikel...
Neue Tutorials
Prometheus Node Exporter
Mit dem Prometheus Node Exporter lassen sich viele interessante Metriken von Linux-Servern auslesen. Die so gewonnenen Daten können in Prometheus gespeichert werden und mit Grafana in Dashboards anschaulich visualisiert werden.

VPN mit der FritzBox
Die Fritz!Box von AVM unterstützt den Aufbau von VPN-Verbindungen mit dem Protokoll IPsec. AVM stellt dafür die Windows-Software FRITZ!Fernzugang zur Verfügung. Das Tutorial beschreibt die Konfiguration eines VPNs mit der AVM FRITZ!Box Fon WLAN 7270.

Virtuelle Netze mit VMware Server
VMware Server bietet drei Arten der virtuellen Vernetzung für ein Gastsystem an: Bridged Networking, Network Address Translation (NAT) und Host-only Networking. Das Tutorial beschreibt die Möglichkeiten der einzelnen Betriebsarten und deren Konfiguration.

Alle Tutorials...
Neue Testberichte
Net Optics iBypass Switch
Der iBypass von Net Optics ist Bypass Switch zum unterbrechungsfreien Einschleifen eines Intrusion Prevention Systems.

ePowerSwitch-4
Der ePowerSwitch-4 ist eine Schuko-Steckdosenleiste mit Ethernet-Interface und integriertem Webserver. Über einen Browser lassen sich die vier Schuko-Steckdosen über das Netzwerk schalten.

Alle Testberichte...

 

 
© 2004-2023, network lab - we make your net work - Netzwerkforum
aktualisiert am 24.01.2023