如何在 Vultr 上使用 fail2ban 保护 SSH 服务器

目录

什么是 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 配置,并根据需要调整 maxretryfindtime 参数。

fail2ban 如何在重启后自动启动?

您可以将 fail2ban 设置为开机自启动:

sudo systemctl enable fail2ban

这样在服务器重启后,fail2ban 服务就会自动启动。

正文完