In diesem Blog Beitrag beschreibe ich das Erstellen einer umfassenden und ausgeklügelten Palantir-ähnlichen Software in Bash für Cybersicherheit unter Linux (Debian).
Diese Lösung wird sich auf Überwachungs- und Erkennungssysteme konzentrieren, indem verschiedene sicherheitsrelevante Aspekte abgedeckt werden,
wie z.B. Netzwerküberwachung, Dateiüberwachung, IP-Blockierung und Protokollanalyse. Das folgende Bash-Skript dient als eine aufgerüstete und umfassende Lösung, die viele erweiterte Funktionen integriert, die auf den zuvor genannten Vorschlägen basieren.
Ziel dieser Software ist es, als grundlegendes Intrusion Detection System (IDS) zu agieren, indem es Netzwerkaktivitäten überwacht, verdächtige Aktivitäten erkennt und gegebenenfalls reagiert (z.B. durch Blockieren von IP-Adressen). Zudem werden wichtige Logs und Systemdateien auf Anomalien untersucht.
- Installationsvoraussetzungen
Wir nutzen mehrere Tools wie tcpdump, grep, awk, iptables, logger, mail und inotify-tools. Falls diese Tools nicht auf deinem System installiert sind,
stelle sicher, dass sie über deinen Paketmanager hinzugefügt werden:
sudo apt update sudo apt install tcpdump iptables mailutils inotify-tools
- Skriptübersicht
Das Skript übernimmt folgende Aufgaben:
- Netzwerküberwachung mit tcpdump:
- ICMP- und UDP-Flood-Erkennung (z.B. Ping-Floods).
- Port-Scan-Erkennung.
- DNS-Überwachung.
- Whitelisting von vertrauenswürdigen IPs.
- Log-Überwachung:
- Authentifizierungsfehler in /var/log/auth.log auf Root-Login oder Brute-Force-Attacken.
- Dateiüberwachung mit inotify:
- Überwachung kritischer Systemdateien wie /etc/passwd, um Änderungen zu erkennen.
- Alarme:
- Bei verdächtigen Aktivitäten werden E-Mail-Benachrichtigungen versendet und IP-Adressen blockiert.
3. Das vollständige Bash-Skript
#!/bin/bash # KOAZ IDS - Ein umfassendes IDS-System in Bash für Cybersicherheit # Netzwerk-, Log- und Dateiüberwachung in Echtzeit INTERFACE="eth0" # Netzwerk-Schnittstelle, die überwacht wird ALERT_EMAIL="[email protected]" # E-Mail, an die Benachrichtigungen gesendet werden MAX_ICMP_COUNT=20 # Maximale ICMP-Pakete innerhalb von 10 Sekunden WHITELIST_IP=("192.168.1.1" "10.0.0.1") # Vertrauenswürdige IP-Adressen (nicht überwachen) # --- Funktion zur Überprüfung, ob eine IP in der Whitelist ist --- is_whitelisted() { local ip=$1 for white_ip in "${WHITELIST_IP[@]}"; do if [[ "$ip" == "$white_ip" ]]; then return 0 fi done return 1 } # --- Funktion zur IP-Blockierung --- block_ip() { local ip=$1 if is_whitelisted "$ip"; then echo "Die IP $ip ist in der Whitelist und wird nicht blockiert." return fi echo "Blockiere verdächtige IP-Adresse: $ip" iptables -A INPUT -s "$ip" -j DROP logger "Palantir IDS: Blockierte IP-Adresse $ip aufgrund verdächtiger Aktivitäten." } # --- Funktion zum Senden von Alarmen --- send_alert() { local event_type=$1 local src_ip=$2 echo "Sende Alarm: $event_type von IP $src_ip" echo -e "Palantir IDS Alarm: \n\nVorfall: $event_type\nQuelle: $src_ip" | mail -s "Palantir IDS Alarm: $event_type" "$ALERT_EMAIL" echo -e "[ALERT] $event_type Detected from IP: $src_ip" } # --- Netzwerküberwachung --- monitor_traffic() { echo "Starte Netzwerküberwachung auf $INTERFACE..." tcpdump -l -i "$INTERFACE" | while read packet; do if echo "$packet" | grep -q "ICMP"; then src_ip=$(echo "$packet" | awk '{print $3}' | cut -d"." -f1-4) echo "ICMP Paket von $src_ip erkannt" icmp_count=$(timeout 10 tcpdump -l -i "$INTERFACE" icmp and src "$src_ip" 2>/dev/null | wc -l) if [ "$icmp_count" -gt "$MAX_ICMP_COUNT" ]; then echo "Warnung: Möglicher Ping-Flood von $src_ip erkannt! (Pakete: $icmp_count)" send_alert "Ping-Flood" "$src_ip" block_ip "$src_ip" fi fi if echo "$packet" | grep -q "Flags \[S\]"; then src_ip=$(echo "$packet" | awk '{print $3}' | cut -d"." -f1-4) dst_port=$(echo "$packet" | awk '{print $5}' | cut -d"." -f5) echo "Möglicher Port-Scan von $src_ip auf Port $dst_port erkannt" send_alert "Port-Scan" "$src_ip" block_ip "$src_ip" fi if echo "$packet" | grep -q "DNS"; then src_ip=$(echo "$packet" | awk '{print $3}' | cut -d"." -f1-4) echo "Übermäßige DNS-Anfragen von $src_ip erkannt" send_alert "DNS Amplification Attack" "$src_ip" fi done } # --- Authentifizierungsfehler überwachen --- monitor_auth_log() { echo "Überwache Authentifizierungs-Logs..." tail -F /var/log/auth.log | while read log_entry; do if echo "$log_entry" | grep -q "Failed password"; then src_ip=$(echo "$log_entry" | grep -oE '([0-9]{1,3}\.){3}[0-9]{1,3}') echo "Fehlgeschlagener Anmeldeversuch von $src_ip" send_alert "Failed Login Attempt" "$src_ip" fi if echo "$log_entry" | grep -q "Accepted password for root"; then src_ip=$(echo "$log_entry" | grep -oE '([0-9]{1,3}\.){3}[0-9]{1,3}') echo "Erfolgreiche Root-Anmeldung von $src_ip" send_alert "Root Login" "$src_ip" fi done } # --- Dateiüberwachung --- monitor_file_changes() { echo "Überwache kritische Systemdateien..." inotifywait -m /etc/passwd /etc/shadow | while read path action file; do echo "Änderung an $file erkannt! Aktion: $action" send_alert "Critical File Change" "System" done } # --- Hauptfunktion zum Starten aller Überwachungen --- start_palantir() { echo "Starte Palantir IDS..." # Starte Netzwerküberwachung monitor_traffic & # Überwache Authentifizierungslogs monitor_auth_log & # Überwache kritische Systemdateien monitor_file_changes & } # --- Skript starten --- start_palantir
- Funktionsweise des Skripts
- Netzwerküberwachung:
- Das Skript überwacht Netzwerkpakete auf der definierten Schnittstelle (eth0) und reagiert auf ICMP-Floods, Port-Scans und verdächtige DNS-Aktivitäten.
- Sobald ein verdächtiges Muster erkannt wird, wird ein Alarm ausgelöst (per E-Mail), und die IP kann über iptables blockiert werden.
- Log-Überwachung:
- Authentifizierungsfehler und erfolgreiche Root-Logins werden im /var/log/auth.log erkannt und entsprechende Alarme ausgelöst.
- Dateiüberwachung:
- Änderungen an kritischen Systemdateien wie /etc/passwd und /etc/shadow werden in Echtzeit überwacht. Jede Änderung wird sofort gemeldet.
5. Abschluss
Dieses Bash-Skript stellt ein voll funktionsfähiges, grundlegendes IDS für die Cybersicherheit dar. Es überwacht Netzwerk- und Systemprotokolle,
kritische Dateien und reagiert in Echtzeit auf verdächtige Aktivitäten. Es kann in verschiedenen Netzwerkszenarien verwendet werden,
bietet erweiterte Funktionen und lässt sich flexibel anpassen.