对于SSH服务的常见的攻击就是暴力破解攻击——远程攻击者通过不同的密码来无限次地进行登录尝试。当然SSH可以设置使用非密码验证验证方式来对抗这种攻击,例如公钥验证或者双重验证。将不同的验证方法的优劣处先放在一边,如果我们必须使用密码验证方式怎么办?你是如何保护你的 SSH 服务器免遭暴力破解攻击的呢?
幸运的是,有一种工具可以缓解这种攻击这个工具是fail2ban。这可以配置为允许使用SSH进行合法登录,但在经过一定次数后无法正确验证后攻击将禁用IP地址。我们将在Debian上安装和配置该软件。没有服务器的同学可以在这里购买,不过我个人更推荐您使用免费的腾讯云开发者实验室进行试验,学会安装后在购买服务器。
第一步 - 安装fail2banDebian在其默认存储库中包含fail2ban。我们可以使用以下命令下载并安装它:
sudo apt-get update sudo apt-get install fail2ban这不仅会安装fail2ban,还会自动设置启动服务。
第二步 - 配置fail2banfail2ban配置保存在/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