Debian SSH 监控与日志分析实战
一 日志来源与关键事件
二 实时监控与告警
sudo tail -f /var/log/auth.log | grep --color=auto "sshd"sudo tail -f /var/log/auth.log | egrep --color=auto "Accepted|Failed|invalid user"chmod +x 后可用 sudo bash /usr/local/bin/ssh_alert.sh 测试,加入 cron 定时执行(见下节)。Accepted|Failed,按 IP 计数,超过阈值即打印告警(可扩展为邮件/企业微信/钉钉 Webhook)。sudo apt install auditd audispd-pluginssudo auditctl -w /etc/ssh/sshd_config -p wa -k ssh_config_changesudo auditctl -a exit,always -F arch=b64 -S execve -F euid=0 -k sudo_command_execsudo ausearch -k ssh_config_change、sudo ausearch -k sudo_command_exec、sudo aureport -au -i。三 常用日志分析命令
grep "Accepted " /var/log/auth.log | awk '{print $1,$2,$3,$9,$11}'grep "Failed " /var/log/auth.log | awk '{print $11}' | sort | uniq -c | sort -nr | head -10grep 'sshd.*Failed password for root' /var/log/auth.log | awk '{print $1}' | sort | uniq -cgrep 'sshd.*Failed password for root' /var/log/auth.log | awk '$3 >= "12:00" && $3 <= "18:00" {print}' | wc -lawk -v start="00:00:00" -v end="06:00:00" '$3 >= start && $3 <= end {print}' /var/log/auth.log | grep "Accepted"zgrep "Failed password" /var/log/auth.log*grep "192.168.1.100" /var/log/auth.log*grep "sudo: " /var/log/auth.log | awk '{print $4}' | sort | uniq -c | sort -nr四 加固与审计配置
sudo systemctl restart sshd):
PasswordAuthentication noPermitRootLogin noAllowUsers youruser@yourcidr、AllowGroups sshusersvisudo):
Defaults log_input,log_outputDefaults logfile="/var/log/sudo.log"Defaults iolog_dir="/var/log/sudo-io/%{user}/%{command}/%{pid}"-w/-a 规则写入 /etc/audit/rules.d/ssh.rules,然后 sudo systemctl restart auditd 使规则持久生效。五 集中化监控与可视化