如何使用 Fail2Ban 保护 SSH 服务器

Fail2Ban 是开源入侵防御软件,用于保护我们的 Linux 系统免受各种攻击。 它是用 Python 编写的,通过监视服务日志中的恶意活动来工作。 它扫描所有服务的日志文件并计算失败的登录尝试次数。 每当它们的数量达到预定义的阈值时,Fail2ban 将添加额外的 IP 表规则来阻止源 IP。

在这篇文章中,我们将向我们展示 Linux 上使用 Fail2Ban 保护 SSH 服务器。

先决条件

  • 云平台上的全新 CentOS、Ubuntu 或 Debian 服务器
  • 在我们的服务器上配置的 root 密码

第 1 步 – 创建 云服务器

首先,登录到我们的 云服务器。 创建一个新服务器,选择 CentOS、Debian 或 Ubuntu 作为至少 2GB RAM 的操作系统。 通过 SSH 连接到我们的云服务器并使用页面顶部突出显示的凭据登录。

登录到 Linux 服务器后,运行以下命令以使用最新的可用软件包更新基本系统。

apt-get update -y

或者

dnf update -y

第 2 步 – 安装 Fail2Ban

默认情况下,Fail2Ban 在所有主要的 Linux 发行版中都可用。

要在 Ubuntu 和 Debian 上安装 Fail2Ban,请运行以下命令:

apt-get install fail2ban -y

要在 CentOS、RHEL 和 Fedora 上安装 Fail2Ban,请运行以下命令:

dnf install epel-release -y
dnf install fail2ban -y

安装 Fail2Ban 后,启动 Fail2Ban 服务并使其在系统重新启动时启动:

systemctl start fail2ban
systemctl enable fail2ban

第 3 步 – 配置 Fail2Ban

默认情况下,Fail2Ban 的主要配置文件位于 /etc/fail2ban/jail.conf。 始终建议在 /etc/fail2ban/ 目录中创建一个名为 jail.local 的新配置文件。

接下来,使用我们喜欢的编辑器创建一个新的配置文件:

nano /etc/fail2ban/jail.local

添加以下行:

[sshd]
enabled = true
port = ssh
filter = sshd
logpath = /var/log/auth.log
maxretry = 3
bantime = 300
ignoreip = 127.0.0.1, whitelist-ip

保存并关闭文件,然后重新启动 Fail2Ban 服务以应用更改:

systemctl restart fail2ban

在哪里:

  • port 是 SSH 端口号。
  • logpath 是 SSH 日志文件的路径。
  • bantime 是阻止攻击者 IP 的秒数。
  • maxretry 是远程主机允许的失败登录尝试次数。
  • ignoreip 是白名单 IP 地址。

第 4 步 – 监控 Fail2Ban 状态

Fail2Ban 带有一个名为 fail2ban-client 的命令行实用程序,用于监视 Fail2Ban 状态。

要检查 sshd 监狱的状态,请运行以下命令:

fail2ban-client status sshd

我们应该看到被 Fail2Ban 阻止的所有 IP 的列表:

Status for the jail: ssh
|- Filter
|  |- Currently failed:	1
|  |- Total failed:	10
|  `- File list:	/var/log/auth.log
`- Actions
   |- Currently banned: 1
   |- Total banned:	1
   `- Banned IP list:	45.58.44.186

要检查所有活动监狱的状态,请运行以下命令:

fail2ban-client status

样本输出:

Status
|- Number of jail:	3
`- Jail list:	proftpd, sshd, apache2

我们还可以查看 Fail2Ban 日志以获取更多信息:

tail -f /var/log/fail2ban.log

样本输出:

2021-07-15 10:02:13,084 fail2ban.filter         [8012]: INFO    [ssh] Found 45.58.44.186 - 2021-07-15 10:02:13
2021-07-15 10:02:33,085 fail2ban.filter         [8012]: INFO    [sshd] Found 45.58.44.186 - 2021-07-15 10:02:13
2021-07-15 10:02:33,117 fail2ban.actions        [8013]: NOTICE  [ssh] Ban 45.58.44.186

第 5 步 – 使用 Fail2Ban 禁止和取消禁止远程 IP

Fail2Ban 还允许我们手动禁止和取消禁止远程 IP。

要解禁任何被阻止的 IP,请运行以下命令:

fail2ban-client set sshd unbanip remote-ip

如果要禁止任何不受信任的 IP,请运行以下命令:

fail2ban-client set sshd banip remote-ip

在上面的指南中,我们解释了 Linux 上使用 Fail2Ban 保护 SSH 服务器。 我们现在可以创建更多的监狱来保护其他服务,例如 Apache、FTP、WordPress 等——今天就在专用服务器托管上试试吧!

© 版权声明
THE END
喜欢就支持一下吧
点赞14 分享
评论 抢沙发

请登录后发表评论