Fail2Ban - 网络入侵防御软件

Fail2Ban 是一款入侵防御软件,可以保护服务器免受暴力攻击,开源在 GitHub

介绍

简单来说,Fail2Ban 的功能就是可以记录登录失败(例如SSH,MySQL等服务)的次数,如果失败太多次就禁用登录的 IP,还可以邮件通知;这样可以防止短时间内有大量暴力破解。

注意:Fail2Ban 能够降低错误认证尝试的速度,但是它不能消除弱认证带来的风险。假如一款服务使用了弱密码,那么别人一猜就对了,那么 Fail2Ban 也无能为力。

安装Fail2Ban

1
2
3
# Ubuntu
sudo apt update && apt upgrade
sudo apt install fail2ban

配置Fail2Ban防护SSH

进入fail2ban的目录,复制一份配置文件:

1
2
3
4
cd /etc/fail2ban
sudo cp fail2ban.conf fail2ban.local
sudo cp jail.conf jail.local

jail.local 文件如果存在的话,可以自行备份下。

修改 jail.local 配置文件启动sshd策略:

1
sudo vim jail.local

定位到 [sshd]的下面配置 ,添加一行enabled = true

1
2
3
4
5
6
7
8
9
10
[sshd]
# To use more aggressive sshd modes set filter parameter "mode" in jail.local:
# normal (default), ddos, extra or aggressive (combines all).
# See "tests/files/logs/sshd" or "filter.d/sshd.conf" for usage example and details.
#mode = normal
enable = true
port = ssh
logpath = %(sshd_log)s
backend = %(sshd_backend)s

修改sshd策略:

1
sudo vim fail2ban.local

最后一行,添加如下内容:(如果你使用Ubuntu,则注释第6行,取消注释第9行)

1
2
3
4
5
6
7
8
9
10
11
12
13
[sshd]
enabled = ture
port = 22 # 注意改成自己对应的ssh端口
filter =sshd

# CentOS
#logpath = /var/log/secure

# Ubuntu
logpath = /var/log/auth.log

maxretry = 5 # 最大尝试次数
bantime = 3600 # 封禁时间,单位s。-1为永久封禁

重启即可生效:

1
2
3
4
sudo systemctl restart fail2ban  # 重启
sudo fail2ban-client status # 查看状态
sudo fail2ban-client status sshd # 查看sshd的详细状态

请我喝杯咖啡吧~

支付宝
微信