Fehler behoben...

This commit is contained in:
w12
2024-09-29 21:33:41 +02:00
parent 9c25f40010
commit 76b8cce4b6

74
discord_ssh.sh Normal file
View File

@@ -0,0 +1,74 @@
#!/bin/bash
# Discord Webhook URL
WEBHOOK_URL="https://discord.com/api/webhooks/11111111/aa1122ssbbcc333-_KEinsG11bs231b4eie"
# Bash function to send POST request to Discord webhook
send_discord_message() {
local message="$1"
curl -s -H "Content-Type: application/json" -X POST -d "{\"content\":\"$message\"}" "$WEBHOOK_URL" > /dev/null
}
# PAM Session Open Hook for SSH connections
session_open_hook() {
local username="$1"
local remote_ip="$2"
# Compose message for Discord
local message="🔓 **Neue SSH-Sitzung gestartet**\n**Benutzer:** $username\n**IP:** $remote_ip"
# Send message to Discord
send_discord_message "$message"
}
# PAM Session Close Hook for SSH connections
session_close_hook() {
local username="$1"
local remote_ip="$2"
# Compose message for Discord
local message="🔒 **SSH-Sitzung beendet**\n**Benutzer:** $username\n**IP:** $remote_ip"
# Send message to Discord
send_discord_message "$message"
}
# Logfile zum Debugging (optional)
DEBUG_LOG="/tmp/ssh_monitor_debug.log"
# Monitor auth.log file for SSH session events
tail -Fn0 /var/log/auth.log | while read line; do
# Debugging: Ausgabe der gelesenen Zeile in eine Logdatei
echo "$(date '+%Y-%m-%d %H:%M:%S') - $line" >> "$DEBUG_LOG"
# Erkennung von erfolgreichen Anmeldungen
if echo "$line" | grep -q "sshd.*Accepted.*for"; then
# Extrahiere Benutzername
username=$(echo "$line" | awk '{for(i=1;i<=NF;i++) if($i=="for") print $(i+1)}')
# Extrahiere IP-Adresse
remote_ip=$(echo "$line" | grep -oE '([0-9]{1,3}\.){3}[0-9]{1,3}')
# Rufe die Hook-Funktion auf
session_open_hook "$username" "$remote_ip"
fi
# Erkennung von Abmeldungen (verschiedene Muster)
if echo "$line" | grep -qE "sshd.*(Disconnected from|Received disconnect from|session closed for user)"; then
# Extrahiere Benutzername
username=$(echo "$line" | awk '{for(i=1;i<=NF;i++) if($i=="user") print $(i+1)}')
# Extrahiere IP-Adresse (kann in dieser Zeile fehlen)
remote_ip=$(echo "$line" | grep -oE '([0-9]{1,3}\.){3}[0-9]{1,3}')
# Überprüfe, ob Username und IP gefunden wurden
if [ -z "$username" ]; then
username="Unbekannt"
fi
if [ -z "$remote_ip" ]; then
remote_ip="Unbekannt"
fi
# Rufe die Hook-Funktion auf
session_close_hook "$username" "$remote_ip"
fi
done