Fail2ban SSH配置

QQ截图20220121165247.png

安装

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

# Fail2ban 

本文由:星际难民
实践,测试,整理发布.如需转载请注明地址 本文标题:Fail2ban SSH配置
地址:https://530503.xyz/articles/2022/01/21/1642757126732.html

评论

取消