diff --git a/scripts/ssh-analyzer.sh b/scripts/ssh-analyzer.sh index 471b495..db434b9 100755 --- a/scripts/ssh-analyzer.sh +++ b/scripts/ssh-analyzer.sh @@ -4,14 +4,11 @@ # 🔐 CONFIG ############################################# -# Telegram Bot Token (⚠️ später besser auslagern!) TOKEN="8101319618:AAHboFVVgmLPccJB0MDr_R2g0K90hkGqkRw" CHAT_ID="581059353" -# Alle überwachten Hosts PIS=("192.168.178.2" "192.168.178.3" "192.168.178.5" "localhost") -# Datei zur Speicherung des letzten Checks STATE_FILE="/home/kai/.ssh-monitor-lastcheck" @@ -19,7 +16,6 @@ STATE_FILE="/home/kai/.ssh-monitor-lastcheck" # 🧠 INITIALISIERUNG ############################################# -# Falls keine State-Datei existiert → jetzt erstellen if [ ! -f "$STATE_FILE" ]; then date --iso-8601=seconds > "$STATE_FILE" fi @@ -29,7 +25,7 @@ NOW=$(date --iso-8601=seconds) ############################################# -# 🔧 SSH WRAPPER (WICHTIG FÜR CRON) +# 🔧 SSH SETTINGS (CRON SAFE) ############################################# SSH_OPTS="-o ConnectTimeout=5 \ @@ -39,14 +35,14 @@ SSH_OPTS="-o ConnectTimeout=5 \ ############################################# -# 🔁 HAUPTSCHLEIFE ÜBER ALLE HOSTS +# 🔁 HAUPTSCHLEIFE ############################################# for PI in "${PIS[@]}" do ######################################### - # 🏠 LOKALER HOST (kein SSH nötig) + # 🏠 LOCAL HOST ######################################### if [ "$PI" == "localhost" ]; then @@ -56,7 +52,7 @@ do else ######################################### - # 🌐 REMOTE HOST VIA SSH + # 🌐 REMOTE HOST ######################################### LOG=$(ssh $SSH_OPTS kai@$PI \ @@ -67,31 +63,26 @@ do ############################################# - # 🚨 ANALYSE: FAILED LOGINS + # 🚨 ANALYSE (sauber gefiltert) ############################################# - if [ -n "$LOG" ]; then - FAILS=$(echo "$LOG" | grep "Failed password" | wc -l) - else - FAILS=0 - fi + FAILS=$(echo "$LOG" | grep "Failed password for" | wc -l) ############################################# - # 📊 DETAILS ZU ANGREIFERN + # 🚨 ALERT LOGIC ############################################# if [ "$FAILS" -gt 0 ]; then - IPS=$(echo "$LOG" | grep "Failed password" \ + EVENT_TIME=$(date '+%Y-%m-%d %H:%M:%S') + + IPS=$(echo "$LOG" | grep "Failed password for" \ | awk '{print $(NF-3)}' \ | sort | uniq -c | sort -nr) - ######################################### - # 📡 TELEGRAM ALERT - ######################################### - MESSAGE="🚨 SSH Angriff erkannt! +Zeit: $EVENT_TIME Host: $HOST ($PI) Fehlversuche: $FAILS