如何在CentOS6上使用fail2ban保护SSH

来自菜鸟教程
跳转至:导航、​搜索

状态: 已弃用

本文介绍了不再受支持的 CentOS 版本。 如果您目前正在运行运行 CentOS 6 的服务器,我们强烈建议您升级或迁移到受支持的 CentOS 版本。

原因: CentOS 6 已于 2020 年 11 月 30 日结束生命周期 (EOL) and no longer receives security patches or updates. For this reason, this guide is no longer maintained.

请参阅:
本指南可能仍可用作参考,但可能不适用于其他 CentOS 版本。 如果可用,我们强烈建议使用为您正在使用的 CentOS 版本编写的指南。

以下 DigitalOcean 教程可能会立即引起人们的兴趣,因为它概述了如何在 CentOS 7 服务器上使用 fail2ban 保护 SSH 服务守护进程:




关于 Fail2Ban

服务器不是孤立存在的,那些只有最基本的 SSH 配置的服务器很容易受到暴力攻击。 fail2ban 提供了一种自动保护服务器免受恶意迹象的方法。 该程序通过扫描日志文件并对违规行为做出反应,例如重复登录尝试失败。

第一步——安装Fail2Ban

由于 CentOS 不提供 fail2ban,我们应该从下载 EPEL 存储库开始:

rpm -Uvh http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm

通过安装fail2ban跟进:

yum install fail2ban

第二步——复制配置文件

默认的fail2ban 配置文件位于/etc/fail2ban/jail.conf。 然而,配置工作不应该在该文件中完成,我们应该制作它的本地副本。

cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local

复制文件后,您可以在新的 jail.local 文件中进行所有更改。 许多可能需要保护的服务已经在文件中。 每个都位于其自己的部分,配置并关闭。

第三步——在 Jail.Local 中配置默认值

打开新的 fail2ban 配置文件:

vi /etc/fail2ban/jail.local

默认值的第一部分涵盖了 fail2ban 将遵循的基本规则。 如果您想为您的虚拟专用服务器设置更细致的保护,您可以自定义每个部分的详细信息。

您可以在下面看到默认部分。

[DEFAULT]

# "ignoreip" can be an IP address, a CIDR mask or a DNS host. Fail2ban will not
# ban a host which matches an address in this list. Several addresses can be
# defined using space separator.
ignoreip = 127.0.0.1

# "bantime" is the number of seconds that a host is banned.
bantime  = 3600

# A host is banned if it has generated "maxretry" during the last "findtime"
# seconds.
findtime  = 600

# "maxretry" is the number of failures before a host get banned.
maxretry = 3

将您的个人 IP 地址写入 ignoreip 行。 您可以用空格分隔每个地址。 IgnoreIP 允许您将某些 IP 地址列入白名单,并确保它们不会被您的 VPS 锁定。 包括您的地址将保证您不会意外禁止自己访问自己的虚拟专用服务器。

下一步是决定 bantime,如果发现主机违反任何规则,主机将被服务器阻止的秒数。 这在机器人的情况下特别有用,一旦被禁止,就会简单地转移到下一个目标。 默认设置为 10 分钟——如果您愿意,可以将其提高到一个小时(或更长)。

Maxretry 是主机在被禁止时间长度内被禁止之前可能进行的错误登录尝试次数。

Findtime 是指主机必须登录的时间量。 默认设置为 10 分钟; 这意味着如果主机在指定的 10 分钟内尝试登录超过 maxretry 次数,但失败,他们将被禁止。

第四步(可选)——在 Jail.Local 中配置 ssh-iptables 部分

SSH 详细信息部分在配置中稍微靠后一点,它已经设置并打开。 尽管不应该要求您在本节中进行任何更改,但您可以在下面找到有关每行的详细信息。

[ssh-iptables]

enabled  = true
filter   = sshd
action   = iptables[name=SSH, port=ssh, protocol=tcp]
           sendmail-whois[name=SSH, dest=root, sender=fail2ban@example.com]
logpath  = /var/log/secure
maxretry = 5

Enabled 仅指开启 SSH 保护这一事实。 您可以使用“false”一词将其关闭。

filter,默认设置为 sshd,指的是包含 fail2banuses 查找匹配规则的配置文件。 该名称是文件扩展名的缩短版本。 例如,sshd 指的是 /etc/fail2ban/filter.d/sshd.conf。

Action 描述了 fail2ban 将采取的禁止匹配 IP 地址的步骤。 就像过滤器条目一样,每个动作都指向 action.d 目录中的一个文件。 默认禁止操作“iptables”可以在 /etc/fail2ban/action.d/iptables.conf 中找到。

在“iptables”详细信息中,您可以进一步自定义fail2ban。 例如,如果您使用的是非标准端口,则可以更改括号内的端口号以匹配,使该行看起来更像这样:

 eg. iptables[name=SSH, port=30000, protocol=tcp]

您也可以在这一行中将协议从 TCP 更改为 UDP,具体取决于您希望 fail2ban 监控的协议。

如果您在虚拟专用服务器上设置了邮件服务器,Fail2Ban 可以在禁止 IP 地址时向您发送电子邮件。 在默认情况下,sendmail-whois 指的是位于 /etc/fail2ban/action.d/sendmail-whois.conf 的操作。

log path 指的是fail2ban会跟踪的日志位置。

SSH 部分中的 max retry 行与默认选项具有相同的定义。 但是,如果您启用了多个服务并希望为每个服务设置特定值,则可以在此处设置新的 SSH 最大重试次数。

第五步——重启Fail2Ban

在对 fail2ban 配置进行任何更改后,请务必重新启动 Fail2Ban:

sudo service fail2ban restart

您可以在 IP 表中看到 fail2ban 生效的规则:

iptables -L

埃特尔·斯维尔德洛夫