防御SSH口令爆破攻击


只要服务器在线且ssh是默认的22端口,总能看到大量的IP在做SSH暴力破解工作。虽然可以通过修改ssh端口来避免这个问题,但有些情况可能不好修改。接下来就开始配置,让我们服务器更加安全,避免被当作肉鸡。


安装

CentOS系统

1
yum install fail2ban

Debian或Ubuntu系统

1
apt-get install fail2ban

配置

增加sshd的配置

1
vi /etc/fail2ban/jail.d/sshd.local

例如:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
[ssh-iptables] 
enabled = true
filter = sshd
action = iptables[name=SSH, port=ssh, protocol=tcp]
#系统日志目录
logpath = /var/log/secure
#忽略指定IP(可选)
#ignoreip = 192.168.99.1
#用于指定哪些地址可以忽略 fail2ban 防御(可选)
#ignoreip = 192.168.99.0/24
#ssh客户端允许失败的次数
maxretry = 3
#主机被禁止的时长(秒)
bantime = 604800

如果是debian或ubuntu系统,logpath需要修改成/var/log/auth.log

保存这个文件。

启动

CentOS 7等使用systemctl方式启动

1
systemctl start fail2ban.service

老的init启动脚本方式的启动

1
service fail2ban start

1
/etc/init.d/fail2ban start

巡检

1.检查fail2ban状态

使用参数’ping’来运行fail2ban-client 命令。 如果fail2ban服务正常运行,可以看到“Server replied:pong”作为响应。

1
2
fail2ban-client ping
Server replied: pong
1
2
3
4
# fail2ban-client status
Status
|- Number of jail: 1
`- Jail list: ssh-iptables

检查封禁情况

1
fail2ban-client status ssh-iptables

2.解锁IP地址

1).解锁特定的IP地址

1
fail2ban-client set ssh-iptables unbanip 1.1.1.1

2).解锁所有的IP地址

第一种方法:停止Fail2ban 服务
停止Fail2ban 服务,那么所有的IP地址都会被解锁。当你重启 Fail2ban,它会从/var/log/secure中找到异常的IP地址列表,如果这些异常地址的发生时间仍然在禁止时间内,那么Fail2ban会重新将这些IP地址禁止。
第二种方法:日志滚动

1
logrotate -f /etc/logrotate.conf

查看/var/log/secure有无被清理,如果没有,手动清理
重启fail2ban

1
/etc/init.d/fail2ban restart

重启iptables

1
/etc/init.d/iptables restart