Linux利用fail2ban+iptables加固系统,防止SSH暴力破解

2022-02-06 1170点热度 0人点赞 0条评论

前面的文章有介绍防火墙是firewalld的情况下,使用fail2ban来防止SSH暴力破解的情况,详见:https://blog.terrynow.com/2021/09/17/linux-centos-fail2ban-firwalld-prevent-ssh-from-brute-force-attack/

如果系统使用的是iptables防火墙,配置的方法有所不同。

关于如何安装和开启iptables防火墙,详见:https://blog.terrynow.com/2021/02/16/centos7-ubuntu-iptables-firewall/

首先准备fail2ban

#开启iptables防火墙
systemctl start iptables

#设置防火墙开机启动
systemctl enable iptables

#安装epel-release
yum install epel-release
#安装fail2ban
yum install fail2ban

配置fail2ban的规则

安装好后fail2ban配置文件在/etc/fail2ban,其中jail.conf为主配置文件,相关的匹配规则位于filter.d目录,这里不做介绍,也没有用到。

新建文件/etc/fail2ban/jail.local,内容如下

# vim /etc/fail2ban/jail.local

[DEFAULT]
# 以空格分隔的列表,可以是 IP 地址、CIDR 前缀或者 DNS 主机名
# 用于指定哪些地址可以忽略 fail2ban 防御
ignoreip = 127.0.0.1 172.16.0.0/12 10.0.0.0/8 192.168.0.0/24
 
# 客户端主机被禁止的时长(秒)
bantime = 86400
 
# 客户端主机被禁止前允许失败的次数 
maxretry = 5
 
# 查找失败次数的时长(秒)
findtime = 600
 
[sshd]
enabled = true
filter = sshd
action = iptables[name=SSH, port=ssh, protocol=tcp]
# SSH的日志文件路径
logpath = /var/log/secure
# ssh 服务的最大尝试次数 
maxretry = 3

上述配置意思是,fail2ban会自动禁止在最近10分钟内有超过3次访问尝试失败的任意IP地址。一旦被禁,这个IP地址将会在24小时内一直被禁止访问 SSH 服务。

配置好了以后,重启下fail2ban

# 重启fail2ban
systemctl restart fail2ban

# 开机启动
systemctl enable fail2ban

检查fail2ban状态并解禁被锁住的IP地址

可以随便找一台不在白名单中的IP地址的机器用错误的密码ssh多次测试

# 查看iptables状态
iptables --list -n

Chain INPUT (policy ACCEPT)
target     prot opt source               destination
fail2ban-SSH  tcp  --  0.0.0.0/0            0.0.0.0/0           tcp dpt:22
 
Chain FORWARD (policy ACCEPT)
target     prot opt source               destination
 
Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination
 
Chain fail2ban-SSH (1 references)
target     prot opt source               destination
DROP       all  --  192.168.1.8          0.0.0.0/0
RETURN     all  --  0.0.0.0/0            0.0.0.0/0

检验fail2ban状态(会显示出当前活动的被ban列表):
fail2ban-client status

查看fail2ban的SSH状态:

[root@localhost ~]# fail2ban-client status sshd
Status for the jail: sshd
|- Filter
|  |- Currently failed:    0
|  |- Total failed:    59
|  `- Journal matches:    _SYSTEMD_UNIT=sshd.service + _COMM=sshd
`- Actions
   |- Currently banned:    1
   |- Total banned:    5
   `- Banned IP list:    192.168.1.8

取消被ban的IP:

# 取消被ban的IP
[root@localhost ~]#  fail2ban-client set sshd unbanip 192.168.1.8
1

fail2ban的日志路径是:/var/log/fail2ban.log

查看加入黑名单日志:

sudo zgrep 'Ban' /var/log/fail2ban.log*

admin

这个人很懒,什么都没留下

文章评论

您需要 登录 之后才可以评论