Debian 上让 Syslog 与防火墙高效协同
一 架构与总体思路
- 在 Debian 上,日志通常由 rsyslog 负责采集与转发;防火墙可用 iptables/ufw 控制流量。协同的关键是:让防火墙把关键事件写入 Syslog,再由 rsyslog 按“来源/协议/端口/前缀”分文件、分级别、甚至写入数据库,便于审计与告警联动。
二 快速上手 使用 UFW 与 rsyslog
- 启用 UFW 日志输出到 Syslog
- 编辑 /etc/default/ufw,确保包含:LOG_TARGET=syslog
- 配置 rsyslog 将 UFW 日志单独落盘
- 在 /etc/rsyslog.d/20-ufw.conf 写入:
- :msg, contains, “ufw” /var/log/ufw.log
- & stop
- 重启服务并验证
- sudo systemctl restart rsyslog
- sudo tail -f /var/log/ufw.log
- 说明
- 这样可把 UFW 的 ACCEPT/DENY 等事件统一纳入 /var/log/ufw.log,便于 grep/awk 分析与对接 SIEM。
三 进阶 使用 iptables 精细化记录
- 为关键流量添加带前缀的日志规则(便于后续分文件)
- 记录 SSH 与 HTTP 访问:
- sudo iptables -A INPUT -p tcp --dport 22 -j LOG --log-prefix "SSH: "
- sudo iptables -A INPUT -p tcp --dport 80 -j LOG --log-prefix "HTTP: "
- 将 iptables 日志分流到专用文件
- 在 /etc/rsyslog.d/20-iptables.conf 写入:
- :msg, contains, “SSH” -/var/log/iptables.log
- :msg, contains, “HTTP” -/var/log/iptables.log
- & stop
- 保存与恢复规则(重启后仍然有效)
- 保存:sudo iptables-save > /etc/iptables/rules.v4
- 恢复:sudo iptables-restore < /etc/iptables/rules.v4
- 说明
- 通过 –log-prefix 给日志加标签,rsyslog 再用“contains”精准分流,避免与系统其他日志混杂。
四 集中化与数据库对接
- 在日志服务器启用网络接收
- 在 /etc/rsyslog.conf 或 /etc/rsyslog.d/50-default.conf 启用模块与端口:
- module(load=“imudp”)
- input(type=“imudp” port=“514”)
- module(load=“imtcp”)
- input(type=“imtcp” port=“514”)
- 客户端发送日志到服务器
- UDP:. @192.0.2.10:514
- TCP:. @@192.0.2.10:514
- 写入 MySQL(可选,用于审计与检索)
- 安装组件:sudo apt-get install rsyslog-mysql mysql-server
- 建库与授权后导入结构:sudo mysql -u rsyslog -p Syslog < /usr/share/doc/rsyslog-mysql/createDB.sql
- 在 rsyslog 配置中启用模块与动作:
- module(load=“ommysql”)
- . action(type=“ommysql” server=“localhost” db=“Syslog” uid=“rsyslog” pwd=“your_password”)
- 服务器放行 Syslog 端口
- sudo ufw allow 514/udp
- sudo ufw allow 514/tcp
- 说明
- 以上实现“集中采集 + 结构化存储”,便于与 ELK/Splunk 或自研平台对接。
五 运维与自动化建议
- 日志轮转与容量控制
- 使用 logrotate 管理 /var/log/ufw.log、/var/log/iptables.log,设置按日/按大小切割与保留天数,避免磁盘被占满。
- 性能与噪声控制
- 避免对高吞吐端口(如 443)无差别 LOG,优先对管理口(如 22)与异常事件记录;必要时设置 速率限制 或使用 nflog 将连接跟踪事件交给专门进程处理。
- 安全加固
- 远程 Syslog 建议启用 TCP + TLS(rsyslog 的 omrelp/TLS),并对日志文件设置最小权限(如 640,属主 syslog:adm)。
- 告警联动
- 结合 fail2ban 或自研脚本,对 /var/log/ufw.log 中反复被拒绝的来源 IP 自动执行封禁,形成“检测—阻断—取证”的闭环。