2022-01-16 17:44:55
在Linux中配置防火墙日志的核心是使用iptables的LOG目标记录流量信息到系统日志,具体操作如下:
一、配置iptables日志规则插入LOG规则在相应链(如INPUT、FORWARD、OUTPUT)中插入带有LOG目标的规则,需放在ACCEPT或DROP规则之前。例如:
iptables -A INPUT -j LOG --log-prefix "IPTABLES_DROPPED_INPUT: " --log-level 7-A INPUT:将规则添加到INPUT链末尾。
-j LOG:指定目标为LOG,记录日志。
--log-prefix "IPTABLES_DROPPED_INPUT: ":自定义日志前缀,便于后续筛选。
--log-level 7:设置日志级别为debug(7),级别范围0-7,常用info(6)或debug(7)。
添加处理动作在LOG规则后添加DROP或ACCEPT规则。例如:
iptables -A INPUT -j DROP其他常用参数
--log-tcp-sequence:记录TCP序列号,用于调试复杂网络问题。
--log-tcp-options:记录TCP头选项(如MTU、窗口缩放)。
--log-ip-options:记录IP头选项,适用于特殊路由或安全机制分析。
特定场景规则示例
记录特定IP的连接尝试:iptables -A INPUT -s 192.168.1.100 -j LOG --log-prefix "SUSPICIOUS_IP_ATTEMPT: "
保存配置
Debian/Ubuntu系统:sudo netfilter-persistent save
RHEL/CentOS系统:sudo service iptables save
日志通过syslog服务写入以下文件:
查看日志
实时查看最新日志:tail -f /var/log/syslog
过滤特定日志:cat /var/log/syslog | grep "IPTABLES_DROPPED_INPUT"
分页查看日志:less /var/log/syslog
使用journalctl查看内核日志(systemd系统):journalctl -k | grep "IPTABLES_DROPPED_INPUT"
分析日志
模式识别:查找重复模式(如持续连接尝试)。
时间戳:结合事件时间定位问题。
关键字段:识别SRC(源IP)、DST(目标IP)、PROTO(协议)、SPT(源端口)、DPT(目标端口)等。
自动化工具:使用ELK Stack、Splunk、Grafana Loki等工具收集、解析和可视化日志。
使用logrotatelogrotate通过配置文件(如/etc/logrotate.conf和/etc/logrotate.d/rsyslog)管理日志轮转。示例配置:
/var/log/syslog { rotate 7 daily missingok notifempty delaycompress compress postrotate /usr/lib/rsyslog/rsyslog-rotate endscript}rotate 7:保留7个轮转周期内的日志文件。
daily:每天轮转一次(也可设为weekly、monthly或size 100M)。
compress:压缩轮转后的日志文件。
管理策略
选择轮转周期和保留数量:根据日志量和磁盘空间调整。
调整日志级别:非调试阶段使用info或更高级别减少日志量。
精简iptables规则:仅记录关键流量。
远程日志收集:将日志发送到中央日志服务器(如ELK Stack、Splunk)。
定期审计和清理:手动清理不再需要的旧日志。
