2024-11-28 15:27:58 +01:00
2024-11-28 14:51:11 +01:00
2024-11-28 14:15:29 +01:00
2024-11-28 15:27:58 +01:00

VPN Monitoring Script

Überblick

Dieses Projekt implementiert ein flexibles und robustes VPN-Überwachungsskript, das den Netzwerkverkehr und die VPN-Funktionalität überprüft. Das Skript bietet zeitabhängige Prüfungen und die Möglichkeit, bei Erkennung von Problemen den VPN-Dienst automatisch neu zu starten. Das Skript wurde modular aufgebaut, um die Wartbarkeit und Erweiterbarkeit zu verbessern.

Funktionen

  1. Netzwerkverkehrsprüfung:

    • Misst den eingehenden und ausgehenden Netzwerkverkehr eines bestimmten Netzwerkinterfaces.
    • Verwendet Schwellenwerte zur Bewertung der Verbindung.
    • Automatischer Dienstneustart bei Abweichung von Schwellwerten.
  2. SQL-basierte Aktivitätsprüfung (außerhalb der Hauptarbeitszeit):

    • Überprüft die Datenbank auf Aktivitäten, die durch spezifische Benutzer oder Dienste ausgelöst wurden.
    • Erkennt inaktive Verbindungen und leitet notwendige Schritte ein.
  3. Automatischer Neustart des VPN-Dienstes:

    • Führt einen Dienstneustart remote über SSH aus.
    • Überprüft die Funktionalität nach dem Neustart.
  4. Detailliertes Logging:

    • JSON-basiertes Logging für maschinenlesbare und gut strukturierte Ausgaben.
    • Logrotation zum Schutz vor übermäßigem Speicherverbrauch.
  5. Konfigurierbarkeit:

    • Anpassbare Zeitfenster, Schwellenwerte, Datenbankeinstellungen und SSH-Verbindungsdetails.
    • Modularer Aufbau für einfache Anpassungen und Erweiterungen.

Installationsanleitung

Systemanforderungen

  • Betriebssystem: Linux (z. B. Ubuntu, Debian, CentOS)
  • Pakete:
    • ifstat
    • mysql-client
    • openssh-client
    • logrotate
    • bc (für Gleitkommaoperationen)

Installation

  1. Klone das Repository oder kopiere die Skriptdateien auf deinen Server:

    git clone https://git.admins.tech/no/vpn-con-checker.git
    cd vpn-con-checker
    
  2. Stelle sicher, dass die erforderlichen Pakete installiert sind:

    sudo apt update
    sudo apt install ifstat mysql-client openssh-client logrotate bc
    
  3. Konfiguriere die Berechtigungen:

    chmod +x vpn_monitor.sh
    chmod +x functions/*.sh
    
  4. Kopiere config.conf.sample zu config.conf und passe die Datei an:

    • Definiere Netzwerkinterface, Schwellenwerte, Datenbankeinstellungen, SSH-Details und Logdateipfad.
  5. (Optional) Füge die Logrotation hinzu:

    • Kopiere die Datei logrotate/vpn_monitor nach /etc/logrotate.d/:
      sudo cp logrotate/vpn_monitor /etc/logrotate.d/
      
  6. Plane das Skript mit Cron:

    • Öffne den Cron-Editor:
      crontab -e
      
    • Füge den Eintrag hinzu, um das Skript regelmäßig auszuführen:
      */5 * * * * /path/to/vpn_monitor.sh
      

Nutzung

Konfiguration

Die Einstellungen werden in der Datei config.conf vorgenommen. Nachfolgend eine Übersicht der wichtigsten Parameter:

Parameter Beschreibung Standardwert
INTERFACE Netzwerkinterface zur Überwachung ens19
LOG_FILE Pfad zur Logdatei /var/log/vpn_monitor.log
THRESHOLD_INBOUND Schwellenwert für eingehenden Verkehr (KB/s) 0.5
THRESHOLD_OUTBOUND Schwellenwert für ausgehenden Verkehr (KB/s) 0.5
MEASUREMENT_COUNT Anzahl der Messzyklen 10
INTERVAL Intervall zwischen Messungen (Sekunden) 6
DB_USER Benutzername für die Datenbank username
DB_PASSWORD Passwort für die Datenbank password
DB_NAME Name der Datenbank database
SSH_KEY Pfad zur SSH-Schlüsseldatei /path/to/private_key
SSH_USER Benutzername für SSH user
SSH_HOST Hostname oder IP der SSH-Verbindung remote_host
SERVICE_NAME VPN-Dienst automatisch neu starten false
SERVICE_NAME Name des zu überprüfenden Dienstes ipsec.service

Ablauf

Innerhalb der Hauptarbeitszeit (07:00-18:00 Uhr)

  • Misst eingehenden und ausgehenden Netzwerkverkehr.
  • Vergleicht die Durchschnittswerte mit den definierten Schwellenwerten.
  • Protokolliert den Status.
  • Führt bei Bedarf einen Neustart des VPN-Dienstes aus.

Außerhalb der Hauptarbeitszeit (18:00-07:00 Uhr)

  • Überprüft SQL-Aktivitäten:
    • Letzter Eintrag eines bestimmten Benutzers.
    • Letzter Eintrag eines spezifischen Dienstes im Log.
  • Leitet einen Neustart ein, wenn Aktivitätskriterien nicht erfüllt sind.

Fehlerbehandlung

Das Skript behandelt potenzielle Fehler folgendermaßen:

  1. Netzwerkfehler:
    • Kein Output von ifstat: Meldet einen Fehler und bricht ab.
  2. SQL-Verbindungsfehler:
    • Fehlschlagende SQL-Abfragen werden geloggt und führen zum Abbruch.
  3. SSH-Fehler:
    • Fehler beim Neustart des Dienstes werden detailliert protokolliert.
  4. Dienstprüfung:
    • Nach Neustart überprüft ipsec statusall den Dienststatus. Fehlerhafte Zustände führen zur Eskalation.

Logging

  • Logs werden standardmäßig unter /var/log/vpn_monitor.log gespeichert.
  • JSON-Format für maschinenlesbare Logs.
  • Beispiel eines Logeintrags:
    {
      "timestamp": "2024-11-28 12:45:00",
      "level": "INFO",
      "message": "Network traffic is above thresholds. Avg In: 0.6 KB/s, Avg Out: 0.7 KB/s."
    }
    

Erweiterungsideen

  1. Benachrichtigungssystem:
    • Integration eines E-Mail- oder Push-Benachrichtigungssystems bei Eskalationen.
  2. Multithreading:
    • Parallele Prüfung mehrerer Netzwerkinterfaces oder SQL-Datenbanken.
  3. Web-Dashboard:
    • Echtzeit-Monitoring und Visualisierung der Logs über eine Weboberfläche.
  4. Externe API-Integration:
    • Verknüpfung mit Monitoring-Tools wie Zabbix oder Prometheus.

Autoren


Lizenz

Dieses Projekt steht unter der MIT-Lizenz. Weitere Informationen findest du in der Datei LICENSE.

S
Description
No description provided
Readme
67 KiB
Languages
Shell 100%