目录
什么是 fail2ban?
fail2ban 是一个开源的入侵预防软件,它能够监控日志文件,并根据特定的规则自动封禁来源于恶意访问的 IP 地址。它广泛应用于保护 SSH、Web 服务、FTP 等服务的安全。
为什么需要使用 fail2ban?
在互联网上,各种自动化的暴力攻击随处可见,比如密码爆破、CC 攻击等。这些攻击会给服务器带来极大的负担,严重影响服务的可用性。使用 fail2ban 可以有效地阻挡这些攻击,保护您的服务器安全。
在 Vultr 上安装和配置 fail2ban
安装 fail2ban
首先登录到您的 Vultr 服务器,然后运行以下命令安装 fail2ban:
sudo apt-get update sudo apt-get install fail2ban
配置 fail2ban
fail2ban 的主要配置文件位于 /etc/fail2ban/jail.conf
。您可以复制这个文件并创建一个新的配置文件 /etc/fail2ban/jail.local
,在这里进行自定义配置:
sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local sudo nano /etc/fail2ban/jail.local
在 jail.local
文件中,您可以根据需要修改以下设置:
bantime
: 封禁 IP 的时间,单位为秒findtime
: 记录日志的时间范围,单位为秒maxretry
: 允许的最大尝试次数
例如,您可以将这些参数设置为:
[DEFAULT] bantime = 604800 # 1 week findtime = 3600 # 1 hour maxretry = 5
启动和测试 fail2ban
启动 fail2ban 服务:
sudo systemctl start fail2ban
查看 fail2ban 的状态:
sudo systemctl status fail2ban
您也可以测试 fail2ban 是否工作正常:
ssh root@localhost -p 22 -oConnectTimeout=5 -oPasswordAuthentication=no
在日志中查看是否有相应的封禁记录:
sudo tail -n 20 /var/log/fail2ban.log
fail2ban 的常见使用技巧
监控多个服务
除了 SSH,fail2ban 还可以监控其他服务,如 Web 服务、FTP 等。您可以在 jail.local
文件中添加相应的 jail 配置:
[nginx-http-auth] enabled = true filter = nginx-http-auth action = iptables-multiport[name=NoHTTPAuth, port=”80,443″] logpath = /var/log/nginx*/error.log maxretry = 3
[proftpd] enabled = true filter = proftpd action = iptables-multiport[name=NoFTP, port=”21″] logpath = /var/log/proftpd.log maxretry = 3
自定义 jail 规则
您可以根据实际需求,自定义 jail 规则。例如,您可以添加一个 jail 来监控 Webmin 登录失败:
[webmin-auth] enabled = true filter = webmin-auth action = iptables-multiport[name=NoWebminAuth, port=”10000″] logpath = /var/log/webmin/*log maxretry = 3
邮件通知
fail2ban 可以在检测到攻击时发送邮件通知。您需要先配置 action.d/mail-whois-lines.conf
文件中的邮件设置:
[Definition]
sender = your_email@example.com
dest = your_email@example.com
然后在 jail.local
文件中启用邮件通知:
[ssh-iptables] enabled = true filter = sshd action = iptables-multiport[name=SSH, port=”22″] mail-whois[name=SSH, dest=your_email@example.com, sender=your_email@example.com] logpath = /var/log/auth.log maxretry = 5
fail2ban 常见问题 FAQ
fail2ban 如何自动更新封禁 IP 列表?
fail2ban 默认会自动更新封禁 IP 列表,无需手动操作。您可以查看 /etc/fail2ban/jail.d/defaults-debian.conf
文件中的 banaction
配置,确保使用了 iptables-multiport
动作。
fail2ban 如何排除某些 IP 地址?
您可以在 jail.local
文件中添加 ignoreip
配置项,指定需要排除的 IP 地址:
[DEFAULT] ignoreip = 127.0.0.1/8 192.168.1.0/24
fail2ban 如何防御 CC 攻击?
fail2ban 可以通过监控 Web 服务日志,自动封禁来源于 CC 攻击的 IP 地址。您可以参考前面提到的 nginx-http-auth
jail 配置,并根据需要调整 maxretry
和 findtime
参数。
fail2ban 如何在重启后自动启动?
您可以将 fail2ban 设置为开机自启动:
sudo systemctl enable fail2ban
这样在服务器重启后,fail2ban 服务就会自动启动。