配置 rsyslog 为 iptables 日志单独写入日志文件
2024-11-04 by dongnan
问题描述
在 iptables
规则中添加了记录 DROP 日志的规则, 以便了解是否有被错误丢弃的流量:
iptables -A INPUT -j LOG --log-prefix "iptables dropped: " --log-level 4
但是带来了新的问题,/var/log/syslog
文件写入大量的关于 DROP 日志:
Nov 4 07:01:50 net180-gateway-254 kernel: [198919.143290] iptables dropped: IN=eth0 OUT= MAC=bc:24:11:xxxx:bc:99:30xxxx8:08:00 SRC=49.xxx.46.209 DST=219.xx.xx.179 LEN=40 TOS=0x00 PREC=0x00 TTL=236 ID=58015 PROTO=TCP SPT=60642 DPT=47598 WINDOW=1024 RES=0x00 SYN URGP=0
环境描述
系统及软件版本
- OS: Ubuntu Server 20.04
- rsyslog: 8.2001.0-1ubuntu1.3
- iptables: 1.8.4-3ubuntu2.1
目标
配置 rsyslog 为 iptables 规则产生的日志单独存放在 /var/log/iptables.log
文件。
步骤
按以下步骤尝试将 iptables 日志写入独立文件:
确认 rsyslog 已安装并运行
先确保它已安装并运行:
apt update
apt install rsyslog
systemctl enable rsyslog
systemctl start rsyslog
配置 rsyslog 接收内核日志
编辑 /etc/rsyslog.conf
文件,确保以下模块已启用:
module(load="imklog") # 接收内核日志
保存并重启 rsyslog:
systemctl restart rsyslog
创建 iptables 日志文件配置
在 /etc/rsyslog.d/
中创建一个新的配置文件来单独记录 iptables 日志:
vim /etc/rsyslog.d/30-iptables.conf
在该文件中添加以下内容,将带有 iptables dropped
前缀的日志写入 /var/log/iptables.log
:
:msg, contains, "iptables dropped" /var/log/iptables.log
& stop
这里的 & stop
告诉 rsyslog 在匹配到日志后不再处理,直接写入到指定文件。
重启 rsyslog 服务并测试
重启 rsyslog 服务使更改生效:
systemctl restart rsyslog
设置日志轮转(可选)
为了防止日志文件过大,可以配置日志轮转。
在 /etc/logrotate.d/
目录下创建一个新的配置文件 /etc/logrotate.d/iptables
,内容如下:
/var/log/iptables.log {
daily
missingok
rotate 7
compress
delaycompress
notifempty
create 640 syslog adm
}
此配置会每日轮转日志文件,保留最近 7 天的日志并压缩旧日志。
验证
查看日志文件:
tail -n1 /var/log/iptables.log
Nov 4 15:08:49 net180-gateway-254 kernel: [ 1739.028760] iptables dropped: IN=eth0 OUT= MAC=bc:24:11:d2:be:7xxxx:6a:d8:08:00 SRC=103.xx.xx.234 DST=219.xx.xx.179 LEN=44 TOS=0x00 PREC=0x00 TTL=243 ID=54321 PROTO=TCP SPT=60238 DPT=50090 WINDOW=65535 RES=0x00 SYN URGP=0
参考
- ChatGPT