Sicherheit & Härtung

Linux Network Traffic Monitoring – Auffällige Dienste identifizieren

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
⚠️ Hinweis: Stellen Sie sicher, dass Sie über ausreichende Berechtigung verfügen, um Netzwerkverkehr zu überwachen. Root-Rechte sind für die meisten Monitoring-Tools erforderlich.

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

⚠️ Problem: „Permission denied“ beim Ausführen von Monitoring-Tools
# Lösung: Tools mit sudo ausführen oder User zu Gruppen hinzufügen
sudo usermod -a -G wireshark $USER
# Nach Gruppenzuweisung neu anmelden
⚠️ Problem: Ntopng startet nicht
# 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
⚠️ Problem: Keine Daten in Suricata-Logs
# 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
⚠️ Problem: Bandwhich zeigt keine Daten
# 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
⚠️ Wichtiger Hinweis: Stellen Sie sicher, dass Ihr Monitoring den Datenschutzbestimmungen und Compliance-Anforderungen Ihrer Organisation entspricht. Dokumentieren Sie alle überwachten Aktivitäten ordnungsgemäß.

Regelmäßige Überprüfungen und Updates der Monitoring-Tools sowie kontinuierliche Anpassung der Erkennungsregeln sind essentiell für ein effektives Network Security Monitoring.