安全:用logrotate实现fail2ban日志按天切分

一,fail2ban默认安装了日志分割文件

文件位置:/etc/logrotate.d/fail2ban

[root@blog logrotate.d]# rpm -qf /etc/logrotate.d/fail2ban
fail2ban-server-1.0.2-12.el9.noarch

可以看到此文件来自于fail2ban-server这个rpm包

配置文件默认内容:

[root@iZ2zejc9t0hf6pnw6sewrxZ logrotate.d]# more fail2ban
#
# Gentoo:
# http://sources.gentoo.org/cgi-bin/viewvc.cgi/gentoo-x86/net-analyzer/fail2ban/files/fail2ban-logrotate?view=markup
#
# Debian:
# https://github.com/fail2ban/fail2ban/blob/debian/debian/fail2ban.logrotate

/var/log/fail2ban.log {
    missingok
    notifempty
    postrotate
      /usr/bin/fail2ban-client flushlogs >/dev/null || true
    endscript
}

二,设置为每天转存一个文件:

设置后的配置文件:

[root@blog logrotate.d]# more fail2ban
#
# Gentoo:
# http://sources.gentoo.org/cgi-bin/viewvc.cgi/gentoo-x86/net-analyzer/fail2ban/files/fail2ban-logrotate?view=markup
#
# Debian:
# https://github.com/fail2ban/fail2ban/blob/debian/debian/fail2ban.logrotate

/var/log/fail2ban.log {
    missingok
    daily
    rotate 30
    notifempty
    dateext
    sharedscripts
    postrotate
      /usr/bin/fail2ban-client flushlogs >/dev/null || true
    endscript
}

各配置项的说明:

daily: 每天轮转一次日志
rotate 30: 保留30份旧日志
dateext: 这个参数的作用: 切割后的日志文件以当前日期为格式结尾,如xxx.log-20131216这样,
            如果注释掉,切割出来是按数字递增,即前面说的 xxx.log-1这种格式
sharedscripts: 作用是: 有多个日志时,在所有日志都轮转后统一执行一次脚本。
                    如果没有配置这个,那么每个日志轮转后都会执行一次脚本
missingok
: 在日志轮循期间,任何错误将被忽略,例如“文件无法找到”之类的错误。
notifempty: 如果日志文件为空,轮循不会进行。
postrotate/endscript: 在所有其它指令完成后,postrotate和endscript里面指定的命令将被执行。
                                

设置完成后无需重启服务

posted @ 2024-09-23 11:45  刘宏缔的架构森林  阅读(30)  评论(0编辑  收藏  举报