Fehler behoben...
This commit is contained in:
74
discord_ssh.sh
Normal file
74
discord_ssh.sh
Normal 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
|
||||
Reference in New Issue
Block a user