Fail2ban防止SSH暴力破解
查看登陆失败记录
sudo grep "Failed password for root" /var/log/auth.log | awk '{print $11}' | sort | uniq -c | sort -nr | more
安装Fail2ban
Fail2ban软件包包含在默认的Ubuntu 20.04存储库中。 要安装它,请以具有sudo权限的用户运行以下apt命令:
sudo apt update
sudo apt install fail2ban
检查服务状态
sudo systemctl status fail2ban
查看fail2ban运行状态
sudo fail2ban-client status sshd
查看被禁IP
# fail2ban 使用iptables实现
sudo iptables --list -n
Fail2ban配置
Fail2ban在安装时会创建两个默认的配置文件/etc/fail2ban/jail.d/defaults-debian.conf
和/etc/fail2ban/jail.conf
。我们不建议直接修改这些文件,因为更新Fail2ban时它们可能会被覆盖。
Fail2ban将按以下顺序读取配置文件。每个.local
文件都会覆盖.conf
文件中的设置:
/etc/fail2ban/jail.conf
/etc/fail2ban/jail.d/*.conf
/etc/fail2ban/jail.local
/etc/fail2ban/jail.d/*.local
将IP地址列入白名单
白名单,顾名思义就是不会从这些IP检测是否是恶意的访问。如需你要创建白名单,可以将IP地址或者IP范围添加到ignoreip
指令中。
在这里,您应该添加您的本地计算机IP地址以及您要列入白名单的所有计算机。取消以ignoreip
开头的行注释,并添加您的IP地址,以空格分隔:
ignoreip = 127.0.0.1/8 ::1 123.123.123.123 192.168.1.0/24
设置禁止时间与重试次数
bantime
,findtime
和maxretry
选项的值定义了禁止时间和禁止条件。bantime
是禁止持续的时间。如果未指定后缀,则默认为秒。默认情况下,bantime
值设置为10分钟。通常,大多数用户都希望设置更长的禁止时间。你也可以根据您的喜好更改值bantime
的值,要永久禁止IP,请使用负数:
bantime = 1d
findtime
是设置失败次数之间的持续时间。 例如,如果将Fail2ban设置为在尝试五次失败后禁止IP(请参见下文maxretry
),则这些失败必须在findtime
时间内发生,即10分钟完成5次失败的尝试。
findtime = 10m
/etc/fail2ban/jail.local
maxretry
是允许IP失败尝试次数。 默认值设置为5,对于大多数用户来说应该够用。
maxretry = 5
删除已被限制IP
sudo fail2ban-client set sshd unbanip 23.34.45.56
禁止已被限制的IP
sudo fail2ban-client set sshd banip 23.34.45.56