c

c

世上本没有路
tg_channel
mastodon
pleroma

Linux 阻止 SSH 密码爆破

读取 linux 的日志,发现遭到密码爆破。SSH 密码爆破是指攻击者使用暴力破解技术,尝试猜测 SSH 用户名和密码的过程。这通常涉及使用专门的工具或脚本,尝试从一个字典文件中的可能密码列表中猜测 SSH 账户的密码。

攻击者可能使用这种技术来获取未经授权的访问权限,并获得敏感数据或在系统中执行恶意活动。

由于配置了强密码,攻击者暂时没能得逞。

为了应对 SSH 密码爆破攻击,可以采取以下措施:

  1. 使用入侵检测系统 fail2ban, 检测到暴力破解行为,在防火墙中禁止攻击者的 IP 地址
  2. ssh 换用公钥身份验证,禁用密码

fail2ban#

简介#

fail2ban 是一种开源的入侵防御工具,主要用于检测和响应针对计算机系统的恶意攻击。它通过监视日志文件来查找可能的攻击行为,并根据预定义的规则阻止攻击者的 IP 地址或主机名的访问。

fail2ban 的主要作用包括:

  1. 防止暴力破解:fail2ban 可以监视 SSH、FTP、SMTP、POP3 等服务的日志文件,并检测到暴力破解行为。一旦检测到此类行为,它将尝试在防火墙中禁止攻击者的 IP 地址。
  2. 防止拒绝服务攻击:fail2ban 可以监视网络流量并检测到 DDoS 攻击。一旦检测到此类攻击,它将尝试在防火墙中阻止攻击者的 IP 地址。
  3. 实时监控:fail2ban 可以实时监视系统日志文件,并根据规则触发警报和阻止行动。这有助于及时发现和应对新的攻击行为。
  4. 日志分析:fail2ban 可以帮助管理员分析系统日志文件,找出潜在的安全威胁,并采取相应的措施。

总的来说,fail2ban 可以帮助管理员保护他们的系统免受恶意攻击和未经授权的访问。

操作#

所以可以使用 fail2ban 来实现。以下是实现步骤:

  1. 安装 fail2ban,以 CentOS 为例:
sudo yum install epel-release -y
sudo yum install fail2ban -y
  1. 编辑 fail2ban 配置文件:
sudo vi /etc/fail2ban/jail.local

添加以下内容:

[sshd]
enabled = true
port = ssh
filter = sshd
logpath = /var/log/secure
maxretry = 3
bantime = 86400

此配置将启用 fail2ban 监视 SSH 登录尝试,如果同一 IP 地址在 3 次登录尝试中输错密码,则会被 ban 掉 1*24 小时。

  1. 启动 fail2ban 服务:
sudo systemctl enable fail2ban
sudo systemctl start fail2ban

现在,如果同一 IP 地址在 3 次登录尝试中输错密码,则会被 ban 掉 1*24 小时。如果您希望修改最大尝试次数或 ban 时间等设置,请修改上述配置文件并重新启动 fail2ban 服务。

ssh 公钥身份验证#

将 SSH 身份验证从基于口令的身份验证改为基于公钥的身份验证,有以下几个好处:

  1. 更安全:基于口令的身份验证存在被暴力破解的风险,因为攻击者可以使用暴力破解技术尝试猜测用户的密码。而基于公钥的身份验证使用了非对称加密技术,比密码更难猜测,因此更安全。
  2. 更方便:一旦设置了 SSH 公钥,您就无需在每次登录时输入密码,这使得登录更快、更方便。此外,当需要在多台远程服务器之间进行访问时,无需记住多个密码,也可以更轻松地进行身份验证。

将 SSH 验证方式从密码更改为公钥身份验证#

在 CentOS 中,将 SSH 验证方式从密码更改为公钥身份验证需要完成以下步骤:

  1. 生成公钥 / 私钥对

首先,在您的本地计算机上生成公钥 / 私钥对。您可以使用以下命令来生成公钥 / 私钥对:

ssh-keygen

该命令将提示您输入生成的密钥文件的名称和位置,并为您的密钥对生成随机的加密密码。默认情况下,这将在 ~/.ssh/ 目录下创建一个名为 id_rsa.pubid_rsa 的文件。确保将公钥文件(id_rsa.pub)拷贝到目标 CentOS 服务器上。

  1. 确认目标服务器已启用公钥身份验证

接下来,您需要确保目标服务器上已启用公钥身份验证。打开 /etc/ssh/sshd_config 文件,找到并确保以下行未被注释:

PubkeyAuthentication yes

如果该行未被注释,请跳过此步骤。

  1. 将公钥添加到目标服务器上的授权密钥文件中

将您的公钥文件添加到目标服务器上的授权密钥文件中。打开 ~/.ssh/authorized_keys 文件,并将您的公钥文件内容(即 id_rsa.pub 文件中的所有文本)复制到该文件中。

如果 ~/.ssh/authorized_keys 文件不存在,请创建它。

  1. 重启 SSH 服务

完成以上步骤后,重启 SSH 服务以使更改生效。可以使用以下命令来重启 SSH 服务:

sudo systemctl restart sshd

现在,您应该能够使用公钥身份验证连接到目标 CentOS 服务器,而不需要密码。

禁用 SSH 密码身份验证,只允许使用公钥身份验证#

  1. 确保公钥身份验证已启用

首先,确保已启用公钥身份验证。打开 /etc/ssh/sshd_config 文件,找到并确保以下行未被注释:

PubkeyAuthentication yes

如果该行未被注释,请跳过此步骤。

  1. 禁用密码身份验证

要禁用密码身份验证,请将以下行添加到 /etc/ssh/sshd_config 文件中:

PasswordAuthentication no

这将禁用通过密码进行身份验证。请注意,如果您不使用公钥身份验证,则将无法连接到 SSH 服务器。

  1. 重启 SSH 服务

完成以上步骤后,重启 SSH 服务以使更改生效。可以使用以下命令来重启 SSH 服务:

sudo systemctl restart sshd

现在,SSH 服务器只允许使用公钥身份验证进行连接,而不允许使用密码进行连接。

其他 sshd_config#

ChallengeResponseAuthentication#

禁用 SSH 密码身份验证时,如果尝试通过密码进行连接,系统将显示一个提示,指示用户使用其他身份验证方法。如果您不想看到此提示,可以按照以下步骤操作:

ChallengeResponseAuthentication no

MaxAuthTries#

MaxAuthTries 是一个 sshd_config 文件中的参数,指定了在认证过程中允许的最大尝试次数。默认情况下,这个值为 6,也就是说,如果一个用户在登录过程中超过 6 次失败,那么连接将被中断。

这个参数的主要目的是为了增加系统安全性,避免恶意攻击者通过暴力破解密码等手段入侵系统。如果您将这个值设置得过小,用户可能会因为输入错误而被锁定,如果设置得过大,系统可能会更容易受到攻击。

您可以根据实际需要更改 MaxAuthTries 的值。例如,如果您担心有人会对系统进行暴力攻击,则可以将其降低,例如将其设置为 3 或 4。如果您有一个强大的密码策略,并且不希望用户因为输入错误而被锁定,则可以将其增加到 10 或更多。

请注意,修改了 MaxAuthTries 的值之后,您需要重新启动 ssh 服务才能生效,可以使用以下命令:

sudo systemctl restart sshd
加载中...
此文章数据所有权由区块链加密技术和智能合约保障仅归创作者所有。