Featured image of post 记录firewalld防火墙拦截日志

记录firewalld防火墙拦截日志

记录firewalld防火墙拦截日志

💡 配置rsyslog,将拦截日志写入指定目录例如: /var/log/firewalld_deny.log

1. 创建配置文件:

1
sudo nano /etc/rsyslog.d/firewalld.conf

2. 加入以下内容并保存:

1
2
3
4
:msg,contains,"_DROP" /var/log/firewalld_deny.log
& stop
:msg,contains,"_REJECT" /var/log/firewalld_deny.log
& stop

3. 重启rsyslog服务:

1
sudo systemctl restart rsyslog

4. 查看拦截日志:

1
tail -500f /var/log/firewalld_deny.log

使用自动轮转和清理确保日志文件不会无限增长

🔧 为防火墙日志配置 logrotate

1. 创建配置文件:

1
nano /etc/logrotate.d/firewalld-custom

2. 写入配置内容:

将以下规则粘贴到文件中。这些规则会应用到你的专属日志文件/var/log/firewalld_deny.log

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
/var/log/firewalld_deny.log {
    daily
    rotate 4
    compress
    delaycompress
    missingok
    notifempty
    create 640 root root
    postrotate
        /usr/bin/systemctl kill -s HUP rsyslog.service >/dev/null 2>&1 || true
    endscript
}

3. 配置文件参数详解:

下表解释了这些配置参数的作用,你可以根据需要调整(例如,将daily改为size 100M以按大小轮转):

配置参数 说明
daily 轮转周期:每天检查一次。也可换成 size 100M 表示文件达到100MB就轮转。
rotate 4 保留份数:保留4个归档(即firewalld_deny.log.1.gz等),加上当前日志共5份。
compress 启用压缩:使用gzip压缩旧日志,大幅节省空间。
delaycompress 延迟压缩:将上一次轮转的日志留到下次轮转时再压缩,便于排查最新问题。
missingok 容错:如果日志文件暂时不存在,不报错。
notifempty 空文件不轮转:如果日志为空,则不进行轮转操作。
create 640 root root 创建新文件:轮转后创建新的空日志文件,并设置权限和属主。
postrotate 脚本 通知服务:轮转后通知rsyslog服务重新打开日志文件,确保日志写入不中断。

配置完成后,建议进行测试以确保其能正常工作:

1. 手动测试轮转:

使用以下命令可以模拟一次轮转,并不会真的执行,方便你检查配置是否有语法错误。

1
sudo logrotate -f /etc/logrotate.d/firewalld-custom

执行后,检查 /var/log/ 目录下是否生成了类似 firewalld_deny.log.1.gz 的压缩归档文件。

2. 查看 logrotate 状态:

1
cat /var/lib/logrotate/status | grep firewalld

此命令可查看你配置的firewalld-custom任务上次执行的时间。


Licensed under CC BY-NC-SA 4.0
最后更新于 Dec 03, 2025 01:00 UTC
this is the end :)