有哪些方法可用于保护 SSH?

信息安全 SSH 硬化
2021-08-17 16:03:17

有哪些方法可用于保护 SSH?

4个回答
  • 禁用 Root 登录- 大多数自动攻击将集中在 root 帐户上,因此禁止从该帐户登录是一个不错的起点。

  • 仅允许某些组/用户- 限制哪些用户和组可以通过 SSH 连接到系统。

  • 受 IP 或 IP 范围限制- 保护您的系统免受 SSH 攻击的最有效方法之一。

  • 使用基于密钥的身份验证- 如 Olivier 所述

  • 使用 fail2ban - fail2ban将监控尝试的 SSH 登录,并且在确定的失败尝试次数后,它将在设定的时间段内阻止攻击者的 IP 地址。这可能是减缓攻击者的非常有效的方法。

其他答案侧重于保护服务器——这很重要,但客户端也应该得到一些保护:

  • 在 /etc/ssh/ssh_config(或 ~/.ssh/config)中设置StrictHostKeyCheckingyesor ask这通过检查您要连接的服务器是否是您期望的服务器来提供一些针对中间人攻击的保护。
  • 如果您可以将记录添加到您的 DNS 区域,请发布 SSHFP 记录并设置VerifyHostKeyDNSyesask客户端将从 DNS 获取 SSHFP 并验证指纹。(请注意,如果您的攻击者控制了 DNS,您仍然容易受到攻击。)
  • 强制协议版本 2。即在 /etc/ssh/ssh_config 中设置——如果 v2 不可用Protocol 2,默认允许回退到 v1。2,1
  • 优先使用密钥而不是密码登录。在您的 ssh 密钥上使用强密码。使用足够长度(位数)的密钥。
  • 使用硬件令牌来解锁密钥,而不是输入密码(以避免键盘记录器和肩冲浪者)。
  • 确保UseBlacklistedKeysno(这是默认设置)。这可以防止您使用在弱 Debian openssl 软件包期间生成的“黑名单”密钥。使用 ssh-vulnkeys 检查主机和用户密钥。在 Debian 衍生系统(例如 ubuntu)上,您可以安装 openssh-blacklist 和 openssh-blacklist-extra 软件包。
  • 确保这CheckHostIPyes(默认)。这使客户端根据 known_hosts 检查主机的 IP,以增加对 DNS 欺骗的保护。
  • 设置HashKnownHostsyes这可以防止从您的 known_hosts 文件中泄漏信息。

禁用基于密码的登录

将基于密码的身份验证替换为基于密钥的身份验证将防止:

  • 暴力破解密码尝试。
  • 肩部攻击:在您输入密码时有人偷偷溜到后面。
  • 按键记录器。

另一件事,如果只允许少数人使用 SSH,那么每当有人登录 SSH 时,请让 bashrc 向您发送通知