Service-Verfügbarkeit und Basis-Monitoring simulieren
In diesem Schritt werden Sie das Prinzip der Verfügbarkeit (Availability), die dritte Komponente der CIA-Sicherheitsdreifaltigkeit, untersuchen. Verfügbarkeit stellt sicher, dass Systeme und Dienste bei Bedarf betriebsbereit und zugänglich sind. Sie werden einen einfachen Webdienst simulieren, lernen, wie Sie überprüfen, ob er läuft, einen Dienstausfall simulieren und dann ein grundlegendes Überwachungsskript schreiben, um die Verfügbarkeitsprüfung zu automatisieren.
Stellen Sie zunächst sicher, dass Sie sich im Verzeichnis ~/project befinden.
Wir werden den integrierten Webserver von Python verwenden, um einen laufenden Dienst zu simulieren. Dieser Befehl startet einen Webserver auf Port 8000 und bedient die Dateien im aktuellen Verzeichnis. Das & am Ende führt den Prozess im Hintergrund aus, sodass Sie Ihr Terminal weiterhin nutzen können.
python3 -m http.server 8000 &
Sie sehen eine Meldung, die den Start des Prozesses zusammen mit seiner Prozess-ID (PID) anzeigt.
[1] 12345
Drücken Sie Enter, um fortzufahren.
Ihr Dienst läuft nun. Eine grundlegende Methode zur Überprüfung, ob ein Dienst läuft, besteht darin, zu sehen, ob sein Prozess existiert. Wir können den Befehl pgrep verwenden, um die PID eines Prozesses anhand seines Namens zu finden.
pgrep -f http.server
Dies sollte die PID des Serverprozesses zurückgeben und bestätigen, dass er im Speicher läuft.
12345
Ein laufender Prozess garantiert jedoch nicht, dass der Dienst korrekt funktioniert. Eine bessere Überprüfung ist, zu versuchen, eine Verbindung herzustellen, genau wie es ein Benutzer tun würde. Wir verwenden den Befehl curl, um eine Anfrage an unseren lokalen Server zu senden.
curl http://localhost:8000/confidential_data.txt
Da der Dienst verfügbar ist, wird er mit dem Inhalt der Datei antworten, die Sie in den vorherigen Schritten erstellt haben.
Top Secret Details
This is an unauthorized modification.
Lassen Sie uns nun einen Dienstausfall simulieren. Wir verwenden den Befehl kill, um den Webserverprozess zu beenden. Sie benötigen die PID, die Sie zuvor gefunden haben.
## Ersetzen Sie 12345 durch die tatsächliche PID aus dem pgrep-Befehl
kill 12345
Nachdem Sie kill ausgeführt haben, sehen Sie möglicherweise eine Meldung "Terminated" für den Hintergrundjob. Versuchen wir nun erneut, mit curl auf den Dienst zuzugreifen.
curl http://localhost:8000/confidential_data.txt
Dieses Mal schlägt der Befehl fehl, da der Dienst nicht mehr läuft und die Verbindung nicht akzeptieren kann. Dies demonstriert einen Mangel an Verfügbarkeit.
curl: (7) Failed to connect to localhost port 8000 after 0 ms: Connection refused
Schließlich erstellen wir ein einfaches Überwachungsskript, um diese Prüfung zu automatisieren. Erstellen Sie eine neue Datei namens monitor.sh mit nano.
nano monitor.sh
Geben Sie das folgende Skript in den Editor ein. Dieses Skript verwendet curl, um den Dienst zu überprüfen. Wenn es eine erfolgreiche Antwort (200 OK) erhält, meldet es, dass der Dienst "UP" ist; andernfalls meldet es "DOWN".
#!/bin/bash
## Überprüfen, ob der Dienst unter localhost:8000 antwortet
if curl -s --head http://localhost:8000 | grep "200 OK" > /dev/null; then
echo "Service Status: UP"
else
echo "Service Status: DOWN"
fi
Speichern Sie die Datei und beenden Sie nano, indem Sie Ctrl+X, dann Y und Enter drücken.
Machen Sie das Skript mit chmod ausführbar:
chmod +x monitor.sh
Führen Sie nun Ihr Überwachungsskript aus. Da der Dienst gestoppt ist, sollte es "DOWN" melden.
./monitor.sh
Service Status: DOWN
Sie haben nun gelernt, wie man einen Dienst startet, seine Verfügbarkeit prüft, einen Ausfall simuliert und ein grundlegendes Skript zur Überwachung erstellt.