服务器防火墙日志需确保“记得全、看得清、判得准”,即完整记录时间戳、源/目的ip、协议端口、动作结果、规则id五项关键字段;持久化存储并防篡改;用轻量命令或脚本实现高频攻击源、端口扫描、暴力破解等有效分析;建立自动封禁、告警、策略核查与操作留痕的闭环响应机制。

服务器防火墙日志记录与分析,核心是“记得全、看得清、判得准”。不是堆砌日志,而是让每条记录都可追溯、可定位、可响应。重点不在日志数量,而在关键字段是否完整、存储是否可靠、分析是否聚焦真实风险。
明确记录哪些关键字段
日志价值取决于字段颗粒度。只记“DROP”没用,必须包含以下5项基础信息:
- 时间戳(精确到秒):建议统一为本地时区或UTC,避免跨节点时间错乱;
- 源IP与目的IP:区分内网/外网地址段,对NAT环境需记录原始源IP(如X-Forwarded-For或conntrack辅助字段);
- 协议+端口(src-port/dst-port):TCP/UDP/ICMP都要标注,端口不能只写数字,要关联服务名(如22→ssh);
- 动作结果(ACCEPT/DROP/REJECT):区分主动拒绝(REJECT带RST)和静默丢弃(DROP),二者安全含义不同;
-
匹配规则ID或链名:例如iptables中加
--log-prefix "RULE-103",firewalld用firewall-cmd --query-rich-rule反查策略来源。
确保日志持久化与防篡改
默认日志常写入内存缓冲或滚动覆盖,生产环境必须固化存储并隔离权限:
- Linux系统:将iptables日志重定向至专用文件(如
/var/log/iptables.log),通过rsyslog配置kern.* /var/log/iptables.log并设rotate 12、maxsize 10M; - firewalld:修改
/etc/firewalld/firewalld.conf启用LogDenied=all,指定log-file=/var/log/firewalld-audit.log,禁止普通用户读写该路径; - Windows:启用高级安全防火墙日志,路径设为
%SystemRoot%\System32\LogFiles\Firewall\pfirewall.log,配合NTFS权限限制仅Administrators组可访问; - 所有平台:日志文件属主设为
root:adm或SYSTEM,权限640,并开启auditd或Windows事件转发,防止本地删除。
用最小成本做有效分析
不必依赖昂贵SIEM,日常运维靠命令+脚本就能发现90%异常:
- 查高频攻击源:
awk '$7=="DROP" {print $11}' /var/log/iptables.log | sort | uniq -c | sort -nr | head -10(提取SRC字段统计); - 盯高危端口扫描:
grep -E "(22|3389|445|1433)" /var/log/iptables.log | grep DROP | awk '{print $1,$2,$11,$6}'; - 识别暴力破解特征:同一IP在5分钟内触发≥10次SSH连接失败(结合
auth.log与防火墙日志交叉比对); - 自动化工具选型:Python脚本用
re模块解析日志,collections.Counter聚合统计,输出HTML报告;或用goaccess快速生成可视化面板(支持自定义日志格式)。
建立闭环响应机制
日志分析的终点不是报表,而是动作:
- 对TOP3攻击IP自动加入黑名单:
iptables -I INPUT -s x.x.x.x -j DROP,并记录操作日志; - 检测到端口扫描行为(如1分钟内对≥20个端口发起SYN),触发邮件告警并存档原始日志片段;
- 每月导出“被拒绝但符合白名单规则”的流量清单,核查策略合理性(避免误拦业务);
- 所有人工干预操作(如临时放行、规则调整)必须留痕:用
firewall-cmd --permanent --add-rich-rule='rule ... audit'或记录到独立审计日志。











