Grundlegende Sicherheitskonzepte (CIA-Triade) unter Linux

CompTIABeginner
Jetzt üben

Einführung

In diesem Labor erhalten Sie praktische Erfahrungen mit den grundlegenden Prinzipien der Informationssicherheit, bekannt als CIA-Triade: Vertraulichkeit (Confidentiality), Integrität (Integrity) und Verfügbarkeit (Availability). In einer Linux-Umgebung erlernen Sie praktische Fähigkeiten zum Schutz von Daten und zur Gewährleistung der Systemzuverlässigkeit. Das Labor führt Sie durch die Konfiguration von Dateiberechtigungen, demonstriert die Dateintegrität mit kryptografischen Hashes und simuliert grundlegendes Service-Monitoring, um zu verstehen, wie diese Kernkonzepte in realen Szenarien angewendet werden.

Sie beginnen mit der Manipulation von Linux-Dateiberechtigungen mithilfe des Befehls chmod, um Vertraulichkeit und Integrität für eine sensible Datei durchzusetzen und sicherzustellen, dass sie nur von autorisierten Benutzern zugänglich und änderbar ist. Als Nächstes untersuchen Sie die Dateintegrität, indem Sie MD5- und SHA256-Hashes generieren, um eine Basislinie zu erstellen, und dann überprüfen, ob die Datei unverändert bleibt. Abschließend simulieren Sie einen einfachen Dienst und verwenden grundlegende Monitoring-Befehle, um das Konzept der Verfügbarkeit zu verstehen und wie Dienstunterbrechungen erkannt werden können.

Linux-Dateiberechtigungen für Vertraulichkeit und Integrität konfigurieren

In diesem Schritt lernen Sie, wie Sie grundlegende Linux-Dateiberechtigungen verwenden, um zwei Schlüsselprinzipien der Informationssicherheit durchzusetzen: Vertraulichkeit (Confidentiality) und Integrität (Integrity). Vertraulichkeit stellt sicher, dass Daten nur für autorisierte Benutzer zugänglich sind, während Integrität sicherstellt, dass Daten nicht unbefugt verändert werden. Sie erstellen eine Datei, untersuchen ihre Standardberechtigungen und verwenden dann den Befehl chmod, um den Zugriff einzuschränken und Änderungen zu verhindern. Alle Operationen werden in Ihrem Home-Projektverzeichnis ~/project durchgeführt.

Erstellen Sie nun im Verzeichnis ~/project eine Beispieldatei, die sensible Daten repräsentiert. Wir verwenden den Befehl echo, um Text darin zu platzieren.

echo "Top Secret Details" > confidential_data.txt

Überprüfen wir, ob die Datei erstellt wurde, und zeigen Sie ihre Standardberechtigungen mit dem Befehl ls -l an, der ein langes Listenformat bereitstellt.

ls -l confidential_data.txt

Sie sehen eine Ausgabe, die dieser ähnelt. Die genaue Zeit und Größe können variieren.

-rw-rw-r-- 1 labex labex 19 Jul 21 15:09 confidential_data.txt

Lassen Sie uns die Berechtigungszeichenfolge -rw-rw-r-- aufschlüsseln:

  • Das erste Zeichen - zeigt an, dass es sich um eine reguläre Datei handelt.
  • Die nächsten drei Zeichen rw- sind die Berechtigungen für den Besitzer (Benutzer labex). r steht für Lesen (read), w für Schreiben (write).
  • Die nächsten drei rw- sind für die Gruppe (Gruppe labex). Die Gruppe kann die Datei lesen und schreiben.
  • Die letzten drei r-- sind für andere (alle anderen Benutzer im System). Sie können die Datei ebenfalls nur lesen.

Diese Standardeinstellung verletzt die Vertraulichkeit, da jeder Benutzer im System unsere "Top Secret"-Datei lesen kann. Lassen Sie uns dies beheben, indem wir die Berechtigungen so ändern, dass nur der Besitzer lesen und schreiben kann. Wir verwenden den Befehl chmod mit numerischen (oktalen) Codes: 4 für Lesen, 2 für Schreiben und 1 für Ausführen. Um dem Besitzer Lese-/Schreibzugriff (4+2=6) zu gewähren und allen Zugriff für die Gruppe (0) und andere (0) zu entfernen, verwenden wir den Code 600.

chmod 600 confidential_data.txt

Überprüfen Sie die Berechtigungen erneut:

ls -l confidential_data.txt

Die Ausgabe spiegelt nun die neuen, sichereren Berechtigungen wider, die die Vertraulichkeit gewährleisten.

-rw------- 1 labex labex 19 Jul 21 15:09 confidential_data.txt

Als Nächstes schützen wir die Integrität der Datei, indem wir sie schreibgeschützt machen, selbst für den Besitzer. Dies verhindert versehentliche Änderungen. Wir setzen die Berechtigungen auf 400, was bedeutet, dass nur der Besitzer Lesezugriff hat. Dies gewährleistet sowohl Vertraulichkeit als auch Integrität.

chmod 400 confidential_data.txt

Versuchen wir nun, die Datei zu ändern, indem wir neuen Text anhängen.

echo "This should not be added." >> confidential_data.txt

Der Vorgang schlägt fehl, und Sie sehen eine Fehlermeldung "Permission denied" (Zugriff verweigert). Dies zeigt, dass die Integrität der Datei vor Änderungen geschützt ist.

zsh: permission denied: confidential_data.txt

Überprüfen Sie abschließend ein letztes Mal die Berechtigungen, um den schreibgeschützten Zustand zu sehen.

ls -l confidential_data.txt
-r-------- 1 labex labex 19 Jul 21 15:09 confidential_data.txt

Sie haben erfolgreich Dateiberechtigungen konfiguriert, um sowohl die Vertraulichkeit als auch die Integrität zu schützen.

Dateiin­te­grität mit Hashing (MD5/SHA256) demonstrieren

In diesem Schritt lernen Sie, wie Sie kryptografisches Hashing zur Überprüfung der Dateintegrität verwenden. Während Dateiberechtigungen unbefugte Benutzer daran hindern können, eine Datei zu ändern, schützen sie nicht vor versehentlichen Änderungen durch einen autorisierten Benutzer oder vor ausgefeilteren Angriffen. Eine Hash-Funktion erstellt einen eindeutigen digitalen Fingerabdruck (eine Zeichenkette fester Länge) für eine Datei. Selbst eine Änderung eines einzigen Bits in der Datei erzeugt einen völlig anderen Hash, was sie zu einem hervorragenden Werkzeug zur Erkennung von Manipulationen macht. Wir werden den Befehl sha256sum verwenden, ein standardmäßiges und sicheres Hashing-Tool unter Linux.

Stellen Sie zunächst sicher, dass Sie sich im richtigen Verzeichnis befinden. Wenn Sie vom vorherigen Schritt fortfahren, sollten Sie sich bereits in ~/project befinden.

Im letzten Schritt haben wir confidential_data.txt schreibgeschützt gemacht, um seine Integrität zu schützen. Um zu demonstrieren, wie Hashing funktioniert, müssen wir die Datei zunächst für den Besitzer wieder beschreibbar machen. Wir verwenden chmod, um dem Benutzer (u+w) Schreibberechtigungen zurückzugeben.

chmod u+w confidential_data.txt
ls -l confidential_data.txt

Die Berechtigungen sollten nun -rw------- lauten, was anzeigt, dass der Besitzer die Datei wieder schreiben kann und dabei die Vertraulichkeit gewahrt bleibt.

-rw------- 1 labex labex 19 Jul 21 15:09 confidential_data.txt

Nun generieren wir den SHA256-Hash für unsere ursprüngliche, vertrauenswürdige Datei. Dieser Hash dient als unsere Basislinie für Integritätsprüfungen.

sha256sum confidential_data.txt

Der Befehl gibt eine lange Zeichenkette aus, den Hash, gefolgt vom Dateinamen.

106b4d0169831f239fec7a53b072640a2c0b815e00b088bbe44e6689e92cb96d  confidential_data.txt

Um die Überprüfung später zu erleichtern, ist es üblich, diesen vertrauenswürdigen Hash-Wert in einer separaten Datei zu speichern. Leiten wir die Ausgabe des Befehls in eine neue Datei namens hashes.sha256 um.

sha256sum confidential_data.txt > hashes.sha256

Sie können den Inhalt dieser neuen Datei anzeigen, um zu bestätigen, dass der Hash gespeichert wurde.

cat hashes.sha256
106b4d0169831f239fec7a53b072640a2c0b815e00b088bbe44e6689e92cb96d  confidential_data.txt

Nun simulieren wir eine unbefugte Änderung. Wir fügen unserer sensiblen Datei eine neue Textzeile hinzu.

echo "This is an unauthorized modification." >> confidential_data.txt

Die Datei confidential_data.txt wurde nun verändert. Um ihre Integrität zu überprüfen, können wir die Option -c (oder --check) mit sha256sum verwenden, um den aktuellen Hash der Datei mit dem vertrauenswürdigen Wert in hashes.sha256 zu vergleichen.

sha256sum -c hashes.sha256

Da sich der Dateiinhalt geändert hat, stimmt der neue Hash nicht mit dem gespeicherten Hash überein. Der Befehl meldet einen Fehler und beweist damit, dass die Integrität der Datei kompromittiert wurde.

confidential_data.txt: FAILED
sha256sum: WARNING: 1 computed checksum did NOT match

Diese leistungsstarke Technik ermöglicht es Ihnen, schnell und zuverlässig zu überprüfen, ob Dateien gegenüber ihrem ursprünglichen Zustand verändert wurden.

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.

Zusammenfassung

In diesem Labor haben Sie praktische Erfahrungen mit den grundlegenden Prinzipien der CIA (Confidentiality, Integrity, Availability) Sicherheitsdreifaltigkeit unter Verwendung gängiger Linux-Tools gesammelt. Sie lernten, Vertraulichkeit (Confidentiality) durch Manipulation von Linux-Dateiberechtigungen mit dem Befehl chmod durchzusetzen, indem sie den Zugriff auf eine sensible Datei einschränkten, sodass nur der autorisierte Besitzer deren Inhalt einsehen konnte. Darüber hinaus untersuchten Sie die Integrität (Integrity), indem Sie zunächst Dateiberechtigungen festlegten, um unbefugte Änderungen zu verhindern, und dann Hashing-Algorithmen wie MD5 und SHA256 verwendeten, um eine eindeutige Prüfsumme zu generieren, mit der Sie überprüfen konnten, ob eine Datei nicht manipuliert wurde.

Das Konzept der Verfügbarkeit (Availability) wurde durch die Simulation des Betriebsstatus eines Dienstes und die Durchführung grundlegender Überwachungen zur Bestätigung seiner Zugänglichkeit demonstriert. Durch diese praktischen Schritte haben Sie grundlegende Linux-Befehle angewendet, um die Kernprinzipien der Informationssicherheit praktisch zu implementieren und zu verstehen.