如何在Ubuntu12.04上使用fail2ban保护SSH

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


状态: 已弃用

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

原因: Ubuntu 12.04 已于 2017 年 4 月 28 日终止生命周期 (EOL) and no longer receives security patches or updates. This guide is no longer maintained.

请参阅:
本指南可能仍可用作参考,但可能不适用于其他 Ubuntu 版本。 如果可用,我们强烈建议使用为您正在使用的 Ubuntu 版本编写的指南。 您可以使用页面顶部的搜索功能来查找更新的版本。


关于 Fail2Ban

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

第一步——安装Fail2Ban

使用 apt-get 安装 Fail2Ban

sudo apt-get install fail2ban

第二步——复制配置文件

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

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

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

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

打开新的 fail2ban 配置文件:

sudo nano /etc/fail2ban/jail.local

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

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

[DEFAULT]

# "ignoreip" can be an IP address, a CIDR mask or a DNS host
ignoreip = 127.0.0.1/8
bantime  = 600
maxretry = 3

# "backend" specifies the backend used to get files modification. Available
# options are "gamin", "polling" and "auto".
# yoh: For some reason Debian shipped python-gamin didn't work as expected
#      This issue left ToDo, so polling is default backend for now
backend = auto

#
# Destination email address used solely for the interpolations in
# jail.{conf,local} configuration files.
destemail = root@localhost

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

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

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

您可以将 后端 保留为自动。

Destemail 是发送警报的电子邮件地址。 如果您在 droplet 上设置了邮件服务器,Fail2Ban 可以在禁止 IP 地址时向您发送电子邮件。

其他详细信息 - 操作

Actions 部分位于默认值下方。 开头是这样的:

#
# ACTIONS
#

# Default banning action (e.g. iptables, iptables-new,
# iptables-multiport, shorewall, etc) It is used to define
# action_* variables. Can be overridden globally or per
# section within jail.local file
banaction = iptables-multiport

# email action. Since 0.8.1 upstream fail2ban uses sendmail
# MTA for the mailing. Change mta configuration parameter to mail
# if you want to revert to conventional 'mail'.
mta = sendmail

# Default protocol
protocol = tcp
[...]

Banaction 描述了 fail2ban 将采取的步骤来禁止匹配的 IP 地址。 这是 config if 所在文件扩展名的较短版本。 默认禁止操作“iptables-multiport”可以在 /etc/fail2ban/action.d/iptables-multiport.conf 找到

MTA 是指fail2ban 将用于发送电子邮件以引起对恶意IP 的注意的电子邮件程序。

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

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

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

[ssh]

enabled  = true
port     = ssh
filter   = sshd
logpath  = /var/log/auth.log
maxretry = 6

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

port 指定fail2ban 监控的端口。 如果您在非标准端口上设置了虚拟专用服务器,请更改端口以匹配您正在使用的端口:

 eg. port=30000

filter,默认设置为 sshd,指的是包含 fail2ban 用于查找匹配项的规则的配置文件。 sshd 指的是 /etc/fail2ban/filter.d/sshd.conf。

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

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

第五步——重启Fail2Ban

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

sudo service fail2ban restart

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

sudo iptables -L

埃特尔·斯维尔德洛夫