入门系列之使用fail2ban防御SSH服务器的暴力破解攻击

对于SSH服务的常见的攻击就是暴力破解攻击——远程攻击者通过不同的密码来无限次地进行登录尝试。当然SSH可以设置使用非密码验证验证方式来对抗这种攻击,例如公钥验证或者双重验证。将不同的验证方法的优劣处先放在一边,如果我们必须使用密码验证方式怎么办?你是如何保护你的 SSH 服务器免遭暴力破解攻击的呢?

幸运的是,有一种工具可以缓解这种攻击这个工具是fail2ban。这可以配置为允许使用SSH进行合法登录,但在经过一定次数后无法正确验证后攻击将禁用IP地址。我们将在Debian上安装和配置该软件。没有服务器的同学可以在这里购买,不过我个人更推荐您使用免费的腾讯云开发者实验室进行试验,学会安装后在购买服务器。

第一步 - 安装fail2ban

Debian在其默认存储库中包含fail2ban。我们可以使用以下命令下载并安装它:

sudo apt-get update sudo apt-get install fail2ban

这不仅会安装fail2ban,还会自动设置启动服务。

第二步 - 配置fail2ban

fail2ban配置保存在/etc/fail2ban目录中。默认禁止规则的配置文件称为jail.conf。

由于fail2ban在程序有新版本时更新其配置文件的方式,因此我们不应编辑默认配置文件。

相反,我们应该将其复制到新位置进行编辑:

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

在这里,我们可以更改默认配置中设置。

默认配置

开始的部分[DEFAULT]是配置默认值,可以在配置中稍后的更具体的上下文中覆盖这些默认值。已经给出的大多数设置都是默认选项的选择。

禁止默认值

我们可以通过修改一些参数来配置fail2ban实现禁止的方式。以下是一些更重要的内容:

ignoreip:此参数采用应从fail2ban规则中排除的IP地址列表。此处列出的IP地址或块不会受到限制,因此请而具体地选择它们。

IP地址和范围由空格分隔。

您应该将您的家庭或工作IP地址添加到列表的末尾,以便在登录时遇到问题不会被阻止。

这看起来像:“ignoreip = 127.0.0.1/8 YOUR_IP_ADDRESS”

bantime:这列出了如果客户端无法正确验证禁令将持续的时间。

客户端默认值为10分钟。

maxretry:此参数指定禁止实施前允许的尝试次数。

定义禁令操作

当需要禁令时,fail2ban可以以不同的方式进行。它通过查看以下参数来决定必要的操作:

banaction:此设置指定在需要禁令时将使用的配置文件。

此参数的值指的是/etc/fail2ban/action.d目录中的文件,该文件将处理实际的禁止过程。

默认值使用iptables在身份验证失败时禁止所有端口上的IP。我们稍后会讨论具体的禁止规则。

action:此参数指定其上方列出的操作快捷方式之一。它基本上调用一个banaction脚本(如上所述),然后为变量分配适当的信息并将它们传递给脚本。

默认操作是action_调用脚本并将名称,端口,协议和链传递给脚本。它不会像其他一些操作那样发送电子邮件地址或日志行。

配置电子邮件警报

如果您希望将fail2ban配置为在禁止IP后通过电子邮件发送给您,您也可以在默认部分配置它。

如果已在计算机上配置了邮件服务器,则可以配置fail2ban以将电子邮件发送到外部邮件。
有两个相关参数:

destemail:此选项设置在禁止的情况下将通知的电子邮件地址。

默认值root@localhost将邮件传递到当前计算机的root帐户。

如果您配置了邮件服务器,请将其更改为外部邮件地址。

mta:这指定将用于传递邮件的邮件代理。

如果您的邮件服务器配置了sendmail,请保留默认选项(sendmail)。

如果您没有配置邮件服务器,但希望将本地邮件传递到用户帐户,则可以将“sendmail”更改为“mail”。

如果您希望配置电子邮件,则必须如上所述编辑action参数。将操作更改为“actionmw”或“actionmwl”,以将电子邮件信息传递给禁止脚本。

如果您已配置本地邮件传递,则可以通过输入以下内容来检查邮件:

sudo nano /var/mail/mail 配置特定于应用程序的Jails

在文件的下方,你应该看到标记为这样的部分:

[application_name]

您应该能够破译大多数参数。

filter参数指定/etc/fail2ban/filter.d目录中的文件。这告诉fail2ban如何解析程序的日志文件以查看失败的身份验证。

如果fail2ban解析失败。logpath变量保存服务日志文件的路径,

您可以在此处覆盖任何其他默认参数。例如,对于SSH,maxretry选项与Debian安装中的dault选项不同。

第三步 - 配置iptables

我们实际上不会对iptables进行太多配置,但我们将查看实现其行为的配置文件。这将有助于我们了解fail2ban如何实施其禁止政策。

在banaction参数下打开我们的jail配置中指定的文件:

sudo nano /etc/fail2ban/action.d/iptables-multiport.conf

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wpyzdz.html