SSH:如何禁用弱密码?


47

我组织的安全团队告诉我们,禁用弱密码,因为它们会发出弱密钥。

  arcfour
  arcfour128
  arcfour256

但是我尝试在ssh_config和sshd_config文件中寻找这些密码,但发现它们已注释。

 grep arcfour *
ssh_config:#   Ciphers aes128-ctr,aes192-ctr,aes256-ctr,arcfour256,arcfour128,aes128-cbc,3des-cbc

我应该在哪里检查禁用SSH的这些密码?


对于SSH服务器,它将位于/etc/ssh/sshd_config;对于SSH客户端,它将位于/etc/ssh/ssh_config。您要查找Cipher每个行,例如刚刚Cipher aes256-ctr指定的行。然后通过/etc/init.d/sshd restart或通过等效的systemd命令重新启动SSH 。
罗恩

1
sshd_config如果您真的很在乎SSH安全性,则希望对其中的所有参数有所了解,否则它可能全都是安全性。
罗恩

@ron第二条评论很有趣,您可以举例说明您的意图吗?
杰罗姆'18

ciphers列表只是正确实施SSH的众多设置之一...协议,PermitRootLogin,AuthorizedKeysFile,PermitEmptyPasswords,IgnoreRhosts,PermitTunnel等。您可以依赖它们在Linux发行版中实现的默认设置,但是Ignornance is bliss only up until you have a problem
ron 18'Dec

Answers:


40

如果没有ssh_config使用Ciphers关键字设置的显式密码列表,则根据man 5 ssh_config(客户端)和man 5 sshd_config(服务器端),默认值为:

            aes128-ctr,aes192-ctr,aes256-ctr,arcfour256,arcfour128,
            aes128-gcm@openssh.com,aes256-gcm@openssh.com,
            chacha20-poly1305@openssh.com,
            aes128-cbc,3des-cbc,blowfish-cbc,cast128-cbc,aes192-cbc,
            aes256-cbc,arcfour

注意arcfour密码的存在。因此,您可能必须为显式设置一个更严格的值Ciphers

ssh -Q cipher客户会告诉您您的客户可以支持哪些方案。请注意,此列表不受中指定的密码列表的影响ssh_config。从中删除密码ssh_config不会从中将其删除ssh -Q cipher。此外,使用ssh带有该-c选项的显式指定密码将覆盖您设置的受限密码列表,ssh_config并可能允许您使用弱密码。此功能使您可以使用ssh客户端与不支持较新的更强密码的过时SSH服务器进行通信。

nmap --script ssh2-enum-algos -sV -p <port> <host> 会告诉您服务器支持哪些方案。


嗨,我提到了ssh_config中的特定密码并重新启动了ssh服务,但是当我执行ssh -Q cipher <hostname>时,无论配置如何,我仍然会得到所有较早的密码。
rɑːdʒɑ

1
抱歉,ssh_config是客户端配置,服务器端配置是sshd_config,请尝试这样做。(也称为Ciphers那里。)
乌尔里希·施瓦茨

是的,我知道,但是当我使用grep获取密码时,我在ssh_config中找到了它们,所以我在那里做了更改。由于生产服务器,我没有做任何事情我不知道
rɑːdʒɑ

请注意,各发行版之间的默认值可能有所不同。
乔纳斯·谢弗(JonasSchäfer)

似乎ssh -Q在旧版本中没有。(例如CentOS 6的openssh v5.3p1)
Tomofumi

30

要在SSH服务器上禁用RC4并使用安全密码,请在 /etc/ssh/sshd_config

ciphers chacha20-poly1305@openssh.com,aes256-gcm@openssh.com,aes128-gcm@openssh.com,aes256-ctr,aes192-ctr,aes128-ctr

或者,如果您不想指定密码,而只想剥离不安全的密码,请改为在命令行上(在sudo模式下)运行此密码:

sshd -T | grep ciphers | sed -e "s/\(3des-cbc\|aes128-cbc\|aes192-cbc\|aes256-cbc\|arcfour\|arcfour128\|arcfour256\|blowfish-cbc\|cast128-cbc\|rijndael-cbc@lysator.liu.se\)\,\?//g" >> /etc/ssh/sshd_config

您可以通过以下方法检查服务器当前使用的密码:

sudo sshd -T | grep ciphers | perl -pe 's/,/\n/g' | sort -u

确保您的ssh客户端可以使用这些密码,然后运行

ssh -Q cipher | sort -u

查看列表。

您还可以指示SSH客户端仅与远程服务器协商安全密码。在/etc/ssh/ssh_config集:

Host *
    ciphers chacha20-poly1305@openssh.com,aes256-gcm@openssh.com,aes128-gcm@openssh.com,aes256-ctr,aes192-ctr,aes128-ctr

上面的摘录来自此处
要测试服务器的设置,可以使用ssh-audit


20

明确指定密码列表的问题是,必须在新密码出来后手动添加它们。取而代之的是,只需列出要删除的密码,并在列表(而非每个单独的密码)前添加'-'字符。因此,在这种情况下,密码行应显示为:

Ciphers -arcfour*

或者,如果您喜欢:

Ciphers -arcfour,arcfour128,arcfour256

Ciphers选项的sshd_config手册页(自OpenSSH 7.5起,于2017-03-20发行):

如果指定的值以'+'字符开头,则指定的密码将附加到默认密码集,而不是替换它们。如果指定的值以“-”字符开头,则指定的密码(包括通配符)将从默认集中删除,而不是替换它们。

这也适用于KexAlgorithmsMACs选项。


2

启用/禁用密码需要在文件/ etc / ssh / sshd_config中添加/删除它。编辑此文件后,必须重新加载服务

systemctl reload sshd
/etc/init.d/sshd reload

然后,从客户端运行此命令将告诉您哪些方案支持

ssh -Q cipher

要检查服务器上是否启用了arcfour密码,请运行以下命令

ssh localhost -c arcfour

要检查服务器上是否启用了arcfour128密码,请运行以下命令

ssh localhost -c arcfour128

上述答案中缺少此步骤
Saras Arya

1

如何禁用弱ssh密码,在Fedora 29上进行了100%的工作测试。问题:Nessus报告我的samba4服务器使用的不是强密码aes256-cbc和aes128-cbc。所以我把这些线放进去/etc/ssh/sshd_config

MACs hmac-sha2-512,hmac-sha2-256
Ciphers aes256-ctr,aes192-ctr,aes128-ctr
KexAlgorithms diffie-hellman-group14-sha256,diffie-hellman-group16-sha512,diffie-hellman-group18-sha512,diffie-hellman-group-exchange-sha256,ecdh-sha2-nistp256,ecdh-sha2-nistp384,ecdh-sha2-nistp521,curve25519-sha256,curve25519-sha256@libssh.org

Etvoilà!..它仍然使用cbc密码,因为此命令有效:(

ssh -c aes256-cbc samba4

所以我检查了有用的systemd,发现sshd服务正在使用另一个文件作为密码

/etc/crypto-policies/back-ends/opensshserver.config

备份文件以确保安全

cp /etc/crypto-policies/back-ends/opensshserver.config     /etc/crypto-policies/back-ends/opensshserver.config.old

编辑它,然后删除cbc密码。重新启动服务

systemctl restart sshd

最后测试,工作正常..cbc禁用。

ssh -c aes256-cbc samba4
Unable to negotiate with 192.168.0.48 port 22: no matching cipher found. Their offer: aes256-gcm@openssh.com,chacha20-poly1305@openssh.com,aes256-ctr,aes128-gcm@openssh.com,aes128-ctr
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.