Automatisierung in Kali mit Bash und Python

Kali LinuxBeginner
Jetzt üben

Einführung

In diesem Lab lernen Sie, wie Sie Aufgaben in Kali Linux mithilfe von Bash- und Python-Skripten automatisieren. Der Schwerpunkt liegt auf der Optimierung sich wiederholender Aufgaben bei der Sicherheitsüberprüfung, wie z. B. Netzwerkscans mit Nmap und das Parsen von Protokolldateien. Sie erstellen Skripte, legen Berechtigungen fest, planen automatisierte Aufgaben mit Cron-Jobs und testen deren Ausführung. Dieses Lab bietet eine detaillierte Schritt-für-Schritt-Anleitung zum Aufbau grundlegender Automatisierungsfähigkeiten in einem Kali Linux Container. Wenn Sie das Terminal öffnen, sind Sie automatisch mit der Shell des Kali Linux Containers verbunden und bereit für den Start.

Einrichtung der Umgebung und Installation von Tools

In diesem ersten Schritt bereiten Sie Ihre Arbeitsumgebung innerhalb des Kali Linux Containers vor, indem Sie die notwendigen Tools installieren. Dies ist ein grundlegender Schritt, um sicherzustellen, dass Sie über alle erforderlichen Softwarekomponenten für die bevorstehenden Automatisierungsaufgaben verfügen.

Wenn Sie das Terminal öffnen, sind Sie automatisch mit der Shell des Kali Linux Containers verbunden. Sie können sofort mit der Arbeit beginnen.

Aktualisieren Sie zunächst die Paketliste, um sicherzustellen, dass Sie die neuesten Softwareversionen abrufen können.

apt update

Installieren Sie als Nächstes nmap für Netzwerkscans und python3 für die Skripterstellung. Diese Tools sind für die Aufgaben in diesem Lab von entscheidender Bedeutung.

apt install -y nmap python3 nano

Die Installation kann einen Moment dauern. Sobald sie abgeschlossen ist, überprüfen Sie, ob nmap installiert ist, indem Sie dessen Version überprüfen.

nmap --version

Die Ausgabe sollte der folgenden ähneln und bestätigen, dass nmap einsatzbereit ist.

Nmap version 7.x ( https://nmap.org )
Platform: x86_64-pc-linux-gnu
Compiled with: liblua-5.4.6 openssl-3.0.11 libpcre-8.39 libpcap-1.10.1 nmap-libdnet-1.12 ipv6
Compiled without:
Available NSE scripts: 655

Überprüfen Sie als Nächstes die python3-Installation.

python3 --version

Die Ausgabe zeigt die installierte Python-Version an, ähnlich wie folgt:

Python 3.x.x

Mit diesen installierten Tools ist Ihre Kali Linux Umgebung für die Automatisierungsaufgaben in den folgenden Schritten vorbereitet.

Erstellen eines Bash-Skripts für Nmap-Scans

Nachdem Ihre Umgebung eingerichtet ist, erstellen Sie ein Bash-Skript, um Nmap-Scans zu automatisieren. Die Bash-Skripterstellung ist eine leistungsstarke Methode zur Automatisierung von Befehlszeilenaufgaben unter Linux. In diesem Schritt schreiben Sie ein einfaches Skript, um einen Nmap-Scan auf localhost auszuführen.

Verwenden Sie zunächst den Texteditor nano, um eine neue Datei namens nmap_scan.sh im Verzeichnis /root zu erstellen.

nano /root/nmap_scan.sh

Dieser Befehl öffnet eine leere Datei im nano-Editor. Geben Sie den folgenden Inhalt in den Editor ein oder fügen Sie ihn ein:

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

Dieses Skript besteht aus drei Hauptteilen:

  • #!/bin/bash: Diese Zeile, bekannt als Shebang, gibt an, dass das Skript mit dem Bash-Interpreter ausgeführt werden soll.
  • echo "...": Diese Befehle geben Statusmeldungen im Terminal aus.
  • nmap localhost: Dieser Befehl führt einen grundlegenden Nmap-Scan auf Ihrem lokalen Rechner aus, was ein sicheres Ziel zum Üben ist.

Um die Datei in nano zu speichern, drücken Sie Ctrl+O, dann Enter, um den Dateinamen zu bestätigen. Um den Editor zu verlassen, drücken Sie Ctrl+X.

Nachdem Sie zum Terminal zurückgekehrt sind, überprüfen Sie, ob die Datei erfolgreich erstellt wurde, indem Sie den Inhalt des Verzeichnisses /root auflisten.

ls -l /root

Sie sollten Ihr neues Skript in der Ausgabe sehen, ähnlich wie folgt:

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

Dies bestätigt, dass die Datei nmap_scan.sh existiert. In den nächsten Schritten werden Sie dieses Skript ausführbar machen und testen.

Erstellen eines Python-Skripts zum Parsen von Protokollen

Als Nächstes schreiben Sie ein Python-Skript zur Automatisierung des Protokoll-Parsings. Das Parsen von Protokolldateien ist eine gängige Aufgabe bei der Sicherheitsanalyse, bei der spezifische Informationen aus Protokolldateien extrahiert werden. Python eignet sich aufgrund seiner leistungsstarken Textverarbeitungsfunktionen gut dafür.

Erstellen Sie zunächst eine Beispielprotokolldatei, die Ihr Skript parsen soll. Führen Sie den folgenden Befehl aus, um eine Datei namens sample.log im Verzeichnis /root mit einigen Beispielprotokolleinträgen zu erstellen.

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

Erstellen Sie nun das Python-Skript. Verwenden Sie nano, um eine neue Datei namens log_parser.py zu erstellen.

nano /root/log_parser.py

Geben Sie im nano-Editor den folgenden Python-Code 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 öffnet /root/sample.log, liest es Zeile für Zeile und gibt nur die Zeilen aus, die das Wort ERROR enthalten. Die Methode strip() entfernt führende oder nachgestellte Leerzeichen von der Zeile.

Speichern Sie die Datei mit Ctrl+O und Enter, und beenden Sie nano mit Ctrl+X.

Überprüfen Sie, ob sowohl die Protokolldatei als auch das Python-Skript im Verzeichnis /root vorhanden sind.

ls -l /root

Die Ausgabe sollte nun beide Dateien auflisten:

-rw-r--r-- 1 root root 150 Oct 20 10:22 log_parser.py
-rw-r--r-- 1 root root  85 Oct 20 10:15 nmap_scan.sh
-rw-r--r-- 1 root root 112 Oct 20 10:20 sample.log

Sie haben erfolgreich ein Python-Skript zum Parsen von Protokollen erstellt. Der nächste Schritt besteht darin, die korrekten Berechtigungen für beide Skripte festzulegen.

Festlegen von Berechtigungen und Testen von Skripten

Nachdem beide Skripte erstellt wurden, besteht der nächste Schritt darin, sie ausführbar zu machen und zu testen. Unter Linux benötigt ein Skript Ausführungsberechtigungen, um direkt über das Terminal gestartet werden zu können.

Überprüfen Sie zunächst die aktuellen Berechtigungen der Dateien.

ls -l /root

Die Ausgabe zeigt die Berechtigungen in der ersten Spalte. Die Angabe -rw-r--r-- bedeutet, dass die Dateien les- und schreibbar, aber nicht ausführbar sind.

-rw-r--r-- 1 root root 150 Oct 20 10:22 log_parser.py
-rw-r--r-- 1 root root  85 Oct 20 10:15 nmap_scan.sh
-rw-r--r-- 1 root root 112 Oct 20 10:20 sample.log

Verwenden Sie den Befehl chmod mit dem Flag +x, um beiden Skripten die Ausführungsberechtigung hinzuzufügen.

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

Überprüfen Sie nun erneut die Berechtigungen.

ls -l /root

Das x in der Berechtigungszeichenfolge (-rwxr-xr-x) bestätigt, dass die Dateien nun ausführbar sind.

-rwxr-xr-x 1 root root 150 Oct 20 10:22 log_parser.py
-rwxr-xr-x 1 root root  85 Oct 20 10:15 nmap_scan.sh
-rw-r--r-- 1 root root 112 Oct 20 10:20 sample.log

Nachdem die Berechtigungen festgelegt wurden, testen Sie das Bash-Skript, indem Sie es ausführen.

/root/nmap_scan.sh

Das Skript führt den Nmap-Scan aus und gibt die Ergebnisse aus, die in etwa wie folgt aussehen sollten:

Starting Nmap scan on localhost...
Starting Nmap 7.94 ( https://nmap.org ) at 2023-10-20 10:30 UTC
Nmap scan report for localhost (127.0.0.1)
Host is up, received user-set (0.00010s latency).
Other addresses for localhost (not scanned): ::1
rDNS record for 127.0.0.1: localhost
Not shown: 999 closed tcp ports (conn-refused)
PORT   STATE SERVICE
...
Nmap done: 1 IP address (1 host up) scanned in 0.15 seconds
Scan completed.

Testen Sie als Nächstes das Python-Skript.

/root/log_parser.py

Das Skript parst die Protokolldatei und gibt nur die Zeile aus, die „ERROR“ enthält.

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

Beide Skripte funktionieren nun korrekt. Der letzte Schritt besteht darin, sie zur automatischen Ausführung zu planen.

Planen von Skripten mit Cron-Jobs

In diesem letzten Schritt automatisieren Sie die Ausführung Ihrer Skripte mithilfe von Cron. Cron ist ein zeitbasierter Job-Scheduler unter Linux, mit dem Sie Befehle oder Skripte in festgelegten Intervallen ausführen können.

Um einen Job zu planen, müssen Sie die Crontab-Datei bearbeiten. Öffnen Sie den Crontab-Editor mit dem folgenden Befehl.

crontab -e

Wenn Sie zur Auswahl eines Editors aufgefordert werden, 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. Diese Zeilen planen, dass beide Skripte jede Minute ausgeführt werden.

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

Lassen Sie uns diese Konfiguration aufschlüsseln:

  • * * * * *: Dies ist der Zeitplan. Die fünf Sternchen stehen für Minute, Stunde, Tag des Monats, Monat und Wochentag. Alle Sternchen bedeuten, dass der Job jede Minute jeder Stunde an jedem Tag ausgeführt wird.
  • /root/nmap_scan.sh: Dies ist der auszuführende Befehl.
  • >> /root/nmap_scan.log: Dies leitet die Standardausgabe des Skripts um und hängt sie an eine Protokolldatei an.
  • 2>&1: Dies leitet den Standardfehlestrom an die Standardausgabe um, wodurch sichergestellt wird, dass auch Fehlermeldungen in der Protokolldatei erfasst werden.

Speichern Sie die Änderungen in nano mit Ctrl+O und Enter, und beenden Sie dann mit Ctrl+X. Sie sollten eine Bestätigungsmeldung sehen.

crontab: installing new crontab

Um zu überprüfen, ob die Jobs geplant sind, listen Sie die aktuellen Crontab-Einträge auf.

crontab -l

Die Ausgabe sollte die Zeilen anzeigen, die Sie gerade hinzugefügt haben.

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

Die Cron-Jobs sind nun eingerichtet. Nach einer Minute können Sie die Protokolldateien überprüfen, um die Ausgabe der automatisierten Skriptausführungen zu sehen.

cat /root/nmap_scan.log
cat /root/log_parser.log

Dies bestätigt, dass Ihre Skripte wie geplant automatisch ausgeführt werden.

Zusammenfassung

In diesem Lab haben Sie die Grundlagen der Automatisierung in Kali Linux mit Bash und Python kennengelernt. Sie begannen mit der Vorbereitung Ihrer Umgebung und der Installation wichtiger Tools wie Nmap und Python. Anschließend erstellten Sie ein Bash-Skript zur Automatisierung von Netzwerkscans und ein Python-Skript zum Parsen von Protokollen. Sie lernten auch, wie man Ausführungsberechtigungen festlegt, Ihre Skripte testet und sie mithilfe von Cron-Jobs zur automatischen Ausführung plant. Diese Fähigkeiten bilden eine solide Grundlage für die Automatisierung sich wiederholender Aufgaben in der Cybersicherheit und Systemadministration.