SSH 密码、MAC 和密钥交换(及其渗透测试)

信息安全 渗透测试 SSH 硬化 密码选择
2021-08-23 00:15:12

在工作中,我们一直在尝试将面向外部的服务从包容性政策(我们试图接受尽可能多的人)转移到更加注重安全的设置。

第一步是对我们的一些核心 Web 应用程序进行渗透测试,其中的重点往往是应用程序代码中的弱点,但 SSL/TLS 套件和密码已经说了很多。在这些测试结果的背后,我已经设法至少让足够多的人对在 Qualys 测试中获得 A-、A 和 A+“等级”感兴趣(管理就像可量化的等级——谁知道?!)

但是,我们的一些软件的另一个关键组件是通过 SFTP(即通过 SSH)进行批量文件上传/下载。我一直尝试在 SFTP 服务器上应用我可以确定的最佳实践,因此我们经常使用:

  • 仅密钥身份验证
  • 将重复的身份验证失败列入黑名单
  • 2,048 位密钥
  • 禁用 shell、exec 和端口转发

但我必须承认,我对加密实现知之甚少,因此几乎总是使用默认设置。但是,我认为,如果渗透测试人员标记 RC4、3DES、MD5 等。在基于 TLS 的设置中,他们还会在 SFTP 服务器中标记这些算法(是否包含在他们的范围内)。

我主要在 Windows 堆栈上工作,多年来我们一直使用 VanDyke VShell 作为我们选择的 SFTP 服务器。默认情况下,它启用所有密码和 MAC 选项(“无”除外)和所有密钥交换选项,“Kerberos”和“Kerberos(组交换)”除外。

这留下了以下算法,由 VShell 应用程序命名:

  • 密钥交换: diffie-hellman-group14、diffie-hellman、diffie-hellman-group
  • 密码: AES-256-CTR、AES-192-CTR、AES-128-CTR、AES-256、AES-192、AES-128、Twofish、Blowfish、3DES、RC4
  • MAC: SHA1、SHA1-96、MD5、MD5-96、UMAC-64 (以及更新版本) SHA2-512、SHA2-256

至于问题:

  1. 我在哪里可以确定哪些现在被认为太弱而无法使用?
  2. 我如何才能最好地确定禁用其中任何一项是否会对我的最终用户产生不利影响?
  3. 是否有任何类似 Qualys 的测试可以用来定期评估这些服务器,最好有令人信服的证据来击败管理层提交?
1个回答
  1. 不幸的是,标准机构并没有完全同意 SSL/TLS 或 SSH 安全性的单一密码列表。以下文档及其内部参考资料将有很大帮助,我认为总的来说 owasp.org 将是一个了解弱密码的好地方,但不幸的是,目前没有一个通用列表。

    https://www.owasp.org/index.php/Transport_Layer_Protection_Cheat_Sheet

    对于 SSH 加固,具体看以下内容:

    https://stribika.github.io/2015/01/04/secure-secure-shell.html

    最终,映射支持的密码的最新列表以及为什么每个人都被贬值的原因将对每个人都有用,但我还没有看到这样的努力。

  2. 了解您的最终用户正在使用什么的最佳方法是监控您网站的实际流量。您可以在您的 SFTP 服务器或网络服务器上启用密码套件日志记录,也可以为此使用 WireShark 等协议分析器,特别是 tshark。

    https://www.wireshark.org/

    通常,您会发现限制密码套件实际上很容易,因为过去 5 到 10 年的大多数客户都支持广泛的密码。

  3. 为了测试这一点,我强烈建议使用 nmap ssl enumerate ciphers .NSE 脚本或 SSH 使用 SSH2 枚举算法脚本:

    https://nmap.org/nsedoc/scripts/ssl-enum-ciphers.html

    测试网站的命令类似于以下内容:

    nmap --script ssl-enum-ciphers -p 443 www.website.org
    

    其他协议也有类似的脚本,对于 SSH,以下将起作用

    https://nmap.org/nsedoc/scripts/ssh2-enum-algos.html

    此信息可以从ssh -vvv选项中的 debug2 信息中收集,但nmap更容易自动化。

    对于外部测试网站,有类似以下的网站会告诉您有关基于 HTTPS 的服务上已折旧的 SSL/TLS 密码的信息。

    https://www.ssllabs.com/ssltest/

目前没有“Qualys like test website that match their SSL test website for SSH”获取SSH类似信息的最接近方法是使用ssh -vvv选项或使用nmap NSE脚本ssh2-enum-algos.html。还有其他解决方案,但 nmap 可能是最容易实现的,而且它非常可编写脚本,因此您可以让它轻松测试大量 IP。