如何使用 SSHGUARD 阻止 SSH 暴力攻击

在本指南中,我们将演示如何安装和配置 SSHGuard 以阻止 Linux 服务器中的 SSH 暴力攻击。

在本指南中,我们将演示如何安装和配置 SSHGuard 以阻止 Linux 服务器中的 SSH 暴力攻击

如何使用 SSHGUARD 阻止 SSH 暴力攻击

概述

SSHGuard是一个入侵防御实用程序,它可以解析日志并使用系统防火墙自动阻止行为不端的 IP 地址(或其子网)。最初旨在为 OpenSSH
服务提供额外的保护层,SSHGuard 还保护范围广泛的服务,例如 Vsftpd 和 Postfix。它可以识别多种日志格式,包括
Syslog、Syslog-ng 和原始日志文件。SSHGuard 与 Fail2ban 非常相似,只是它是用 C 编写的(Fail2ban 是用 Python
编写的),更轻巧,提供的功能更少。

在本指南中,我们将演示如何安装和配置 SSHGuard 以阻止 Linux 服务器中的 SSH 暴力攻击。

第一步:在 Linux 上安装 SSHGuard

在 Debian/Ubuntu 上安装 SSHGuard

首先,更新软件包列表,然后使用 apt 软件包管理器从默认存储库安装 SSHGuard。

$ sudo apt update
$ sudo apt install sshguard

安装后,SSHGuard 服务会自动启动,您可以使用以下命令进行验证:

$ sudo systemctl status sshguard

如何使用 SSHGUARD 阻止 SSH 暴力攻击

在 Yum/RHEL 系统上安装 SSHGuard

对于基于 RHEL 的发行版,例如 CentOS,首先安装 EPEL 存储库。

$ sudo yum install epel-release

或者

$ sudo dnf install epel-release

有了 EPEL,继续使用 dnf 包管理器安装 SSHGuard。

$ sudo dnf install sshguard

安装后启动并将 SSHGuard 设置为随系统自启。

$ sudo systemctl start sshguard
$ sudo systemctl enable sshguard

检查 SSHGuard 运行状态。

$ sudo systemctl status sshguard

如何使用 SSHGUARD 阻止 SSH 暴力攻击

第 二 步:Linux 上的 SSHGuard 配置

SSHGuard 会主动监控 /var/log/auth.log、/var/log/secure systemd 日志和 syslog-ng
日志文件以查找失败的登录尝试。

对于每次不成功的登录尝试,远程主机将被禁止一段时间,默认设置为 120 秒。此后,每次连续失败的登录尝试,禁令时间都会增加 1.5 倍。

禁止违规主机的时间以及其他参数在 sshguard.conf 文件中指定。您可以使用 vim 编辑器访问配置文件。

$ sudo vim /etc/sshguard/sshguard.conf

在基于 RHEL 的发行版上,配置文件位于以下路径中。

$ sudo vim /etc/sshguard.conf

这是从 Ubuntu / Debian 查看时的配置文件示例。

如何使用 SSHGUARD 阻止 SSH 暴力攻击

主要选项:

  • BACKEND:指令指向后端可执行文件的完整路径。在这个例子中,我们看到 IPtables 被设置为默认的防火墙后端。
  • THRESHOLD:指令在攻击者的攻击分数超过指定值时阻止攻击者。
  • BLOCK_TIME:选项是在每次连续失败的登录尝试后阻止攻击者的秒数。默认情况下,第一次尝试后设置为
    120。这会随着每次连续失败的登录尝试而增加。
  • DETECTION_TIME:选项是指攻击者在其得分被重置之前被系统注册或记住的时间(以秒为单位)。
  • WHITELIST_file:选项指向包含不应列入黑名单的主机的白名单文件的完整路径。

第三 步:配置 SSHGuard 以阻止 SSH 暴力攻击

为了抵御暴力攻击,您需要在以下防火墙上进行配置以使用 sshguard。

使用 UFW 阻止 SSH 攻击

如果您在 Ubuntu / Debian 系统上安装并启用了 UFW,请修改 /etc/ufw/before.rules 文件。

$ sudo vim etc/ufw/before.rules
$ sudo vim etc/ufw/before.rules

在“allow all on loopback”部分之后添加以下行。

# allow all on loopback
-A ufw-before-input -i lo -j ACCEPT
-A ufw-before-output -o lo -j ACCEPT
# hand off control for sshd to sshguard
:sshguard - [0:0]
-A ufw-before-input -p tcp --dport 22 -j sshguard

保存文件并重新启动 UFW。

$ sudo systemctl restart ufw

现在尝试使用错误的凭据从不同的系统登录服务器,并注意在第一次登录尝试失败后您将被锁定 120 秒。

您可以通过检查 auth.log 日志文件来验证这一点。

$ sudo tail -f  /var/log/auth.log

如何使用 SSHGUARD 阻止 SSH 暴力攻击

在下一次失败的日志尝试之后,阻塞时间增加到 240 秒,然后是 480 秒,然后是 960 秒,依此类推。

使用 Firewalld 阻止 SSH 攻击

如果您正在运行 firewalld,请确保已设置并启用它。然后执行以下命令以在您的首选区域上启用 sshguard。

$ sudo firewall-cmd --permanent --zone=public --add-rich-rule="rule source ipset=sshguard4 drop"

要应用更改,请重新加载 Firewalld 和 sshguard。

$ sudo firewall-cmd --reload
$ sudo systemctl restart sshguard

然后验证规则如下:

$ sudo firewall-cmd —-info-ipset=sshguard4

如何使用 SSHGUARD 阻止 SSH 暴力攻击

使用 iptables 阻止 SSH 攻击

如果您仍在使用 Iptables,首先,在 Iptables 中为 sshguard 创建一个新的链式规则,以阻止不需要的访客。

# iptables -N sshguard

接下来,更新 INPUT 链以将流量引导至 sshguard 并阻止来自恶意方的所有流量。

# iptables -A INPUT -j sshguard

要阻止滥用者访问特定端口,例如 SSH、POP 和 IMAP,请运行以下命令:

# iptables -A INPUT -m multiport -p tcp --destination-ports 22,110,143 -j sshguard

最后,保存规则以使更改生效。

# iptables-save > /etc/iptables/iptables.rules

第四 步:如何将 SSH 阻止的主机列入白名单

要将被阻止的主机列入白名单,只需在白名单文件中指定其主机名或 IP 地址即可:

/etc/sshguard/whitelist - Ubuntu/Debian 
/etc/sshguard.whitelist - RHEL-based distros

之后,请务必重新启动 sshguard 守护程序和防火墙后端以应用更改。

小结

在本指南中,我们演示了如何在 Linux 系统上使用 SSHGuard 阻止 SSH Bruteforce 攻击。

©本文为清一色官方代发,观点仅代表作者本人,与清一色无关。清一色对文中陈述、观点判断保持中立,不对所包含内容的准确性、可靠性或完整性提供任何明示或暗示的保证。本文不作为投资理财建议,请读者仅作参考,并请自行承担全部责任。文中部分文字/图片/视频/音频等来源于网络,如侵犯到著作权人的权利,请与我们联系(微信/QQ:1074760229)。转载请注明出处:清一色财经

(0)
打赏 微信扫码打赏 微信扫码打赏 支付宝扫码打赏 支付宝扫码打赏
清一色的头像清一色管理团队
上一篇 2023年5月6日 11:48
下一篇 2023年5月6日 11:48

相关推荐

发表评论

登录后才能评论

联系我们

在线咨询:1643011589-QQbutton

手机:13798586780

QQ/微信:1074760229

QQ群:551893940

工作时间:工作日9:00-18:00,节假日休息

关注微信