温馨提示×

Debian SSH如何监控与日志分析

小樊
44
2025-11-29 01:31:44
栏目: 智能运维

Debian SSH 监控与日志分析实战

一 日志来源与关键事件

  • 主要日志文件:/var/log/auth.log(Debian/Ubuntu 记录 SSH、sudo 等认证事件)。重点关键字:Accepted password/publickey(成功登录)、Failed password/publickeyinvalid user(失败尝试)、session opened for user(会话/提权)。分析时同时关注归档文件:auth.log.1、auth.log.gz 等。建议先审视 /etc/ssh/sshd_config 的安全基线:如 PermitRootLogin(是否允许 root 直登)、PasswordAuthentication(是否仅密钥)、AllowUsers/AllowGroups(访问控制)。

二 实时监控与告警

  • 实时查看 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"
  • 基于 auth.log 的轻量阈值告警脚本(5 分钟内同一 IP 超过 5 次尝试触发):
    • 保存为 /usr/local/bin/ssh_alert.sh,赋权 chmod +x 后可用 sudo bash /usr/local/bin/ssh_alert.sh 测试,加入 cron 定时执行(见下节)。
    • 脚本要点:以当前时间向前 5 分钟筛选 Accepted|Failed,按 IP 计数,超过阈值即打印告警(可扩展为邮件/企业微信/钉钉 Webhook)。
  • 进阶内核级审计(auditd):
    • 安装:sudo apt install auditd audispd-plugins
    • 关键规则示例:
      • 监控 SSH 配置变更:sudo auditctl -w /etc/ssh/sshd_config -p wa -k ssh_config_change
      • 记录以 root 身份执行的命令:sudo auditctl -a exit,always -F arch=b64 -S execve -F euid=0 -k sudo_command_exec
    • 查询与报表:sudo ausearch -k ssh_config_changesudo ausearch -k sudo_command_execsudo aureport -au -i

三 常用日志分析命令

  • 成功登录清单(含时间、用户、来源 IP):
    • grep "Accepted " /var/log/auth.log | awk '{print $1,$2,$3,$9,$11}'
  • 失败登录 Top N(按 IP):
    • grep "Failed " /var/log/auth.log | awk '{print $11}' | sort | uniq -c | sort -nr | head -10
  • 统计失败次数(时间段/条件聚合):
    • 按小时统计 root 失败次数:grep 'sshd.*Failed password for root' /var/log/auth.log | awk '{print $1}' | sort | uniq -c
    • 指定时间窗口计数:grep 'sshd.*Failed password for root' /var/log/auth.log | awk '$3 >= "12:00" && $3 <= "18:00" {print}' | wc -l
  • 异常时段登录(如 00:00–06:00 的成功登录):
    • awk -v start="00:00:00" -v end="06:00:00" '$3 >= start && $3 <= end {print}' /var/log/auth.log | grep "Accepted"
  • 归档日志分析(覆盖 .gz 等):
    • zgrep "Failed password" /var/log/auth.log*
  • 快速定位某 IP 的所有尝试:
    • grep "192.168.1.100" /var/log/auth.log*
  • 统计 sudo 使用频率(按用户):
    • grep "sudo: " /var/log/auth.log | awk '{print $4}' | sort | uniq -c | sort -nr

四 加固与审计配置

  • SSH 服务加固(编辑 /etc/ssh/sshd_configsudo systemctl restart sshd):
    • 仅密钥登录:PasswordAuthentication no
    • 禁止 root 直登:PermitRootLogin no
    • 精细化访问控制:AllowUsers youruser@yourcidrAllowGroups sshusers
  • sudo 细粒度审计(编辑 /etc/sudoers 使用 visudo):
    • 记录 I/O 与命令:Defaults log_input,log_output
    • 指定日志文件:Defaults logfile="/var/log/sudo.log"
    • 会话 I/O 目录:Defaults iolog_dir="/var/log/sudo-io/%{user}/%{command}/%{pid}"
  • 审计规则持久化(auditd):
    • -w/-a 规则写入 /etc/audit/rules.d/ssh.rules,然后 sudo systemctl restart auditd 使规则持久生效。

五 集中化监控与可视化

  • 当服务器数量增多,建议将 auth.log 统一采集到 ELK Stack(Elasticsearch、Logstash、Kibana)Graylog,实现:
    • 按用户/来源 IP/时间的可视化统计与趋势
    • 失败次数阈值告警、地理定位与可视化仪表盘
    • 与工单/IM 联动的自动化响应流程。

0