Kali Automatisierung mit Bash und Python

Kali LinuxKali LinuxBeginner
Jetzt üben

💡 Dieser Artikel wurde von AI-Assistenten übersetzt. Um die englische Version anzuzeigen, können Sie hier klicken

Einführung

In diesem Lab lernen Sie, wie Sie Aufgaben in Kali Linux mithilfe von Bash- und Python-Skripten innerhalb der LabEx VM-Umgebung automatisieren können. Der Schwerpunkt liegt auf der Straffung sich wiederholender Sicherheitsauditing-Aufgaben wie Netzwerk-Scanning mit Nmap und Log-Parsing. Sie erstellen Skripte, legen Berechtigungen fest, planen automatisierte Aufgaben mit Cron-Jobs und testen deren Ausführung. Dieses Lab ist für Anfänger konzipiert und bietet detaillierte, schrittweise Anleitungen zum Aufbau grundlegender Automatisierungsfähigkeiten in einem Kali Linux-Container. Wenn Sie das Terminal öffnen, werden Sie automatisch mit der Shell des Kali Linux-Containers verbunden und können sofort mit dem Üben beginnen.

Einrichten der Umgebung und Installieren von Tools

In diesem ersten Schritt richten Sie Ihre Arbeitsumgebung innerhalb des Kali Linux-Containers ein und installieren die für das Lab benötigten Tools. Dies ist ein grundlegender Schritt, um sicherzustellen, dass Sie über die gesamte erforderliche Software für Automatisierungsaufgaben wie Netzwerk-Scanning und Log-Parsing verfügen.

Wenn Sie das Terminal in der LabEx VM öffnen, werden Sie automatisch mit der Shell des Kali Linux-Containers verbunden. Sie müssen den Container nicht manuell starten oder die Shell betreten; die Umgebung ist bereits für Sie konfiguriert.

Beginnen wir damit, die Paketliste zu aktualisieren und wichtige Tools wie nmap für das Netzwerk-Scanning und python3 für das Scripting zu installieren. Diese Tools sind für die folgenden Aufgaben von entscheidender Bedeutung. Führen Sie die folgenden Befehle im Terminal aus, um das System zu aktualisieren und die erforderlichen Pakete zu installieren. Drücken Sie nach jedem Befehl die Eingabetaste:

apt update
apt install -y nmap python3

Diese Befehle aktualisieren die Paketliste und installieren nmap und python3, falls sie noch nicht vorhanden sind. Die Installation kann einige Momente dauern, bitte warten Sie, bis sie abgeschlossen ist. Sie sehen eine Ausgabe, die den Fortschritt des Download- und Installationsprozesses anzeigt.

Sobald die Installation abgeschlossen ist, überprüfen Sie, ob nmap installiert ist, indem Sie die Version überprüfen. Führen Sie diesen Befehl aus:

nmap --version

Die erwartete Ausgabe sieht in etwa so aus (Versionsnummern können variieren):

Nmap version 7.91 ( https://nmap.org )
Platform: x86_64-pc-linux-gnu
Compiled with: liblua-5.3.6 openssl-1.1.1n libpcre-8.39 libpcap-1.10.1 nmap-libdnet-1.12 ipv6
Compiled without:
Available NSE scripts: 609

Dies bestätigt, dass nmap installiert und einsatzbereit ist. Überprüfen Sie als Nächstes, ob python3 installiert ist, indem Sie Folgendes ausführen:

python3 --version

Die erwartete Ausgabe ähnelt dieser (Versionsnummern können variieren):

Python 3.9.2

Dies verifiziert, dass python3 für Scripting-Aufgaben verfügbar ist. Mit diesen installierten Tools haben Sie die Kali Linux-Containerumgebung für die Automatisierungsaufgaben in den folgenden Schritten vorbereitet. Dieser Schritt stellt sicher, dass alle nachfolgenden Operationen ohne Probleme im Zusammenhang mit fehlender Software durchgeführt werden können.

Erstellen eines Bash-Skripts für Nmap-Scans

Nachdem Ihre Umgebung mit den notwendigen Tools eingerichtet wurde, erstellen wir ein Bash-Skript, um Nmap-Scans zu automatisieren. Bash-Scripting ist eine leistungsstarke Möglichkeit, sich wiederholende Aufgaben in Linux zu automatisieren, und in diesem Schritt lernen Sie, wie Sie ein einfaches Skript schreiben, um einen Nmap-Scan auf localhost auszuführen.

Ein Bash-Skript ist eine reine Textdatei, die eine Reihe von Befehlen enthält, die von der Shell ausgeführt werden. Dies ermöglicht es Ihnen, Zeit zu sparen, indem Sie mehrere Befehle mit einer einzigen Ausführung ausführen. Da Sie sich bereits in der Shell des Kali Linux-Containers befinden (automatisch verbunden, wenn Sie das Terminal öffnen), können Sie direkt mit der Arbeit beginnen.

Erstellen wir ein Skript namens nmap_scan.sh im Verzeichnis /root. Befolgen Sie diese Anweisungen sorgfältig, um das Skript zu erstellen und zu speichern. Führen Sie den folgenden Befehl aus, um den Texteditor nano zu öffnen und eine neue Datei zu erstellen:

nano /root/nmap_scan.sh

Dadurch wird der Editor nano geöffnet. Geben Sie nun den folgenden Inhalt ein oder fügen Sie ihn in den Editor ein:

#!/bin/bash
echo "Starting Nmap scan on localhost..."
nmap localhost
echo "Scan completed."

Lassen Sie uns dieses Skript verstehen. Die Zeile #!/bin/bash gibt an, dass es sich um ein Bash-Skript handelt. Die echo-Befehle geben Nachrichten an das Terminal aus, um Sie über den Start und das Ende des Scans zu informieren. Der Befehl nmap localhost führt einen einfachen Scan auf Ihrem lokalen Rechner aus, was ein sicheres Ziel für Lernzwecke ist.

Um die Datei in nano zu speichern, drücken Sie Ctrl+O und dann Enter, um den Dateinamen /root/nmap_scan.sh zu bestätigen. Drücken Sie nach dem Speichern Ctrl+X, um den Editor zu verlassen. Sie kehren zur Terminal-Eingabeaufforderung zurück.

Überprüfen Sie nun, ob die Datei erfolgreich erstellt wurde, indem Sie den Inhalt des Verzeichnisses /root auflisten. Führen Sie diesen Befehl aus:

ls -l /root

Sie sollten eine Ausgabe ähnlich dieser sehen:

-rw-r--r-- 1 root root  85 Oct 12 10:15 nmap_scan.sh

Dies bestätigt, dass die Datei nmap_scan.sh im Verzeichnis /root existiert. Im nächsten Schritt machen Sie dieses Skript ausführbar und testen es. Vorerst haben Sie erfolgreich Ihr erstes Automatisierungsskript für das Netzwerk-Scanning erstellt.

Erstellen eines Python-Skripts für das Log-Parsing

Nachdem Sie ein Bash-Skript für Nmap-Scans erstellt haben, schreiben wir nun ein Python-Skript, um das Log-Parsing zu automatisieren. Log-Parsing ist eine gängige Aufgabe in der Sicherheitsanalyse, bei der Sie spezifische Informationen aus Logdateien extrahieren. Python ist dafür ideal, da es einfach ist und über leistungsstarke Textverarbeitungsfähigkeiten verfügt.

In diesem Schritt erstellen Sie ein Python-Skript namens log_parser.py im Verzeichnis /root, um eine Beispiel-Logdatei zu parsen. Da Sie sich bereits in der Shell des Kali Linux-Containers befinden (automatisch verbunden, wenn Sie das Terminal öffnen), können Sie direkt mit den Aufgaben fortfahren.

Zuerst erstellen wir eine Beispiel-Logdatei zum Parsen. Führen Sie den folgenden Befehl aus, um eine Datei namens sample.log im Verzeichnis /root mit einigen Dummy-Logeinträgen zu erstellen:

echo -e "2023-10-12 10:00:00 INFO System started\n2023-10-12 10:01:00 ERROR Connection failed\n2023-10-12 10:02:00 INFO User logged in" > /root/sample.log

Überprüfen Sie, ob die Datei erstellt wurde, indem Sie den Inhalt des Verzeichnisses /root auflisten:

ls -l /root

Sie sollten eine Ausgabe ähnlich dieser sehen:

-rw-r--r-- 1 root root 112 Oct 12 10:20 sample.log

Erstellen wir nun das Python-Skript. Öffnen Sie den Editor nano, um eine neue Datei namens log_parser.py zu erstellen, indem Sie Folgendes ausführen:

nano /root/log_parser.py

Geben Sie im Editor nano den folgenden Inhalt ein oder fügen Sie ihn ein:

#!/usr/bin/env python3
print("Starting log parsing...")
with open('/root/sample.log', 'r') as file:
    for line in file:
        if 'ERROR' in line:
            print(line.strip())
print("Log parsing completed.")

Dieses Skript beginnt mit #!/usr/bin/env python3, um anzugeben, dass es mit Python 3 ausgeführt werden soll. Es öffnet die Datei /root/sample.log, liest sie Zeile für Zeile und gibt nur die Zeilen aus, die das Wort ERROR enthalten. Die print-Anweisungen geben Rückmeldung über den Start und die Fertigstellung des Parsing-Prozesses.

Um die Datei zu speichern, drücken Sie Ctrl+O und dann Enter, um den Dateinamen /root/log_parser.py zu bestätigen. Drücken Sie nach dem Speichern Ctrl+X, um den Editor zu verlassen.

Überprüfen Sie die Dateierstellung, indem Sie den Inhalt des Verzeichnisses /root erneut auflisten:

ls -l /root

Sie sollten eine Ausgabe ähnlich dieser sehen:

-rw-r--r-- 1 root root 112 Oct 12 10:20 sample.log
-rw-r--r-- 1 root root 150 Oct 12 10:22 log_parser.py

Dies bestätigt, dass sich beide Dateien am richtigen Ort befinden. Im nächsten Schritt machen Sie dieses Skript zusammen mit dem Bash-Skript aus dem vorherigen Schritt ausführbar. Vorerst haben Sie erfolgreich ein Python-Skript für das Log-Parsing erstellt.

Festlegen von Berechtigungen für Skripte

Nachdem sowohl das Bash-Skript nmap_scan.sh als auch das Python-Skript log_parser.py im Verzeichnis /root erstellt wurden, besteht der nächste Schritt darin, sie ausführbar zu machen. In Linux benötigen Skripte Ausführungsberechtigungen, um direkt vom Terminal aus ausgeführt zu werden. Dieser Schritt führt Sie durch das Festlegen der korrekten Berechtigungen für beide Skripte.

Dateiberechtigungen in Linux steuern, wer eine Datei lesen, schreiben oder ausführen kann. Standardmäßig haben neu erstellte Dateien keine Ausführungsberechtigungen, daher müssen Sie diese explizit mit dem Befehl chmod gewähren. Da Sie sich bereits in der Shell des Kali Linux-Containers befinden (automatisch verbunden, wenn Sie das Terminal öffnen), können Sie direkt fortfahren.

Überprüfen Sie zunächst die aktuellen Berechtigungen der Dateien im Verzeichnis /root, indem Sie Folgendes ausführen:

ls -l /root

Sie sollten eine Ausgabe ähnlich dieser sehen:

-rw-r--r-- 1 root root  85 Oct 12 10:15 nmap_scan.sh
-rw-r--r-- 1 root root 150 Oct 12 10:22 log_parser.py

Beachten Sie, dass in der Berechtigungszeichenfolge kein x vorhanden ist (z. B. -rw-r--r--), was bedeutet, dass die Dateien noch nicht ausführbar sind. Ändern wir das, indem wir beiden Skripten Ausführungsberechtigungen hinzufügen. Führen Sie die folgenden Befehle aus:

chmod +x /root/nmap_scan.sh
chmod +x /root/log_parser.py

Diese Befehle verwenden chmod +x, um allen Benutzern Ausführungsberechtigungen für die angegebenen Dateien hinzuzufügen. Überprüfen Sie nun die aktualisierten Berechtigungen, indem Sie die Dateien erneut auflisten:

ls -l /root

Sie sollten eine Ausgabe ähnlich dieser sehen:

-rwxr-xr-x 1 root root  85 Oct 12 10:15 nmap_scan.sh
-rwxr-xr-x 1 root root 150 Oct 12 10:22 log_parser.py

Beachten Sie das x in den Berechtigungen (z. B. -rwxr-xr-x), was darauf hinweist, dass die Dateien jetzt ausführbar sind. Dieser Schritt ist entscheidend, denn ohne Ausführungsberechtigungen können Sie die Skripte nicht direkt ausführen. Im nächsten Schritt testen Sie diese Skripte, um sicherzustellen, dass sie wie erwartet funktionieren.

Testen der Skriptausführung

Nachdem Sie sowohl nmap_scan.sh als auch log_parser.py im Verzeichnis /root erstellt und Ausführungsberechtigungen festgelegt haben, ist es an der Zeit, sie zu testen, um sicherzustellen, dass sie wie erwartet funktionieren. Das manuelle Testen von Skripten vor der Automatisierung ist eine gute Praxis, um Fehler oder Probleme zu erkennen. Da Sie sich bereits in der Shell des Kali Linux-Containers befinden (automatisch verbunden, wenn Sie das Terminal öffnen), können Sie direkt fortfahren.

Beginnen wir mit dem Testen des Bash-Skripts für Nmap-Scans. Führen Sie den folgenden Befehl aus, um das Skript auszuführen:

/root/nmap_scan.sh

Sie sollten eine Ausgabe ähnlich dieser sehen (die genauen Nmap-Ergebnisse können je nach Umgebung variieren):

Starting Nmap scan on localhost...
Starting Nmap 7.91 ( https://nmap.org ) at 2023-10-12 10:30 UTC
Nmap scan report for localhost (127.0.0.1)
Host is up (0.00010s latency).
Not shown: 1000 closed ports
PORT   STATE SERVICE
Nmap done: 1 IP address (1 host up) scanned in 0.05 seconds
Scan completed.

Diese Ausgabe bestätigt, dass das Skript nmap_scan.sh erfolgreich ausgeführt wird und einen Basisscan auf localhost durchführt. Als Nächstes testen wir das Python-Skript für das Log-Parsing. Führen Sie den folgenden Befehl aus:

/root/log_parser.py

Sie sollten eine Ausgabe ähnlich dieser sehen:

Starting log parsing...
2023-10-12 10:01:00 ERROR Connection failed
Log parsing completed.

Diese Ausgabe bestätigt, dass das Skript log_parser.py erfolgreich ausgeführt wird und die Datei /root/sample.log parst, um Zeilen mit ERROR anzuzeigen. Durch die manuelle Ausführung dieser Skripte haben Sie überprüft, dass sie wie beabsichtigt funktionieren. Im letzten Schritt erfahren Sie, wie Sie ihre Ausführung mithilfe von Cron-Jobs automatisieren können.

Planen von Skripten mit Cron-Jobs

In diesem letzten Schritt erfahren Sie, wie Sie die Ausführung Ihrer Skripte nmap_scan.sh und log_parser.py mithilfe von Cron-Jobs automatisieren können. Cron ist ein zeitbasierter Job-Scheduler in Linux, mit dem Sie Skripte oder Befehle in festgelegten Intervallen ausführen können. Dies ist eine wichtige Fähigkeit zur Automatisierung sich wiederholender Aufgaben in der Sicherheitsüberprüfung. Da Sie sich bereits in der Shell des Kali Linux-Containers befinden (automatisch verbunden, wenn Sie das Terminal öffnen), können Sie direkt fortfahren.

Um Aufgaben zu planen, müssen Sie die Crontab-Datei bearbeiten, die die Liste der geplanten Jobs für den aktuellen Benutzer enthält. Öffnen Sie den Crontab-Editor, indem Sie den folgenden Befehl ausführen:

crontab -e

Dadurch wird die Crontab-Datei in einem Texteditor, wahrscheinlich nano, geöffnet. Wenn Sie aufgefordert werden, einen Editor auszuwählen, wählen Sie nano, indem Sie die entsprechende Nummer eingeben und Enter drücken. Scrollen Sie zum Ende der Datei und fügen Sie die folgenden Zeilen hinzu, um Ihre Skripte so zu planen, dass sie alle 5 Minuten ausgeführt werden:

*/5 * * * * /root/nmap_scan.sh >> /root/nmap_scan.log 2>&1
*/5 * * * * /root/log_parser.py >> /root/log_parser.log 2>&1

Lassen Sie uns diese Konfiguration aufschlüsseln. Das */5 * * * * bedeutet, dass der Job alle 5 Minuten ausgeführt wird. Die fünf Felder stehen für Minute, Stunde, Tag des Monats, Monat und Wochentag. Die Pfade /root/nmap_scan.sh und /root/log_parser.py geben die auszuführenden Skripte an, und die >> leitet ihre Ausgabe in die Protokolldateien /root/nmap_scan.log und /root/log_parser.log zur späteren Überprüfung um. Das 2>&1 stellt sicher, dass auch Fehlermeldungen in den Protokolldateien erfasst werden.

Um die Änderungen in nano zu speichern, drücken Sie Ctrl+O und dann Enter zur Bestätigung. Drücken Sie nach dem Speichern Ctrl+X, um den Editor zu verlassen. Sie kehren zur Terminal-Eingabeaufforderung zurück und sehen möglicherweise eine Meldung wie:

crontab: installing new crontab

Dies bestätigt, dass die Cron-Jobs geplant wurden. Um zu überprüfen, ob die Jobs hinzugefügt wurden, listen Sie die aktuellen Crontab-Einträge auf, indem Sie Folgendes ausführen:

crontab -l

Sie sollten eine Ausgabe ähnlich dieser sehen:

*/5 * * * * /root/nmap_scan.sh >> /root/nmap_scan.log 2>&1
*/5 * * * * /root/log_parser.py >> /root/log_parser.log 2>&1

Dies bestätigt, dass Ihre Skripte so geplant sind, dass sie alle 5 Minuten ausgeführt werden. Beachten Sie, dass der Cron-Daemon aufgrund der Containerumgebung während dieser Laborsitzung möglicherweise nicht kontinuierlich ausgeführt wird, der Konfigurationsprozess jedoch gleich bleibt. Sie haben jetzt die Automatisierungseinrichtung für Ihre Skripte abgeschlossen.

Zusammenfassung

In diesem Labor haben Sie die Grundlagen der Automatisierung in Kali Linux mithilfe von Bash- und Python-Skripten gelernt. Sie begannen mit der Einrichtung Ihrer Umgebung und der Installation notwendiger Tools wie Nmap und Python. Anschließend erstellten Sie ein Bash-Skript zur Automatisierung von Nmap-Scans und ein Python-Skript für das Log-Parsing. Sie legten Ausführungsberechtigungen für diese Skripte fest, testeten ihre Funktionalität und planten sie schließlich so, dass sie mithilfe von Cron-Jobs automatisch ausgeführt werden. Diese Fähigkeiten bilden eine solide Grundlage für die Automatisierung sich wiederholender Aufgaben in der Cybersicherheit und Systemadministration innerhalb einer kontrollierten Kali Linux-Containerumgebung.