简介
filter规则目录:/etc/fail2ban/filter.d/
日志文件:/var/log/fail2ban.log
参数 | 值 | |
---|---|---|
action | ||
banaction | iptables-multiport,iptables-allports | |
banaction_allports | iptables-allports | |
bantime | 是主机被封禁的时间量,以秒为单位的整数或时间缩写格式(m - 分钟,h - 小时,d - 天,w - 周,mo - 月,y - 年) | 10m |
bantime.increment | 允许使用数据库来搜索先前被禁止的IP地址,以使用特殊公式增加默认的禁止时间,默认情况下为 banTime * 1, 2, 4, 8, 16, 32…… | true,false |
bantime.rndtime | 用于与随机时间混合的最大秒数,以防止“聪明”的僵尸网络计算出IP可以再次解禁的确切时间 | |
bantime.maxtime | 是禁止时间可以达到的最大秒数(不再增长) | |
bantime.factor | 计算公式的指数增长系数或常规乘数,默认值为1,在默认公式的情况下,禁止时间增加为1、2、4、8、16 | |
bantime.formula | 默认用于计算下一个禁止时间值的公式 | |
bantime.multipliers | 1 5 30 60 300 720 1440 2880 | |
bantime.overalljails | (如果为true)指定将在整个监狱中执行IP地址的数据库搜索,如果为false(默认值),则仅在当前监狱中执行搜索 | true,false |
enable | ||
findtime | 如果主机在过去的 “findtime” 秒内生成了 “maxretry” 次失败,则会被封禁 | 10m |
maxretry | 主机在被封禁之前的失败次数 | |
mode | ddos, normal, aggressive | |
protocol | tcp, udp, icmp, ipv6-icmp | |
port | 0:65535 | |
ignoreself | 是否应忽略本地的 IP 地址 | true |
ignoreip | 可以是一个 IP 地址、CIDR 子网掩码或 DNS 主机的列表。Fail2ban 不会封禁与此列表中的地址匹配的主机。可以使用空格(和/或逗号)分隔符定义多个地址。 | 127.0.0.1/8 ::1 |
backend | 指定用于获取文件修改的后端 | auto, polling, pyinotify, systemd |
logpath | ||
filter | 定义了jail要使用的filter。默认情况下,jail的名称与其filter名称匹配 | |
usedns | yes, warn, no, raw |
配置样例
[nginx]
enabled = true
port = http,https
filter = nginx
logpath = /var/log/nginx*/*access.log
action = iptables-multiport[name=404, port="http,https", protocol=tcp]
maxretry = 5
findtime = 30
bantime = 7200
安装
系统:Debian 12
内核:6.7.5
克隆仓库到本地
git clone https://github.com/fail2ban/fail2ban.git && cd fail2ban
安装
python3 setup.py install
复制文件到启动项
cp files/debian-initd /etc/init.d/fail2ban
添加系统启动项
update-rc.d fail2ban defaults
启动fail2ban
systemctl start fail2ban.service
查看fail2ban状态
systemctl status fail2ban.service
配置
ssh
编辑
/etc/fail2ban/jail.local
,添加以下[sshd] enabled = true port = 22 banaction = iptables-allports mode = aggressive maxretry = 1 findtime = 10m bantime = 24h
Debian 12有可能会出现以下报错
Failed during configuration: Have not found any log file for sshd jail
还需要安装
python3-systemd
和添加如下配置backend=systemd
查看规则生效情况
fail2ban-client status sshd
Nginx
参考
Install fail2ban on your Linux distribution
转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 cnlnnn@qq.com