技术日志

记录分享邓杰律师从事网络技术工作点点滴滴。

用rsyslog管理fail2ban.log日志封禁和解封情况

点击复制标题网址

——温馨提示——

已复制到剪贴板,可粘贴到下一处。


时间:2026-02-08   查看:1014

编者按:通过 rsyslog 将 fail2ban 的封禁、解封、忽略日志按类型与日期独立归档,实现安全日志结构化、攻击行为可追溯、便于审计排查与集中管理。

用 rsyslog 把 fail2ban 的 ban、unban、Ignore 日志按类型、按天归档,核心意义有以下几点:

日志结构化:封禁、解封、忽略日志自动分开,排查攻击、误封更快速。

便于审计追溯:按天切割,方便按日期查攻击记录、合规留存。

集中规范管理:统一存放到指定目录,方便备份、展示、接入告警或面板。

减轻原日志污染:关键安全行为独立归档,不混在原始日志里,便于长期留存与清理。

具体实现路径如下:

一、创建/etc/rsyslog.d/fail2ban-filter.conf,在文件中输入:


# 1. 监听 fail2ban.log(无重复加载 imfile)

$InputFileName /var/log/fail2ban.log

$InputFileTag fail2ban:

$InputFileStateFile /var/spool/rsyslog/state-fail2ban

$InputFileSeverity info

$InputFileFacility local6

$InputRunFileMonitor


# 2. 定义动态文件名模板(核心:生成 YYYYMMDD 格式的日期)

$template BanLogFile,"/www/wwwlogs/waf/fail2ban_ban_%$year%%$month%%$day%.log"

$template UnbanLogFile,"/www/wwwlogs/waf/fail2ban_unban_%$year%%$month%%$day%.log"

$template IgnoreLogFile,"/www/wwwlogs/waf/fail2ban_Ignore_%$year%%$month%%$day%.log"


# 3. 过滤 Ban 并输出到动态文件

if $programname == 'fail2ban' and $msg contains 'Ban' then {

    action(type="omfile" DynaFile="BanLogFile" FileCreateMode="0644" DirCreateMode="0755")

    stop

}


# 4. 过滤 Unban 并输出到动态文件

if $programname == 'fail2ban' and $msg contains 'Unban' then {

    action(type="omfile" DynaFile="UnbanLogFile" FileCreateMode="0644" DirCreateMode="0755")

    stop

}


# 5. 过滤 Ignore 并输出到动态文件

if $programname == 'fail2ban' and $msg contains 'Ignore' then {

    action(type="omfile" DynaFile="IgnoreLogFile" FileCreateMode="0644" DirCreateMode="0755")

    stop

}


二、验证无语法错误。

rsyslogd -N1


三、重启rsyslog

systemctl restart rsyslog

发表评论:

评论记录:

未查询到任何数据!