如何在 Ubuntu 12.04 上使用 fail2ban 保护 SSH
状态:已弃用
本文涵盖不再受支持的 Ubuntu 版本。如果您目前正在运行运行 Ubuntu 12.04 的服务器,我们强烈建议您升级或迁移到受支持的 Ubuntu 版本:
- 升级到 Ubuntu 14.04。
- 从 Ubuntu 14.04 升级到 Ubuntu 16.04
- 将服务器数据迁移到支持的版本
原因:
请参阅:
关于 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
#
# 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 地址的步骤。这是配置文件所在的文件扩展名的较短版本。默认的禁止操作“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。
日志路径 是指 fail2ban 将跟踪的日志位置。
SSH 部分中的 max retry 行与默认选项具有相同的定义。但是,如果您启用了多项服务并希望为每项服务设置特定值,则可以在此处为 SSH 设置新的最大重试次数。
第五步——重启 Fail2Ban
对 fail2ban 配置进行任何更改后,请始终确保重新启动 Fail2Ban:
sudo service fail2ban restart
你可以看到 fail2ban 在 IP 表中生效的规则:
sudo iptables -L