Status:已弃用
本文介绍不再受支持的 CentOS 版本。如果您当前运行的服务器运行 CentOS 6,我们强烈建议您升级或迁移到受支持的 CentOS 版本。
Reason:
CentOS 6 于 2020 年 11 月 30 日达到生命周期终止 (EOL)并且不再接收安全补丁或更新。因此,本指南不再维护。
请参阅:
本指南可能仍然可以作为参考,但可能不适用于其他 CentOS 版本。如果有的话,我们强烈建议您使用针对您所使用的 CentOS 版本编写的指南。
以下 DigitalOcean 教程可能会立即引起您的兴趣,因为它概述了如何在 CentOS 7 服务器上使用fail2ban 保护 SSH 服务守护进程:
- 如何在 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 分钟 — 如果您愿意,可以将其延长至 1 小时(或更长)。
Maxretry是主机在被禁止一段时间内可能进行的错误登录尝试次数。
Findtime指主机必须登录的时间。默认设置为10分钟;这意味着,如果主机在指定的 10 分钟内尝试登录但失败超过最大重试次数,他们将被禁止。
第四步(可选)—在 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 保护已打开这一事实。您可以用“假”一词将其关闭。
The filter,默认设置为 sshd,指的是包含fail2ban用来查找匹配的规则的配置文件。该名称是文件扩展名的缩写版本。例如,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将跟踪的日志位置。
The 最大重试次数SSH 部分中的行具有与默认选项相同的定义。但是,如果您启用了多项服务并希望为每一项服务指定特定值,则可以在此处设置新的 SSH 最大重试次数。
第五步 — 重新启动 Fail2Ban
对fail2ban配置进行任何更改后,请务必重新启动Fail2Ban:
sudo service fail2ban restart
您可以在IP表中看到fail2ban生效的规则:
iptables -L
埃特尔·斯维尔德洛夫