有哪些方法可用于保护 SSH?
有哪些方法可用于保护 SSH?
信息安全
SSH
硬化
2021-08-17 16:03:17
4个回答
禁用 Root 登录- 大多数自动攻击将集中在 root 帐户上,因此禁止从该帐户登录是一个不错的起点。
仅允许某些组/用户- 限制哪些用户和组可以通过 SSH 连接到系统。
受 IP 或 IP 范围限制- 保护您的系统免受 SSH 攻击的最有效方法之一。
使用基于密钥的身份验证- 如 Olivier 所述
使用 fail2ban - fail2ban将监控尝试的 SSH 登录,并且在确定的失败尝试次数后,它将在设定的时间段内阻止攻击者的 IP 地址。这可能是减缓攻击者的非常有效的方法。
其他答案侧重于保护服务器——这很重要,但客户端也应该得到一些保护:
- 在 /etc/ssh/ssh_config(或 ~/.ssh/config)中设置
StrictHostKeyChecking
为yes
orask
。这通过检查您要连接的服务器是否是您期望的服务器来提供一些针对中间人攻击的保护。 - 如果您可以将记录添加到您的 DNS 区域,请发布 SSHFP 记录并设置
VerifyHostKeyDNS
为yes
或ask
。客户端将从 DNS 获取 SSHFP 并验证指纹。(请注意,如果您的攻击者控制了 DNS,您仍然容易受到攻击。) - 强制协议版本 2。即在 /etc/ssh/ssh_config 中设置——如果 v2 不可用
Protocol 2
,默认允许回退到 v1。2,1
- 优先使用密钥而不是密码登录。在您的 ssh 密钥上使用强密码。使用足够长度(位数)的密钥。
- 如果您有用户提供 ssh 密钥,请通过在密钥上运行john来审核密码强度。
- 使用硬件令牌来解锁密钥,而不是输入密码(以避免键盘记录器和肩冲浪者)。
- 确保
UseBlacklistedKeys
是no
(这是默认设置)。这可以防止您使用在弱 Debian openssl 软件包期间生成的“黑名单”密钥。使用 ssh-vulnkeys 检查主机和用户密钥。在 Debian 衍生系统(例如 ubuntu)上,您可以安装 openssh-blacklist 和 openssh-blacklist-extra 软件包。 - 确保这
CheckHostIP
是yes
(默认)。这使客户端根据 known_hosts 检查主机的 IP,以增加对 DNS 欺骗的保护。 - 设置
HashKnownHosts
为yes
。这可以防止从您的 known_hosts 文件中泄漏信息。
另一件事,如果只允许少数人使用 SSH,那么每当有人登录 SSH 时,请让 bashrc 向您发送通知