分享最新优惠信息
购买主机更加划算

使用SSHGUARD阻止SSH暴力攻击的简单方法介绍

SSHGuard是一个开源守护进程,它通过使用Linux防火墙后端之一(iptablesFirewallDpfipfw)监控和聚合系统日志、检测攻击和阻止攻击者来实现保护Linux服务器免受暴力攻击。

最初旨在为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

在 Ubuntu中检查SSHGuard

在RHEL系统上安装SSHGuard

对于基于 RHEL 的发行版,例如CentOS、Rocky和AlmaLinux,首先按照以下命令安装EPEL存储库。

$ sudo dnf install https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm
或者
$ 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

在RHEL中检查SSHGuard

第二步:在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配置文件

接下来对主要选项进行简单解析:

  • BACKEND:指向后端可执行文件的完整路径,在本文中,可以看到IPtables被设置为默认的防火墙后端。
  • THRESHOLD:进攻得分超过指定值时将会直接阻止攻击者。
  • BLOCK_TIME:攻击者每天连续登录尝试失败后受阻数的时间。默认情况下,第一次尝试后设置为120秒。这会随着每次连续失败的登录尝试而增加。
  • DETECTION_TIME:在攻击者注册或由系统记忆在他们分数重置的时间。
  • WHITELIST_file:指向包含这些不应该是blacklisted./li主机白名单文件的完整路径。

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

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

使用UFW阻止SSH攻击

如果在Ubuntu / Debian系统上安装并启用了UFW,请修改/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

检查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

在Firewalld中检查SSHGuard

使用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暴力攻击,设置过程仅供参考。

其实,在使用Linux服务器时候,网络攻击一直让很多站长很是头疼,验证威胁着网站的数据安全和正常运行,因此,平时我们只有不断的做好安全防护措施,才能保障Linux服务器的安全运行。

未经允许不得转载:惠主机 » 使用SSHGUARD阻止SSH暴力攻击的简单方法介绍