使用 rsyslog 单独保存 iptables log 日志实践
前言
iptables 作为经典的软件防火墙大家已经很熟悉了,不过各位应该比较少会使用到 log 日志记录保存的功能。这次因为 Ngnix stream 模块的编译和获取 realip(ngx_http_realip_module / ngx_stream_realip_module) 的方案改动成本过高,退而求其次的方式是通过 iptables 做转发,需要解决的问题就是如何保存日志和按时间 rotate。原本计划使用 Filebeat 直接接入 EFK 但因为某些原因暂时搁浅了,最后选择比较简单的 rsyslog 在本地服务器上做处理。
使用 rsyslog 单独保存 iptables log 日志实践
更新历史
2019 年 05 月 09 日 - 初稿
阅读原文 - https://liaojiaxin158.github.io/post/iptables-log/
扩展阅读
rsyslog - https://www.rsyslog.com/guides/
How to Enable Logging in Iptables on Linux - https://tecadmin.net/enable-logging-in-iptables-on-linux/
RedHat 官方教程
How to configure syslog to log the iptables messages to a different log file in Red Hat Enterprise Linux 5/6/7
Environment
Red Hat Enterprise Linux 5
Red Hat Enterprise Linux 6
Red Hat Enterprise Linux 7
syslog
Issue
- How to modify the iptables rules to let it log at the appropriate level?
- How to configure syslog to log the iptables messages to a different log file?
- To stop iptables messages to get logged into /var/log/messages ?
Resolution
1 | # Make a backup of /etc/syslog.conf before making any changes to it. |
个人实践过程
iptables 防火墙日志
1 | # 修改防火墙 NAT 表中的 PREROUTING 和 POSTROUTING 链,添加自定义 log-prefix |
配置 rsyslog 读取和保存 iptables 日志
rsyslog 是一个 syslogd 的多线程增强版。现在 Fedora / RHEL / CentOS / Ubuntu 默认的日志系统都是 rsyslog 了。
rsyslog 负责写入日志,logrotate 负责备份和删除旧日志,以及更新日志文件
1 | # 创建 iptables 日志目录 |
配置 log rotate
rotate 轮换,日志切换
logrotate 是一个日志管理程序,用来把旧的日志文件删除(备份),并创建新的日志文件,这个过程称为 “转储”。我们可以根据日志的大小,或者根据其使用的天数来转储。
1 | # 添加 iptables log rotate 策略 |
检查日志输出
如果条件允许建议直接采用 EFK 一步到位
1 | cd /var/log/iptables |