Fail2ban配置ssh防暴力破解
Fail2ban能够监控系统日志,匹配日志中的错误信息(使用正则表达式),执行相应的屏蔽动作(支持多种,一般为调用 iptables ),是一款很实用、强大的软件。
如:攻击者不断尝试穷举SSH、SMTP 、FTP 密码等,只要达到预设值,fail2ban 就会调用防火墙屏蔽此 IP ,并且可以发送邮件通知系统管理员。
功能、特性:
1、支持大量服务:sshd 、apache 、qmail 等
2、支持多作动作:iptables 、tcp-wrapper 、shorewall 、mail notifications 等3、logpath 选项中支持通配符
4、需要 Gamin 支持(Gamin 用于监控文件和目录是否更改)
5、如果需要邮件通知,则系统事先要确保能够正常发送邮件
测试需要的环境:CentOS Linux release 7.7.1908 (Core)
python 版本2.4以上
[root@192 ~]# cat /etc/centos-release
CentOS Linux release 7.7.1908 (Core)
具体操作步骤:
编译安装fail2ban需要从官网下载包,解压安装即可or使用yum安装fail2ban
yum安装fail2ban:
yum -y install epel-release
[root@192 ~]# yum -y install epel-release
[root@192 ~]# yum -y install fail2ban
相关主要文件说明
Fail2ban配置文件路径:/etc/fail2ban
Fail2ban安装目录:/usr/share/fail2ban
Fail2ban日志文件:/var/log/fail2ban.log
到达阈值之后的执行的动作的配置文件:/etc/fail2ban/action.d/
包含所有的过滤规则:/etc/fail2ban/filter.d/
启动fail2ban:
[root@192 ~]systemctl start fail2ban
配置fail2ban并实现防暴力破解
在配置时,我们应该避免修改由fail2ban安装创建的文件,我们应该去编写具有.local扩展名的新文件。在.local新文件里配置的内容会覆盖jail.conf内容里相同的值。
配置fail2ban:
[root@192 ~]# cp -r /etc/fail2ban/jail.conf /etc/fail2ban/jail.d/jail.local
[root@192 ~]# vi /etc/fail2ban/jail.d/jail.local
#defalut这里是设定全局设置,如果下面的监控没有设置就以全局设置的值设置。
[DEFAULT]
用于指定哪些地址ip可以忽略 fail2ban 防御,以空格间隔。(根据自己具体地址写)
ignoreip = 127.0.0.1/20
客户端主机被禁止的时长(默认单位为秒)
bantime = 3600
过滤的时长(秒)
findtime = 600
匹配到的阈值(次数)
maxretry = 3
[ssh-iptables]
是否开启
enabled = true
过滤规则
filter = sshd
动作
action = iptables[name=SSH, port=ssh, protocol=tcp]
日志文件的路径
logpath = /var/log/secure
注意: 在这里需要注意一点就是,我们上面的action设置的时候,port=ssh,如果我们更改了sshd服务的端口号,我就需要在这里设置对应的端口号,否则配置不生效。
检测的系统的登陆日志文件。这里要写sshd服务日志文件。 默认为logpath = /var/log/sshd.log 。
#5分钟内3次密码验证失败,禁止用户IP访问主机1小时。 配置如下。
bantime = 3600
#禁止用户IP访问主机1小时。
findtime = 300
#在5分钟内内出现规定次数就开始工作。
maxretry = 3
#3次密码验证失败。
重启fail2ban服务
[root@192 ~]# systemctl restart fail2ban
测试:故意输入错误密码3次,再进行登录时,会拒绝登录
[root@192 ~]# ssh 192.168.252.128
The authenticity of host '192.168.252.128 (192.168.252.128)' can't be established.
ECDSA key fingerprint is SHA256:n4St4fyjGQVD5U4CdOlpRBxaZ+UPPU1+Zf6wBQIgyb8.
ECDSA key fingerprint is MD5:ec:3a:c1:db:6b:c8:67:c5:c3:c7:34:8c:54:1b:04:45.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '192.168.252.128' (ECDSA) to the list of known hosts.
root@192.168.252.128's password:
Permission denied, please try again.
root@192.168.252.128's password:
Permission denied, please try again.
root@192.168.252.128's password:
Permission denied (publickey,gssapi-keyex,gssapi-with-mic,password).
[root@192 ~]# ssh 192.168.252.128
ssh: connect to host 192.168.252.128 port 22: Connection refused