💡 配置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任务上次执行的时间。