日常妙招屋
白蓝主题五 · 清爽阅读
首页  > 网络监控

手把手教你设置网络日志审计告警,让异常行为无处可藏

你有没有遇到过这种情况:公司服务器突然变慢,查了半天才发现是有人在半夜偷偷登录后台执行了命令?或者某个员工账号莫名频繁访问敏感文件,却没人察觉?其实这些问题,早该在网络日志里暴露出来。关键就在于——你有没有设好审计告警

为什么需要网络日志审计告警?

很多人觉得“系统没崩就没事”,但真正的风险往往藏在安静的日志里。比如某次内网扫描、异常的登录IP、特权账户的非工作时间操作,这些都可能是攻击前兆。靠人工翻日志不现实,一天几千条记录谁看得过来?所以得让系统自己“喊人”。

从哪里开始?先找到关键日志源

常见的日志来源包括防火墙、路由器、服务器系统日志(如Linux的/var/log/auth.log)、数据库操作日志、AD域控登录记录等。以Linux服务器为例,重点关注SSH登录行为:

<!-- 查看最近的SSH登录日志 -->
journalctl -u ssh | grep "Accepted"

<!-- 或者直接查auth日志 -->
cat /var/log/auth.log | grep "Failed password"

如果你发现某个IP反复尝试密码,或者凌晨三点有管理员账号登录,这就是典型异常。

用简单工具实现告警推送

不用上昂贵的SIEM系统,小团队也能玩转。比如用rsyslog收集日志,配合fail2ban做自动封禁,再加个脚本发微信或钉钉提醒。

举个例子,写个检测失败登录次数的脚本:

#!/bin/bash
LOG_FILE="/var/log/auth.log"
THRESHOLD=5
FAILED_IPS=$(grep "Failed password" $LOG_FILE | awk '{print $(NF-3)}' | sort | uniq -c | awk "\$1 > $THRESHOLD {print \$2}")

for ip in $FAILED_IPS; do
    curl 'https://oapi.dingtalk.com/robot/send?access_token=your_token' \
         -H 'Content-Type: application/json' \
         -d '{"msgtype": "text", "text": {"content": "⚠️ 检测到暴力破解尝试:'$ip'"}}'
done

把这个脚本加入cron定时任务,每5分钟跑一次,就能实时掌握外网攻击动向。

设置合理的触发规则,别被误报搞崩溃

刚设告警时最容易犯的错就是太敏感。比如一有失败登录就报警,结果运维同事改密码试错了两次,手机就被轰炸十几次。建议根据实际场景调整阈值:同一IP连续失败5次以上再触发,或者只监控非工作时间段的特权操作。

还有种常见情况:公司用固定出口IP,所有员工上网都显示同一个公网IP。这时候就不能只看IP,得结合用户名判断。比如root账号从非值班人员账号登录,立刻告警。

把告警信息变得有用

光说“有异常登录”没用,得让人一眼看出问题在哪。推送内容最好包含时间、IP、用户名、操作类型。例如:

{
  "告警类型": "高危登录",
  "时间": "2024-03-18 02:15:23",
  "用户": "admin",
  "来源IP": "123.45.67.89",
  "位置": "境外(新加坡)",
  "建议动作": "立即检查会话并重置密码"
}

这种格式信息完整,接手的人不用再查一遍日志,节省响应时间。

定期回顾规则,别让它变成摆设

系统上线三个月后,业务变了、人员换了、网络结构也调了,但告警规则还停留在最初版本,自然越来越不准。建议每月花半小时看看最近的告警记录:哪些被忽略了?哪些其实是正常行为?及时调整规则,保持它的敏锐度。

就像家里的烟雾报警器,装了不等于万事大吉,得定期测试、清洁、换电池。网络告警也一样,是个持续维护的过程。