最近用 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 已经可以正常运行了。