Netzwerk-Diagnose-Tools helfen bei der Analyse von Verbindungen, offenen Ports und Netzwerk-Problemen. ss ist der moderne Ersatz für netstat, während lsof Datei- und Netzwerk-Zugriffe zeigt.

ss (Socket Statistics)

ss ist der moderne und schnellere Ersatz für netstat.

Grundbefehle

# Alle Verbindungen
ss

# Nur TCP
ss -t

# Nur UDP
ss -u

# Listening Ports
ss -l

# Mit Prozess-Info
ss -p

# Numerisch (keine DNS-Auflösung)
ss -n

Häufige Kombinationen

# Alle TCP-Listening Ports mit Prozessen
ss -tlnp

# Alle Verbindungen (TCP+UDP)
ss -tunap

# Nur etablierte Verbindungen
ss -t state established

# Verbindungen zu bestimmtem Port
ss -t dst :443
ss -t src :80

Ausgabe verstehen

State      Recv-Q Send-Q Local Address:Port    Peer Address:Port
LISTEN     0      128    *:80                  *:*
ESTAB      0      0      192.168.1.10:80       203.0.113.50:52412

State:
- LISTEN    = Wartet auf Verbindungen
- ESTAB     = Etablierte Verbindung
- TIME-WAIT = Verbindung wird geschlossen
- CLOSE-WAIT = Remote hat geschlossen
- SYN-SENT  = Verbindungsaufbau

Filtern

# Nach State
ss -t state established
ss -t state time-wait
ss -t state listening

# Nach Port
ss -t '( dport = :22 or sport = :22 )'
ss -t dport = :443

# Nach Adresse
ss dst 192.168.1.0/24
ss src 10.0.0.1

Statistiken

# Zusammenfassung
ss -s

# Output:
# Total: 1500 (kernel 2000)
# TCP:   450 (estab 200, closed 50, orphaned 10)
# UDP:   30

netstat (Legacy)

netstat ist älter, aber auf vielen Systemen noch Standard.

Installation

# Debian/Ubuntu
apt install net-tools

Grundbefehle

# Alle Verbindungen
netstat -a

# TCP Listening
netstat -tln

# Mit Prozessen
netstat -tlnp

# UDP
netstat -uln

# Statistiken
netstat -s

# Routing-Tabelle
netstat -r

# Interface-Statistiken
netstat -i

Häufige Kombinationen

# Alle TCP-Ports mit Programmen
netstat -tlnp

# Alle Verbindungen numerisch
netstat -an

# Verbindungen kontinuierlich
netstat -c

# Nur IPv4
netstat -4

# Nur IPv6
netstat -6

lsof (List Open Files)

lsof zeigt offene Dateien und Netzwerk-Verbindungen.

Netzwerk-Verbindungen

# Alle Netzwerk-Verbindungen
lsof -i

# Nur TCP
lsof -i TCP

# Nur UDP
lsof -i UDP

# Bestimmter Port
lsof -i :80
lsof -i :22

# Port-Bereich
lsof -i :1-1024

# Bestimmte Adresse
lsof -i @192.168.1.10

# Kombiniert
lsof -i TCP:80
lsof -i @192.168.1.10:443

Nach Prozess

# Nach PID
lsof -p 1234

# Nach Prozess-Name
lsof -c nginx
lsof -c mysql

# Nach User
lsof -u www-data
lsof -u root

# Dateien eines Prozesses
lsof -p $(pgrep nginx)

Nach Datei

# Wer nutzt eine Datei?
lsof /var/log/syslog

# Wer nutzt ein Verzeichnis?
lsof +D /var/www/

# Gelöschte aber offene Dateien
lsof +L1

Kombination mit anderen Tools

# Prozesse auf Port 80
lsof -i :80 | awk 'NR>1 {print $2}' | sort -u

# Kill alle Prozesse auf Port
lsof -t -i :8080 | xargs kill -9

Praktische Anwendungen

Welcher Prozess nutzt Port X?

# Mit ss
ss -tlnp | grep :80

# Mit lsof
lsof -i :80

# Mit fuser
fuser 80/tcp

Offene Ports des Systems

# Mit ss
ss -tlnp

# Mit netstat
netstat -tlnp

# Externe Prüfung (von außen)
nmap -sT localhost

Verbindungen zu externem Host

# Alle Verbindungen zu IP
ss dst 93.184.216.34

# Mit lsof
lsof -i @93.184.216.34

Verbindungs-Anzahl pro IP

# Mit ss
ss -tn state established | awk '{print $5}' | cut -d: -f1 | sort | uniq -c | sort -rn

# Nur für bestimmten Port
ss -tn state established dst :80 | awk '{print $5}' | cut -d: -f1 | sort | uniq -c | sort -rn

Port belegt - was tun?

# 1. Prozess identifizieren
ss -tlnp | grep :8080

# 2. Details zum Prozess
ps aux | grep <PID>

# 3. Prozess beenden (wenn nötig)
kill <PID>
# oder
kill -9 <PID>

TIME-WAIT Verbindungen

# Anzeigen
ss -tan state time-wait

# Zählen
ss -tan state time-wait | wc -l

# Kernel-Parameter anpassen (wenn zu viele)
sysctl net.ipv4.tcp_fin_timeout=30

Netzwerk-Debugging

Verbindungsprobleme

# 1. Lokale Ports prüfen
ss -tlnp

# 2. Verbindung testen
nc -zv hostname 80

# 3. Firewall prüfen
iptables -L -n
ufw status

# 4. DNS prüfen
dig hostname
nslookup hostname

Bandbreiten-Analyse

# Mit iftop (Installation: apt install iftop)
iftop -i eth0

# Mit nethogs (nach Prozess)
nethogs eth0

# Mit vnstat (Langzeit)
vnstat -i eth0

Vergleich der Tools

| Feature | ss | netstat | lsof | |---------|-----|---------|------| | Geschwindigkeit | Schnell | Langsam | Mittel | | Kernel-Support | Direkt | /proc | /proc | | Filter-Syntax | Erweitert | Basis | Erweitert | | Prozess-Info | Ja | Ja | Detailliert | | Dateien | Nein | Nein | Ja | | Modern | Ja | Nein | Ja |

Zusammenfassung

| Befehl | Funktion | |--------|----------| | ss -tlnp | TCP Listening mit Prozessen | | ss -tunap | Alle Verbindungen | | ss -s | Statistik-Zusammenfassung | | netstat -tlnp | TCP Listening (legacy) | | lsof -i :80 | Prozesse auf Port 80 | | lsof -c nginx | Dateien von nginx |

| Option | ss | netstat | |--------|-----|---------| | TCP | -t | -t | | UDP | -u | -u | | Listening | -l | -l | | Numerisch | -n | -n | | Prozesse | -p | -p | | Alle | -a | -a |

| Diagnose | Befehl | |----------|--------| | Port belegt? | ss -tlnp \| grep :PORT | | Verbindungen zu IP | ss dst IP | | Prozess auf Port | lsof -i :PORT | | Offene Dateien | lsof -p PID |

Fazit

ss ist der moderne Standard für Netzwerk-Diagnose unter Linux. Es ist schneller und hat bessere Filter-Optionen als netstat. lsof ist unverzichtbar, wenn man wissen will, welche Dateien ein Prozess nutzt. Die Kombination dieser Tools ermöglicht umfassende Netzwerk-Analyse. Für Security-Audits ist das Wissen um offene Ports essentiell.