使用fail2ban防止ssh暴力登录

今天中午,心血来潮统计了一下ssh失败登陆次数,发现最高的一个ip有4000多次登录失败记录。fail2ban可以设置规则自动拦截尝试失败次数过多的IP,部署方法如下:

安装fail2ban

1
yum -y install fail2ban

请注意防火墙软件是firewalld而不是iptables

1
2
3
4
5
6
7
8
# 查看状态
firewall-cmd --state

# 启动firewalld
systemctl start firewalld

# 开机启动
systemctl enable firewalld

默认的firewalld会禁用所有端口连接,因此你需要手动的放行端口,比如你的博客服务的web端口:

1
2
3
4
5
6
7
firewall-cmd --zone=public --add-port=80/tcp --permanent

# 重载配置
firewall-cmd --reload

# 查看已经放行的端口
firewall-cmd --zone=public --list-ports

配置fail2ban

fail2ban的配置文件位于/etc/fail2ban/, 我们在该目录新建一个自定义配置文件jail.local
然后加入如下信息:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
[DEFAULT]
ignoreip = 127.0.0.1/8
bantime = 86400
findtime = 600
maxretry = 5
banaction = firewallcmd-ipset
sender = email@email.com
senername = Fail2Ban
action = %(action_mwl)s

[sshd]
enabled = true
filter = sshd
port = 22
action = %(action_mwl)s
logpath = /var/log/secure

启动fail2ban

1
systemctl start fail2ban

查看fail2ban日志以及ip禁用列表

1
2
3
4
5
# 查看日志
tail -F /var/log/fail2ban

# 查看禁用ip
fail2ban-client status sshd
0%