如何在 CentOS 6 上使用 fail2ban 保护 SSH
状态:已弃用
本文涵盖不再受支持的 CentOS 版本。如果您当前正在运行运行 CentOS 6 的服务器,我们强烈建议您升级或迁移到受支持的 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 分钟——如果您愿意,您可以将其增加到一个小时(或更长时间)。
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”这个词来关闭它。
过滤器,默认设置为 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 的操作。
日志路径 是指 fail2ban 将跟踪的日志位置。
SSH 部分中的 max retry 行与默认选项具有相同的定义。但是,如果您启用了多项服务并希望为每项服务设置特定值,则可以在此处为 SSH 设置新的最大重试次数。
第五步——重启 Fail2Ban
对 fail2ban 配置进行任何更改后,请始终确保重新启动 Fail2Ban:
sudo service fail2ban restart
你可以看到 fail2ban 在 IP 表中生效的规则:
iptables -L