如何在 OpenSSH Linux 服务器上仅接受 ed25519 类型的用户身份密钥?

信息安全 SSH 打开sh
2021-08-24 18:34:00

我想强制所有用户在通过 SSH / SFTP 登录到运行最新版本* OpenSSH 的 Linux 服务器时仅使用 ed25519类型的密钥。

对 SSH 密钥进行控制的一些一般原因可能包括:

在许多情况下,SSH 密钥在身份和访问管理规划、实施和审计中被完全忽略了。用户已经能够在没有监督和控制的情况下创建和安装密钥。这导致违反公司访问策略和危险的后门。

信息安全从控制谁可以访问系统和数据开始。如果没有对访问的控制,就没有安全性、机密性、完整性和持续运行的保证

来源:https : //www.ssh.com/iam/ssh-key-management/

我并不是要完成完整的密钥管理实施。而且我不希望删除用户管理自己的 SSH 密钥(包括添加、删除、更改密钥)的能力。唯一的目标是强制使用 ed25519 类型的密钥。

如何在保持上述用户权限和保持此设置的同时实现这一点?

AuthorizedKeysFile  .ssh/authorized_keys

我在此服务器上使用的主要(非默认)sshd_config 设置包括:

The only host key enabled:
HostKey /etc/ssh/ssh_host_ed25519_key

PermitRootLogin no
PasswordAuthentication no
ChallengeResponseAuthentication no
UsePAM yes
AuthorizedKeysFile  .ssh/authorized_keys
KexAlgorithms curve25519-sha256@libssh.org
MACs hmac-sha2-512-etm@openssh.com
Ciphers chacha20-poly1305@openssh.com
AllowUsers user@host ...

但是,通过这些设置,用户仍然可以选择较旧的用户身份密钥类型并使用它来登录。我现在唯一的目标是阻止用户获得访问权限,除非通过 ed25519 用户身份密钥。如何?

*实际运行:OpenSSH_8.1p1、OpenSSL 1.1.1d

2个回答

根据https://unix.stackexchange.com/questions/549610/limit-sshd-to-use-only-ssh-ed25519-keys-to-authenticate

问题:

我正在尝试在 ubuntu 18.04 上配置我的 sshd 以仅接受 ed25519 密钥进行身份验证,此时服务器接受 ssh-rsa 和 ssh-ed25519。有什么想法可以实现吗?谢谢!

回答:

PubkeyAcceptedKeyTypes ssh-ed25519-cert-v01@openssh.com,ssh-ed25519 为我工作。

这对我也有用。我编辑了 /etc/ssh/sshd_config 并添加了这个设置:

PubkeyAcceptedKeyTypes ssh-ed25519-cert-v01@openssh.com,ssh-ed25519
  1. OpenSSH的确实具有一个内置的功能做你的描述(像客户端,它可以限制主机PUBKEY算法) -我没有去通过手册页和我不知道_how_I错过了-但是,也可以使用它构建AuthorizedKeysCommand-- 只需 grep 或 sed 从(通常的)文件中删除您不想要的键。FWIW 适用于低于 6.8 的版本(2015-03 发布),这在某些情况下可能很重要,但希望不会经常出现。

  2. 然而,这并没有什么,ZILCH,NADA 来完成你所说的你的理由,这让我怀疑或至少希望这不是你真正的理由,而你只是让我们所有人继续。