6.5 KiB
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
-
Netzwerkverkehrsprüfung:
- Misst den eingehenden und ausgehenden Netzwerkverkehr eines bestimmten Netzwerkinterfaces.
- Verwendet Schwellenwerte zur Bewertung der Verbindung.
- Automatischer Dienstneustart bei Abweichung von Schwellwerten.
-
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.
-
Automatischer Neustart des VPN-Dienstes:
- Führt einen Dienstneustart remote über SSH aus.
- Überprüft die Funktionalität nach dem Neustart.
-
Detailliertes Logging:
- JSON-basiertes Logging für maschinenlesbare und gut strukturierte Ausgaben.
- Logrotation zum Schutz vor übermäßigem Speicherverbrauch.
-
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:
ifstatmysql-clientopenssh-clientlogrotatebc(für Gleitkommaoperationen)
Installation
-
Klone das Repository oder kopiere die Skriptdateien auf deinen Server:
git clone <repository-url> cd vpn-monitor -
Stelle sicher, dass die erforderlichen Pakete installiert sind:
sudo apt update sudo apt install ifstat mysql-client openssh-client logrotate bc -
Konfiguriere die Berechtigungen:
chmod +x vpn_monitor.sh chmod +x functions/*.sh -
Passe die
config.confDatei an:- Definiere Netzwerkinterface, Schwellenwerte, Datenbankeinstellungen, SSH-Details und Logdateipfad.
-
(Optional) Füge die Logrotation hinzu:
- Kopiere die Datei
logrotate/vpn_monitornach/etc/logrotate.d/:sudo cp logrotate/vpn_monitor /etc/logrotate.d/
- Kopiere die Datei
-
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
- Öffne den Cron-Editor:
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 |
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:
- Netzwerkfehler:
- Kein Output von
ifstat: Meldet einen Fehler und bricht ab.
- Kein Output von
- SQL-Verbindungsfehler:
- Fehlschlagende SQL-Abfragen werden geloggt und führen zum Abbruch.
- SSH-Fehler:
- Fehler beim Neustart des Dienstes werden detailliert protokolliert.
- Dienstprüfung:
- Nach Neustart überprüft
ipsec statusallden Dienststatus. Fehlerhafte Zustände führen zur Eskalation.
- Nach Neustart überprüft
Logging
- Logs werden standardmäßig unter
/var/log/vpn_monitor.loggespeichert. - 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
- Benachrichtigungssystem:
- Integration eines E-Mail- oder Push-Benachrichtigungssystems bei Eskalationen.
- Multithreading:
- Parallele Prüfung mehrerer Netzwerkinterfaces oder SQL-Datenbanken.
- Web-Dashboard:
- Echtzeit-Monitoring und Visualisierung der Logs über eine Weboberfläche.
- Externe API-Integration:
- Verknüpfung mit Monitoring-Tools wie Zabbix oder Prometheus.
Autoren
- Dein Name
E-Mail: [email protected]
GitHub: DeinGitHub
Lizenz
Dieses Projekt steht unter der MIT-Lizenz. Weitere Informationen findest du in der Datei LICENSE.