使用 fail2ban 防御 ssh 暴力破解

最近用 ssh 登陆 Centos 7 服务器的时候,经常看到几十次甚至上百次的失败登录,可见有很多人在尝试 ssh 暴力破解我的机器。那么,是否有某些手段可以阻止这种暴力破解呢?答案是肯定的。比如 ssh 本身可以设置使用非密码的验证方式来对抗这种攻击,例如公钥验证或者双重验证。而今天要介绍的 fail2ban 则是针对密码登录防止暴力破解的手段。

首先通过命令行安装 fail2ban

# yum install fail2ban

接下来我们需要配置规则来阻止暴力破解行为。

# vim /etc/fail2ban/jail.local

填入如下配置信息

[DEFAULT]
# 指定忽略的 ip,如果有多个 ip,可以用空格分隔开
ignoreip = 127.0.0.1/8

# 客户端主机被禁用时长,单位秒。这里 3600 秒表示禁用一个小时
bantime = 3600

# 设置禁用条件。这里 findtime 和 maxretry 配合使用,表示在 600 秒内最大失败 5 次则被禁用
findtime = 600
maxretry = 5

# Override /etc/fail2ban/jail.d/00-firewalld.conf:
banaction = iptables-multiport

# 设置邮箱通知
destemail = your@email.com
sendername = Fail2Ban
mta = sendmail
action = %(action_mwl)s

[sshd]
enabled = true

配置完规则后,就可以启用 fail2ban 服务了

# systemctl start fail2ban

加入开机启动

# systemctl enable fail2ban

接下来查看 fail2ban 的运行状态

# fail2ban-client status

这时会输出类似

Status
|- Number of jail: 1
`- Jail list: sshd

也可以查看 fail2ban 针对 sshd 运行的详细状态

# fail2ban-client status sshd

这时会出现如下信息

Status for the jail: sshd
|- Filter
| |- Currently failed: 0
| |- Total failed: 0
| `- Journal matches: _SYSTEMD_UNIT=sshd.service + _COMM=sshd
`- Actions
|- Currently banned: 0
|- Total banned: 0
`- Banned IP list:

至此,fail2ban 已经可以正常运行了。

留下评论