fail2ban监测SSH服务、fail2ban命令用法.note

一、配置使用 fail2ban 进行封禁IP:
fail2ban 实际上是进行日志检测,然后使用iptables 或者 nftables 对IP进行封禁
如果使用nftables,需要先启动nftables才行
fail2ban 安装后默认是报错的,需要先注释 jail.conf 中的 sshd 配置:
vim /etc/fail2ban/jail.conf


1、配置 SSH:
(1)修改端口号:
vim /etc/ssh/sshd_config

(2)仅允许 user01 访问:
adduser user01
vim /etc/ssh/sshd_config
## 使用 AllowUsers:
这样就只有 user01能够登录
(3)将用户登录日志记录到 /var/log/ssh.log,并自定义日志内容:
注意ssh服务端需要安装 rsyslog(无需配置),否则没有 auth.log 日志
3.1、设置 日志等级,并设置日志设施:
vim /etc/ssh/sshd_config
3.2、配置 rsyslog 接收包含该日志设施的日志并自定义路径:
apt install -y rsyslog
vim /etc/rsyslog.confrsyslog中默认定义了 auth设施的接收文件,我们只需要更改路径即可

systemctl restart rsyslog
查看日志文件:

2、配置 fail2ban 检测3次访问失败后封禁IP:
注意ssh服务端需要安装 rsyslog(无需配置),否则没有 auth.log 日志
(1)安装 fail2ban:
apt install -y fail2ban
apt install -y iptables //需要使用 iptables(因为fail2ban依赖iptables来进行封禁)如果不安装,fail2ban将无法执行封禁
## 也可以使用nftables,在配置文件中指定:banaction = nftables(2)配置 fail2ban检测、封禁:
vim /etc/fail2ban/jail.local //这个文件需要创建
## 参数可以在 jail.conf 中复制,都有的因为 sshd 的默认路径被更改了,因此这里也需要改为 sshd 现在使用的日志文件路径,否则无法检测到日志文件,无法进行封禁


systemctl restart fail2ban
或:

直接完整复制 jail.conf 中的内容,然后稍微修改一下
·参数解释:
port //被监测的服务端口
filter //调用 filter.d/下内置的同名.conf 过滤文件,这里定义 sshd,调用的就是 filter.d/sshd.conf(如果不定义filter,就使用该jail的名称,例如这里定义的是 [sshd])
bantime //封禁时长
findtime //尝试时长,这里表示60秒内尝试的
maxretry //最大尝试的次数
logpath //要检测的日志文件路径,这里的路径变量内容是 /var/log/auth.log(因为上面ssh日志路径改了,所以这里也需要更改)
backend //这里的变量内容是 systemd·可以在 jail.conf 中复制参数:
vim /etc/fail2ban/jail.conf


(3)客户端访问三次触发封禁:
·三次访问失败后就无法连接了:

fail2ban上查看:


fail2ban添加的防火墙条目,重启不会失效
(4)手动解封:
·查看被封禁的地址:
fail2ban-client status

fail2ban-client set [定义的 fail2ban模块] unbanip [被封禁的地址]
# 这里使用:
fail2ban-client set sshd unbanip 192.168.100.100
## 或者这样清空:
systemctl restart nftables
iptables -F
可以看到iptables已经没有封禁了:

3、配置 使用 nftables 来进行封禁:
只需要加上一条:banaction = nftables

·测试:
访问失败三次以上:

nftables 成功封禁:
