安装
apt install fail2ban
centos
yum install epel-release #对于 CentOS 7 需要先安装 EPEL 库
yum install fail2ban
相关命令
fail2ban-client status #查看 Fail2ban 的状态
fail2ban-client version #查看 Fai2ban 的版本
fail2ban-client ping #检查 Fail2ban 是否正常运行(正常将显示 pong)
systemctl start fail2ban #启动 Fail2ban
systemctl stop fail2ban #停止 Fail2ban
systemctl restart fail2ban #重启 Fail2ban
tail -f /var/log/fail2ban.log #打开 Fail2ban 的日志监控
iptables --list -n #显示系统当前 iptables
iptables -D INPUT -s xxx.xxx.xxx.xxx -j DROP #解除封禁的 IP
主要文件说明
/etc/fail2ban/jail.d/
:配置文件夹。用于定义错误次数、封禁时长、封禁动作等
/etc/fail2ban/filter.d/
:条件文件夹。内含默认文件,用于定义日志文件内容的过滤规则
/etc/fail2ban/action.d
:动作文件夹。内含默认文件,用于 iptables 以及 mail 等动作配置
/etc/fail2ban/action.d
:定义 fai2ban 自身的日志级别、日志位置等
当 filter 文件监视到的错误记录条数在 jail 中定义的时间内达到 jail 中定义的次数后,告知系统 iptables 执行封禁动作及封禁时长。在封禁时长到期时,告知 iptables 解除封禁。
xxx.conf
文件是 Fail2ban 的默认文件,升级时会被覆盖
- 如果要修改配置,我们要手动建立
xxx.local
文件,其将覆盖 xxx.conf
的设置,而不要去修改 xxx.conf
文件
SSH配置
vim /etc/fail2ban/jail.local
[sshd]
enabled = true
filter = sshd
ignoreip = 127.0.0.1/8 172.31.0.0/24 10.0.0.0/24 192.168.0.0/24
action = iptables[name=SSH, port=22, protocol=tcp]
#如果是Centos路径要改/var/log/secure这个
logpath = /var/log/auth.log
maxretry = 5
findtime = 36000
bantime = 864000
参数解释:
enabled =true
:禁用或启用此 filter
filter = sshd
:对应的 filter 名称
action = iptables[name=SSH, port=ssh, protocol=tcp]
:执行的动作。iptables
对应 /etc/fail2ban/action.d/
目录下的相应 iptables.conf
动作文件;name=SSH ;port=ssh;protocol=tcp
logpath =/var/log/auth.log
:日志记录文件路径 #如果是Centos路径要改/var/log/secure
这个
maxretry = 3
:执行封禁动作前允许的错误记录数
bantime = 864000
:执行封禁的时长(秒)# 10天
findtime = 36000
:此时长(秒)内达到 maxretry 次就执行封禁动作
- ignoreip = # 以空格分隔的列表,可以是 IP 地址、CIDR 前缀或者 DNS 主机名,用于指定哪些地址可以忽略 fail2ban 防御
测试
使用下面命令清空日志,在观察下运行情况
echo > /var/log/btmp # lastb 命令清空日志
echo > /var/log/fail2ban.log # fail2ban.log日志
echo > /var/log/auth.log # 用户认证日志,包含系统授权信息,包括用户登录和使用的权限机制等
检测
systemctl restart fail2ban # 先重启 fail2ban
systemctl status fail2ban # 检查运行状态
lastb # 检查下还有没有最新登陆失败的记录
tail -f /var/log/fail2ban.log #打开 Fail2ban 的日志监控,看下运行状态
获取服务器的当前状态:
fail2ban-client status
fail2ban-client status sshd
iptables --list -n #可以查看封禁了哪些IP
解禁IP
fail2ban-client set sshd unbanip 11.22.33.44
禁止IP
fail2ban-client set sshd banip 11.22.33.44
参考:
https://linuxize.com/post/install-configure-fail2ban-on-debian-10/
https://ppgg.in/12894.html