Einleitung
Network Traffic Monitoring ist ein essentieller Bestandteil der Systemadministration und Sicherheitsüberwachung in Linux-Umgebungen. Durch die kontinuierliche Überwachung des Netzwerkverkehrs können Administratoren verdächtige Aktivitäten, Performance-Probleme und Sicherheitsbedrohungen frühzeitig erkennen. Dieses Tutorial zeigt Ihnen, wie Sie verschiedene Tools einsetzen, um den Netzwerkverkehr zu überwachen und auffällige Dienste zu identifizieren.
Mit den richtigen Monitoring-Tools können Sie:
- Ungewöhnliche Netzwerkaktivitäten in Echtzeit erkennen
- Bandwidth-intensive Anwendungen identifizieren
- Verdächtige Verbindungen zu externen Hosts aufspüren
- Performance-Engpässe im Netzwerk lokalisieren
- Compliance-Anforderungen erfüllen
Systemvoraussetzungen
| Komponente | Minimum | Empfohlen |
|---|---|---|
| CPU | 2 Cores | 4+ Cores |
| RAM | 2 GB | 8+ GB |
| Festplatte | 10 GB frei | 50+ GB SSD |
| Betriebssystem | Ubuntu 18.04+, CentOS 7+, Debian 10+ | Ubuntu 22.04+, RHEL 8+, Debian 11+ |
| Netzwerk | 100 Mbps | 1 Gbps+ |
Benötigte Ports
| Port | Protokoll | Dienst | Firewall öffnen |
|---|---|---|---|
| 161 | UDP | SNMP (optional) | Ja, wenn SNMP genutzt wird |
| 514 | UDP | Syslog | Ja, für Remote-Logging |
| 9090 | TCP | Prometheus (optional) | Ja, für Web-Interface |
| 3000 | TCP | Grafana (optional) | Ja, für Web-Interface |
Vorbereitung
System aktualisieren
Aktualisieren Sie zunächst Ihr System auf den neuesten Stand:
# Ubuntu/Debian
sudo apt update && sudo apt upgrade -y
# CentOS/RHEL/Rocky Linux
sudo yum update -y
# oder bei neueren Versionen
sudo dnf update -y
Abhängigkeiten installieren
Installieren Sie die grundlegenden Pakete für Network Monitoring:
# Ubuntu/Debian
sudo apt install -y \
net-tools \
tcpdump \
wireshark-common \
tshark \
nmap \
netstat-nat \
ss \
iftop \
nethogs \
vnstat \
bmon \
nload \
iotop \
htop \
curl \
wget \
git \
python3 \
python3-pip
# CentOS/RHEL/Rocky Linux
sudo yum install -y \
net-tools \
tcpdump \
wireshark \
nmap \
iftop \
nethogs \
vnstat \
nload \
iotop \
htop \
curl \
wget \
git \
python3 \
python3-pip
# Zusätzliche Pakete über EPEL (CentOS/RHEL)
sudo yum install -y epel-release
sudo yum install -y bmon
Installation der Monitoring-Tools
Bandwhich installieren
Bandwhich ist ein modernes Tool zur Anzeige der aktuellen Netzwerknutzung nach Prozessen:
# Installation über Cargo (Rust)
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
source ~/.cargo/env
cargo install bandwhich
# Alternative: Download des Binaries
wget https://github.com/imsnif/bandwhich/releases/latest/download/bandwhich-v0.20.0-x86_64-unknown-linux-musl.tar.gz
tar -xzf bandwhich-v0.20.0-x86_64-unknown-linux-musl.tar.gz
sudo mv bandwhich /usr/local/bin/
sudo chmod +x /usr/local/bin/bandwhich
Suricata für Intrusion Detection installieren
# Ubuntu/Debian
sudo apt install -y suricata
# CentOS/RHEL
sudo yum install -y suricata
# Suricata Regeln aktualisieren
sudo suricata-update
Ntopng installieren
# Ubuntu/Debian
sudo apt install -y ntopng
# CentOS/RHEL - über EPEL
sudo yum install -y ntopng
Konfiguration
Vnstat konfigurieren
# Netzwerkinterface für Monitoring konfigurieren
sudo vnstat -i eth0 --create
# Vnstat-Daemon konfigurieren
sudo systemctl enable vnstat
sudo systemctl start vnstat
Suricata konfigurieren
# /etc/suricata/suricata.yaml
HOME_NET: "[192.168.0.0/16,10.0.0.0/8,172.16.0.0/12]"
EXTERNAL_NET: "!$HOME_NET"
# Interface konfigurieren
af-packet:
- interface: eth0
cluster-id: 99
cluster-type: cluster_flow
defrag: yes
# Logging konfigurieren
outputs:
- fast:
enabled: yes
filename: fast.log
- eve-log:
enabled: yes
filetype: regular
filename: eve.json
Ntopng konfigurieren
# /etc/ntopng/ntopng.conf
-P=/var/lib/ntopng/ntopng.pid
-d=/var/lib/ntopng
-w=3000
-i=eth0
-m=192.168.1.0/24
--community
--disable-login
Firewall-Regeln setzen
UFW (Ubuntu/Debian)
# Ntopng Web-Interface
sudo ufw allow 3000/tcp
# SNMP (falls benötigt)
sudo ufw allow 161/udp
# Syslog (für Remote-Logging)
sudo ufw allow 514/udp
Firewalld (CentOS/RHEL)
# Ntopng Web-Interface
sudo firewall-cmd --permanent --add-port=3000/tcp
# SNMP (falls benötigt)
sudo firewall-cmd --permanent --add-port=161/udp
# Regelwerk neu laden
sudo firewall-cmd --reload
Dienste starten und aktivieren
# Vnstat
sudo systemctl enable vnstat
sudo systemctl start vnstat
# Suricata
sudo systemctl enable suricata
sudo systemctl start suricata
# Ntopng
sudo systemctl enable ntopng
sudo systemctl start ntopng
# Status überprüfen
sudo systemctl status vnstat suricata ntopng
Installation verifizieren
Grundlegende Netzwerküberwachung testen
# Aktuelle Verbindungen anzeigen
ss -tulnp
# Netzwerkverkehr nach Prozessen anzeigen
sudo nethogs
# Bandwidth-Monitoring
sudo iftop -i eth0
# Netzwerkstatistiken
vnstat -i eth0
# Bandwhich ausführen
sudo bandwhich
# Suricata-Logs überprüfen
sudo tail -f /var/log/suricata/fast.log
Ntopng Web-Interface testen
Öffnen Sie einen Webbrowser und navigieren Sie zu http://SERVER_IP:3000
Auffällige Dienste identifizieren
# Top-Verbraucher nach Netzwerkverkehr
sudo netstat -i
sudo ss -tuln | grep LISTEN
# Ungewöhnliche Verbindungen finden
sudo lsof -i -P -n | grep LISTEN
sudo netstat -tulpn | grep LISTEN
# Prozesse mit hohem Netzwerkverbrauch
sudo iotop -o -n 10
# Verdächtige Verbindungen zu externen Hosts
sudo netstat -an | grep ESTABLISHED | awk '{print $5}' | cut -d: -f1 | sort | uniq -c | sort -nr
Monitoring-Skripte
Automatisches Monitoring-Skript
#!/bin/bash
# /opt/monitor-network.sh
LOG_FILE="/var/log/network-monitor.log"
THRESHOLD_MBPS=100
echo "$(date): Network monitoring started" >> $LOG_FILE
# Prüfe auf ungewöhnlich hohen Datenverkehr
while true; do
# Aktuelle Bandwidth messen
RX_BYTES=$(cat /sys/class/net/eth0/statistics/rx_bytes)
TX_BYTES=$(cat /sys/class/net/eth0/statistics/tx_bytes)
sleep 5
RX_BYTES_NEW=$(cat /sys/class/net/eth0/statistics/rx_bytes)
TX_BYTES_NEW=$(cat /sys/class/net/eth0/statistics/tx_bytes)
RX_RATE=$(( (RX_BYTES_NEW - RX_BYTES) / 5 / 1024 / 1024 * 8 ))
TX_RATE=$(( (TX_BYTES_NEW - TX_BYTES) / 5 / 1024 / 1024 * 8 ))
if [ $RX_RATE -gt $THRESHOLD_MBPS ] || [ $TX_RATE -gt $THRESHOLD_MBPS ]; then
echo "$(date): High traffic detected - RX: ${RX_RATE}Mbps, TX: ${TX_RATE}Mbps" >> $LOG_FILE
# Top-Prozesse nach Netzwerkverbrauch loggen
echo "Top network processes:" >> $LOG_FILE
sudo nethogs -t >> $LOG_FILE 2>/dev/null &
sleep 10
pkill nethogs
fi
done
# Skript ausführbar machen und als Service einrichten
sudo chmod +x /opt/monitor-network.sh
# Systemd Service erstellen
sudo tee /etc/systemd/system/network-monitor.service << EOF
[Unit]
Description=Network Traffic Monitor
After=network.target
[Service]
Type=simple
User=root
ExecStart=/opt/monitor-network.sh
Restart=always
RestartSec=10
[Install]
WantedBy=multi-user.target
EOF
sudo systemctl daemon-reload
sudo systemctl enable network-monitor
sudo systemctl start network-monitor
Troubleshooting
Häufige Fehler und Lösungen
# Lösung: Tools mit sudo ausführen oder User zu Gruppen hinzufügen
sudo usermod -a -G wireshark $USER
# Nach Gruppenzuweisung neu anmelden
# Logs prüfen
sudo journalctl -u ntopng -f
# Häufige Lösung: Redis-Server installieren
sudo apt install redis-server # Ubuntu/Debian
sudo yum install redis # CentOS/RHEL
sudo systemctl enable redis
sudo systemctl start redis
# Netzwerkinterface prüfen
ip link show
# Suricata-Konfiguration testen
sudo suricata -T -c /etc/suricata/suricata.yaml
# Interface-Konfiguration in /etc/suricata/suricata.yaml anpassen
# Stelle sicher, dass das richtige Interface konfiguriert ist
# Capabilities setzen
sudo setcap cap_sys_ptrace,cap_dac_read_search,cap_net_raw,cap_net_admin+ep /usr/local/bin/bandwhich
# Oder mit sudo ausführen
sudo bandwhich
Log-Dateien für Debugging
/var/log/suricata/suricata.log– Suricata Hauptlog/var/log/suricata/fast.log– Schnelle Alarm-Übersicht/var/log/ntopng/ntopng.log– Ntopng Logs/var/log/syslog– System-Logs für alle Dienste/var/log/network-monitor.log– Unser Custom Monitor
Erweiterte Analyse-Techniken
Packet Capture und Analyse
# Verdächtige Verbindungen aufzeichnen
sudo tcpdump -i eth0 -w suspicious-traffic.pcap host suspicious.ip.address
# Analyse mit tshark
tshark -r suspicious-traffic.pcap -T fields -e ip.src -e ip.dst -e tcp.port -e frame.time
# HTTP-Traffic analysieren
sudo tcpdump -i eth0 -A -s 0 'port 80'
Automatische Benachrichtigungen
# E-Mail-Benachrichtigung bei auffälligem Traffic
#!/bin/bash
# /opt/alert-monitor.sh
ALERT_EMAIL="admin@domain.com"
LOGFILE="/var/log/suricata/fast.log"
# Neue Alerts überwachen
tail -F $LOGFILE | while read line; do
if echo "$line" | grep -q "MALWARE\|EXPLOIT\|TROJAN"; then
echo "Security Alert: $line" | mail -s "Network Security Alert" $ALERT_EMAIL
fi
done
Updates und Wartung
Regelmäßige Wartungsaufgaben
# Suricata-Regeln aktualisieren
sudo suricata-update
sudo systemctl reload suricata
# Log-Rotation einrichten
sudo tee /etc/logrotate.d/network-monitor << EOF
/var/log/network-monitor.log {
daily
rotate 30
compress
delaycompress
missingok
notifempty
create 0644 root root
}
EOF
# System-Updates
sudo apt update && sudo apt upgrade -y # Ubuntu/Debian
sudo yum update -y # CentOS/RHEL
Performance-Optimierung
# Für hochfrequentes Monitoring - Kernel-Parameter optimieren
echo 'net.core.rmem_max = 134217728' | sudo tee -a /etc/sysctl.conf
echo 'net.core.rmem_default = 67108864' | sudo tee -a /etc/sysctl.conf
echo 'net.core.wmem_max = 134217728' | sudo tee -a /etc/sysctl.conf
echo 'net.core.wmem_default = 67108864' | sudo tee -a /etc/sysctl.conf
sudo sysctl -p
Fazit und nächste Schritte
Sie haben erfolgreich ein umfassendes Network Traffic Monitoring-System auf Ihrem Linux-Server eingerichtet. Das System ermöglicht es Ihnen:
- Netzwerkverkehr in Echtzeit zu überwachen
- Auffällige Dienste und Verbindungen zu identifizieren
- Sicherheitsbedrohungen frühzeitig zu erkennen
- Performance-Probleme zu diagnostizieren
- Automatische Alerts bei verdächtigen Aktivitäten zu erhalten
Empfohlene nächste Schritte
- Elasticsearch und Kibana für erweiterte Log-Analyse einrichten
- Prometheus und Grafana für Metriken und Dashboards konfigurieren
- Zeek (Bro) für Deep Packet Inspection installieren
- Nagios oder Zabbix für umfassendes Infrastructure-Monitoring
- Threat Intelligence Feeds in Suricata integrieren
- Machine Learning basierte Anomalieerkennung implementieren
Regelmäßige Überprüfungen und Updates der Monitoring-Tools sowie kontinuierliche Anpassung der Erkennungsregeln sind essentiell für ein effektives Network Security Monitoring.