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 -nHä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 :80Ausgabe 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 = VerbindungsaufbauFiltern
# 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.1Statistiken
# Zusammenfassung
ss -s
# Output:
# Total: 1500 (kernel 2000)
# TCP: 450 (estab 200, closed 50, orphaned 10)
# UDP: 30netstat (Legacy)
netstat ist älter, aber auf vielen Systemen noch Standard.
Installation
# Debian/Ubuntu
apt install net-toolsGrundbefehle
# 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 -iHä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 -6lsof (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:443Nach 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 +L1Kombination 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 -9Praktische Anwendungen
Welcher Prozess nutzt Port X?
# Mit ss
ss -tlnp | grep :80
# Mit lsof
lsof -i :80
# Mit fuser
fuser 80/tcpOffene Ports des Systems
# Mit ss
ss -tlnp
# Mit netstat
netstat -tlnp
# Externe Prüfung (von außen)
nmap -sT localhostVerbindungen zu externem Host
# Alle Verbindungen zu IP
ss dst 93.184.216.34
# Mit lsof
lsof -i @93.184.216.34Verbindungs-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 -rnPort 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=30Netzwerk-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 hostnameBandbreiten-Analyse
# Mit iftop (Installation: apt install iftop)
iftop -i eth0
# Mit nethogs (nach Prozess)
nethogs eth0
# Mit vnstat (Langzeit)
vnstat -i eth0Vergleich 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.