通过上一篇Fail2Ban安装和使用保护SSH免受暴力攻击-XQLEE'Blog安装和基本使用已经能满足Linux服务器对于ssh服务的防护工作了。这里接着展开记录下其他详细资料
Fail2Ban配置主要目录在 /etc/failban
下,cd /et/failban && tree ./ -L 1
查看如下:
action.d
目录:此目录保护Fail2Ban用于禁止IP地址的操作脚本,这些脚本特定于当前系统使用的防火墙或其他防护服务(例如:iptables,nftables,ufw)fail2ban.conf
:这是Fail2Ban的主要配置文件,其中包含全局设置和选项fail2ban.d
目录:filter.d
目录:此目录包含过滤器配置文件,定义Fail2Ban如何识别和禁止IP地址,这些过滤器特定于受监控的服务(例如 HTTP、FTP 、SSH)jail.conf
:此文件包含各种服务的默认jail配置jail.local
: 此文件一般是copy jail.conf 改动的用户自定义配置,此文件会覆盖jail.conf配置。建议用户创建一个,方便升级jail.d
:此目录包含jail配置文件,定义Fail2Ban监控的具体服务和禁止IP地址的规则。paths-*
:是一些软件默认路径的配置,其中paths-common.conf是大多数通用的,其余的是各类发行版不相同的默认路径配置
jail
详细配置案例[sshd]
# 启用防护
enabled = true
# 选择过滤器
filter = sshd
# 启用抗攻击防护模式--防护策略敏感度最高
# 正常(默认)、ddos、额外或 aggressive (攻击性 全部组合)。
## normal (default), ddos, extra or aggressive (combines all).
# 有关使用示例和详细信息,请参阅“tests/files/logs/sshd”或“filter.d/sshd.conf”。
mode = normal
# 禁止 IP 的持续时间(以秒为单位)。负数-1为“永久”禁止。
## 86400秒为1天,或直接1d
bantime = 86400
## 如果在“findtime”秒内未找到匹配,则计数器设置为零。默认 600s
findtime = 300
# ssh登录失败阈值默认为 3
maxretry = 5
# 指定封禁的端口,默认为0:65535,也就是所有端口,但可以在jail中设定
port = ssh
# 使用哪个工具方法阻止IP
## firewall防火墙: firewallcmd-ipset
## iptables防火墙: iptables 或 iptables-multiport
## 拉黑到/etc/hosts.deny: hostsdeny
banaction = iptables-multiport
hostsdeny
# 日志路径
logpath = %(sshd_log)s
# 指定用于监视日志文件的后端服务
#backend = %(sshd_backend)s
backend = auto
设置Fail2ban的后端要使用的文件系统监视器。有效的监视器有:pyinotify、gamin、polling、systemd和auto。
设置为"auto"则会轮询前面几个监视器,直到获取到有效的,一般情况下使用pyinotify。默认情况下安装时已经安
装了该监视器,所以该配置项无需设置。
当使用了systemd监视器时,则应该使用过滤器配置中的"journalmatch"配置项匹配日志。"logpath"选项则失效。
这部分请参考Fail2ban#Systemd_backend:_journald_filtering
当使用systemd后端来提高性能时,请使用journalmatch配置过滤器。例如,仅解析内核级日志消息:
/etc/fail2ban/filter.d/fwdrop.local
[Definition]
failregex = ^.\*DROP\_.\*SRC=<ADDR> DST=.\*$
journalmatch = \_TRANSPORT=kernel
https://blog.xqlee.com/article/2504241901254947.html