防火墙规则日志到底记录了什么
你在公司做IT运维,突然收到告警,说某台服务器被频繁扫描。这时候第一反应应该是查防火墙日志。防火墙规则日志不是简单的“允许”或“拒绝”列表,它详细记录了每一次网络连接的尝试,包括源IP、目标IP、端口、协议类型和动作结果。
比如你看到一条日志显示来自某个国外IP对22端口(SSH)的大量连接请求,且都被拒绝,基本可以判断是自动化爆破尝试。这类信息藏在日志里,得会看才能发现问题。
常见的日志字段含义
不同防火墙设备输出格式略有差异,但核心字段基本一致。以Linux的iptables为例,启用日志后常见的输出包含:
IN=eth0 OUT= MAC=xx:xx:xx SRC=192.168.1.100 DST=10.0.0.50 PROTO=TCP SPT=54321 DPT=22 WINDOW=65535 RES=0x00 SYN URGP=0 ACTION=DROP这里SRC是源IP,DST是目标IP,PROTO是协议,DPT是目标端口,ACTION是执行动作。重点关注DPT和ACTION,能快速识别是否有对敏感端口(如22、3389、445)的异常访问。
如何开启并收集日志
很多默认配置下,防火墙并不会自动记录所有规则匹配行为。你需要手动添加日志规则。例如在iptables中加入:
-A INPUT -p tcp --dport 22 -j LOG --log-prefix "SSH_ATTEMPT: "这条规则会在每次有人尝试连接SSH时,在/var/log/messages或/var/log/syslog中生成一条带前缀的日志,方便后续grep过滤。
用工具提升分析效率
直接翻文本日志太费眼。实际工作中,大家更习惯用rsyslog集中收集日志,再配合ELK(Elasticsearch+Logstash+Kibana)做可视化。比如在Kibana里设置一个仪表盘,实时显示TOP 10 源IP访问次数,一旦某个IP突增,立刻就能发现。
小公司没这么复杂的环境?可以用shell脚本简单处理。比如这行命令:
grep "SSH_ATTEMPT" /var/log/messages | awk '{print $NF}' | cut -d'=' -f2 | sort | uniq -c | sort -nr能快速统计出哪些IP尝试连接过SSH最多次,排在前面的几个很可能就是扫描器。
注意日志中的误报情况
有时候内网设备自检或监控系统发包,也会触发日志记录。比如Zabbix监控主机频繁检查服务端口,可能被当成可疑行为。这时候要结合业务背景判断,别一看到大量连接就以为遭攻击。可以提前把已知内部IP段加白名单,避免干扰。
另外,时间戳一定要校准。多台设备日志时间不一致,排查问题时容易搞混顺序。建议统一部署NTP时间同步。