Linux网络命令之ssh安全控制fail2ban

一、安装

1
2
sudo yum install fail2ban # CentOS/RHEL/Fedora上安装fail2ban
sudo apt-get install fail2ban # ubuntu,Debian 或 Linux Mint

二、配置

新建文件/etc/fail2ban/jail.local 用来配置其安全规则

sudo vi /etc/fail2ban/jail.local

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
[DEFAULT]
# 以空格分隔的列表,可以是 IP 地址、CIDR 前缀或者 DNS 主机名
# 用于指定哪些地址可以忽略 fail2ban 防御
ignoreip = 127.0.0.1 172.31.0.0/24 10.10.0.0/24 192.168.0.0/24
# 客户端主机被禁止的时长(秒)
bantime = 86400
# 客户端主机被禁止前允许失败的次数
maxretry = 5
# 查找失败次数的时长(秒)
findtime = 600
mta = sendmail
[ssh-iptables]
enabled = true
filter = sshd
action = iptables[name=SSH, port=ssh, protocol=tcp]
sendmail-whois[name=SSH, dest=your@email.com, sender=fail2ban@email.com]
# Debian 系的发行版
logpath = /var/log/auth.log
# Red Hat 系的发行版
logpath = /var/log/secure
# ssh 服务的最大尝试次数
maxretry = 3

三、常用命令

1
2
3
4
5
6
7
8
9
10
11
12
sudo service fail2ban restart # Debian, Ubuntu 或 CentOS/RHEL 6
sudo systemctl restart fail2ban # 在 Fedora 或 CentOS/RHEL 7:
sudo fail2ban-client status # 检验fail2ban状态
sudo fail2ban-client status ssh-iptables # 检验一个特定监狱的状态,会显示出被禁止IP地址列表
sudo fail2ban-client ping # 验证fail2ban成功运行,你可以看到“pong(嘭)”作为响应
sudo tail -f /var/log/fail2ban.log # 该文件记录在fail2ban中发生的任何敏感事件
sudo iptables --list -n # 检测当前iptables来验证禁止规则
sudo iptables -D fail2ban-SSH -s 192.168.1.8 -j DROP # 从fail2ban中解锁某个IP地址

注意,如果你停止了Fail2ban 服务,那么所有的IP地址都会被解锁。当你重启 Fail2ban,它会从/etc/log/secure(或 /var/log/auth.log)中找到异常的IP地址列表,如果这些异常地址的发生时间仍然在禁止时间内,那么Fail2ban会重新将这些IP地址禁止。

3.1 设置 Fail2ban 自动启动

1
2
sudo chkconfig fail2ban on
sudo systemctl enable fail2ban