本文概述
如今, 最常用的SSH服务器是OpenSSH和Dropbear。尽管OpenSSH通常仅在计算机和服务器中使用, 但Dropbear是路由器和其他网络设备的SSH服务器, 这些服务器需要很少的资源。大多数此类SSH服务器通常都配置为兼容, 但并不关心安全性, 因此, 今天, 我们将向你解释如何使用Ubuntu 18.04中的SSH-Audit工具审核SSH服务器。
1.下载ssh-audit
SSH-Audit是用Python编写的开源CLI工具, 可让你轻松地通过不同的准则来验证目标服务器的SSH协议中的漏洞:
- SSH1和SSH2协议服务器支持;
- 抓住标语, 识别设备或软件和操作系统, 检测压缩;
- 收集密钥交换, 主机密钥, 加密和消息认证代码算法;
- 输出算法信息(此后可用, 已删除/禁用, 不安全/弱/旧版等);
- 输出算法建议(根据公认的软件版本追加或删除);
- 输出安全信息(相关问题, 分配的CVE列表等);
- 根据算法信息分析SSH版本兼容性;
- 来自OpenSSH, Dropbear SSH和libssh的历史信息;
- 无依赖性, 与Python 2.6 +, Python 3.x和PyPy兼容;
ssh-audit的主要功能是, 它能够审核SSH服务器的每个部分, 它将能够检测到登录标语, 它将检测我们是否使用了像ssh1这样的完全不安全的协议, 即使我们正在使用zlib库进行压缩。在通信加密级别, 它可以验证密钥交换算法, 主机的公共密钥, 已经建立通信时的对称加密以及信息验证消息。分析完每个参数后, 你将获得一份完整的报告, 说明该选项何时可用, 是否已取消或禁用, 不安全, 较弱或是否安全。
要下载最新版本的ssh-audit, 你可以使用git克隆Github上官方仓库的源代码:
git clone https://github.com/arthepsy/ssh-audit.git
克隆后, 将目录更改为克隆的目录:
cd ssh-audit
并继续本教程的其余部分。有关ssh-audit的更多信息, 请访问Github上的官方存储库。
2.运行测试
运行脚本和测试服务器的最快方法是直接使用python运行它, 并提供服务器的域或IP作为位置参数:
python ssh-audit.py domain.com
有关更详细的CLI用法, 可以使用以下选项为该工具指定一些参数:
- -1, –ssh1:仅强制ssh版本1
- -2, -ssh2:仅强制使用ssh版本2
- -4, -ipv4:启用IPv4(优先级)
- -6, –ipv6:启用IPv6(优先级)
- -p, –port = <端口>:要连接的端口
- -b, –batch:批量输出
- -n, –no-colors:禁用颜色
- -v, –verbose:详细输出
- -l, –level = <级别>:最小输出级别(信息|警告|失败)
例如, 对于SSH Ubuntu服务器, 终端上也应生成类似的输出:
# general
(gen) banner: SSH-2.0-OpenSSH_7.2p2 Ubuntu-4ubuntu2.8
(gen) software: OpenSSH 7.2p2
(gen) compatibility: OpenSSH 7.2+, Dropbear SSH 2013.62+
(gen) compression: enabled (zlib@openssh.com)
# key exchange algorithms
(kex) curve25519-sha256@libssh.org -- [info] available since OpenSSH 6.5, Dropbear SSH 2013.62
(kex) ecdh-sha2-nistp256 -- [fail] using weak elliptic curves
`- [info] available since OpenSSH 5.7, Dropbear SSH 2013.62
(kex) ecdh-sha2-nistp384 -- [fail] using weak elliptic curves
`- [info] available since OpenSSH 5.7, Dropbear SSH 2013.62
(kex) ecdh-sha2-nistp521 -- [fail] using weak elliptic curves
`- [info] available since OpenSSH 5.7, Dropbear SSH 2013.62
(kex) diffie-hellman-group-exchange-sha256 -- [warn] using custom size modulus (possibly weak)
`- [info] available since OpenSSH 4.4
(kex) diffie-hellman-group14-sha1 -- [warn] using weak hashing algorithm
`- [info] available since OpenSSH 3.9, Dropbear SSH 0.53
# host-key algorithms
(key) ssh-rsa -- [info] available since OpenSSH 2.5.0, Dropbear SSH 0.28
(key) rsa-sha2-512 -- [info] available since OpenSSH 7.2
(key) rsa-sha2-256 -- [info] available since OpenSSH 7.2
(key) ecdsa-sha2-nistp256 -- [fail] using weak elliptic curves
`- [warn] using weak random number generator could reveal the key
`- [info] available since OpenSSH 5.7, Dropbear SSH 2013.62
(key) ssh-ed25519 -- [info] available since OpenSSH 6.5
# encryption algorithms (ciphers)
(enc) chacha20-poly1305@openssh.com -- [info] available since OpenSSH 6.5
`- [info] default cipher since OpenSSH 6.9.
(enc) aes128-ctr -- [info] available since OpenSSH 3.7, Dropbear SSH 0.52
(enc) aes192-ctr -- [info] available since OpenSSH 3.7
(enc) aes256-ctr -- [info] available since OpenSSH 3.7, Dropbear SSH 0.52
(enc) aes128-gcm@openssh.com -- [info] available since OpenSSH 6.2
(enc) aes256-gcm@openssh.com -- [info] available since OpenSSH 6.2
# message authentication code algorithms
(mac) umac-64-etm@openssh.com -- [warn] using small 64-bit tag size
`- [info] available since OpenSSH 6.2
(mac) umac-128-etm@openssh.com -- [info] available since OpenSSH 6.2
(mac) hmac-sha2-256-etm@openssh.com -- [info] available since OpenSSH 6.2
(mac) hmac-sha2-512-etm@openssh.com -- [info] available since OpenSSH 6.2
(mac) hmac-sha1-etm@openssh.com -- [warn] using weak hashing algorithm
`- [info] available since OpenSSH 6.2
(mac) umac-64@openssh.com -- [warn] using encrypt-and-MAC mode
`- [warn] using small 64-bit tag size
`- [info] available since OpenSSH 4.7
(mac) umac-128@openssh.com -- [warn] using encrypt-and-MAC mode
`- [info] available since OpenSSH 6.2
(mac) hmac-sha2-256 -- [warn] using encrypt-and-MAC mode
`- [info] available since OpenSSH 5.9, Dropbear SSH 2013.56
(mac) hmac-sha2-512 -- [warn] using encrypt-and-MAC mode
`- [info] available since OpenSSH 5.9, Dropbear SSH 2013.56
(mac) hmac-sha1 -- [warn] using encrypt-and-MAC mode
`- [warn] using weak hashing algorithm
`- [info] available since OpenSSH 2.1.0, Dropbear SSH 0.28
# algorithm recommendations (for OpenSSH 7.2)
(rec) -ecdh-sha2-nistp521 -- kex algorithm to remove
(rec) -ecdh-sha2-nistp384 -- kex algorithm to remove
(rec) -ecdh-sha2-nistp256 -- kex algorithm to remove
(rec) -diffie-hellman-group14-sha1 -- kex algorithm to remove
(rec) -ecdsa-sha2-nistp256 -- key algorithm to remove
(rec) -hmac-sha2-512 -- mac algorithm to remove
(rec) -umac-128@openssh.com -- mac algorithm to remove
(rec) -hmac-sha2-256 -- mac algorithm to remove
(rec) -umac-64@openssh.com -- mac algorithm to remove
(rec) -hmac-sha1 -- mac algorithm to remove
(rec) -hmac-sha1-etm@openssh.com -- mac algorithm to remove
(rec) -umac-64-etm@openssh.com -- mac algorithm to remove
例如, 在我们的交换算法中, KEX ecdh-sha2-nistp256引发有关弱椭圆曲线的错误。 SSH开发人员社区在此实现方式上存在分歧, 因为通常实施椭圆曲线Diffie-Hellman(ECDH), 基本上是因为它们比使用大型DFC-质询与传统Diffie-Hellman(DH)时要小且快, 因此该曲线可能不会在处理某些应用程序的”最高机密”信息时, 它具有所需的有用性和强大性。 SSH开发社区对此有不同的看法, 并且确实存在许多实现。
与每个审核工具一样, 你应始终确保删除某些功能仅仅是因为该工具告诉你可能不是最明智的选择, 因为在这种情况下, 如果实现了任何传统的ECDH密钥交换方法, 则此方法应当然要实施。
审核愉快!
评论前必须登录!
注册