ssh-audit
ssh-audit 是一个用于审计 SSH 服务器和客户端配置的工具。
jtesta/ssh-audit (v2.0+) 是从 arthepsy/ssh-audit (v1.x) 分叉而来的更新和维护版本,由于原项目不再活跃。
功能特点
- 支持 SSH1 和 SSH2 协议服务器;
- 分析 SSH 客户端配置;
- 获取横幅信息,识别设备或软件和操作系统,检测压缩;
- 收集密钥交换、主机密钥、加密和消息认证码算法;
- 输出算法信息(可用时间、移除/禁用、不安全/弱/遗留等);
- 输出算法建议(基于识别的软件版本增加或移除);
- 输出安全信息(相关问题、分配的 CVE 列表等);
- 基于算法信息分析 SSH 版本兼容性;
- 来自 OpenSSH、Dropbear SSH 和 libssh 的历史信息;
- 策略扫描以确保符合加固/标准配置;
- 可在 Linux 和 Windows 上运行;
- 支持 Python 3.8 - 3.12;
- 无依赖
使用方法
用法: ssh-audit.py [选项] <主机>
-h, --help 打印帮助信息
-1, --ssh1 仅强制使用 ssh 版本 1
-2, --ssh2 仅强制使用 ssh 版本 2
-4, --ipv4 启用 IPv4 (优先顺序)
-6, --ipv6 启用 IPv6 (优先顺序)
-b, --batch 批处理输出
-c, --client-audit 在端口 2222 上启动服务器以审计客户端
软件配置 (使用 -p 更改端口;
使用 -t 更改超时)
--conn-rate-test=N[:max_rate] 执行连接速率测试(用于收集与
DHEat 漏洞相关的敏感性指标)。
使用 N 个并发套接字进行测试,
可选择设置每秒最大连接速率。
-d, --debug 启用调试输出。
--dheat=N[:kex[:e_len]] 使用 N 个并发套接字持续对目标执行
DHEat DoS 攻击(CVE-2002-20001)。
可以选择指定特定的密钥交换算法,
而不是自动选择。此外,可以选择
发送给服务器的伪 e 值的较小长度
以提高攻击效率(如 4)。
-g, --gex-test=<x[,y,...]> dh gex 模数大小测试
<min1:pref1:max1[,min2:pref2:max2,...]>
<x-y[:step]>
-j, --json JSON 输出(使用 -jj 启用缩进)
-l, --level=<level> 最低输出级别 (info|warn|fail)
-L, --list-policies 列出所有官方内置策略。与 -v 一起使用
可查看策略变更日志。
--lookup=<alg1,alg2,...> 查找算法而不连接到服务器
-m, --manual 打印手册页(仅适用于 Docker、PyPI、Snap
和 Windows 构建)
-M, --make-policy=<policy.txt> 基于目标服务器创建策略
(即:目标服务器具有其他服务器
应遵循的理想配置)
-n, --no-colors 禁用颜色
-p, --port=<port> 连接端口
-P, --policy=<"策略名称" | policy.txt> 使用指定策略运行策略测试
--skip-rate-test 在标准审计期间跳过连接速率测试
(用于安全推断 DHEat 攻击是否可行)
-t, --timeout=<secs> 连接和读取超时(秒)
(默认:5)
-T, --targets=<hosts.txt> 包含目标主机列表的文件(每行一个,
格式为 HOST[:PORT])
--threads=<threads> 扫描多个目标时使用的线程数
(-T/--targets)(默认:32)
-v, --verbose 详细输出
- 如果同时使用 IPv4 和 IPv6,可以通过使用
-46
或-64
设置优先顺序。 - 批处理标志
-b
将输出不带标题和空行的部分(隐含详细标志)。 - 详细标志
-v
将为每行添加部分类型和算法名称前缀。 - 当所有算法都被认为是安全的(对于标准审计),或策略检查通过(对于策略审计)时,将返回退出代码 0。
基本服务器审计:
ssh-audit localhost
ssh-audit 127.0.0.1
ssh-audit 127.0.0.1:222
ssh-audit ::1
ssh-audit [::1]:222
对多个服务器进行标准审计(将目标放入 servers.txt 文件中,每行一个,格式为 HOST[:PORT]
):
ssh-audit -T servers.txt
审计客户端配置(默认监听端口 2222;使用 ssh -p 2222 anything@localhost
连接):
ssh-audit -c
审计客户端配置,监听端口 4567:
ssh-audit -c -p 4567
列出所有官方内置策略(提示:将结果策略名称与 -P
/--policy
一起使用):
ssh-audit -L
对服务器运行策略审计:
ssh-audit -P ["策略名称" | path/to/server_policy.txt] 目标服务器
对客户端运行策略审计:
ssh-audit -c -P ["策略名称" | path/to/client_policy.txt]
对多个服务器运行策略审计:
ssh-audit -T servers.txt -P ["策略名称" | path/to/server_policy.txt]
基于目标服务器创建策略(可手动编辑):
ssh-audit -M new_policy.txt 目标服务器
使用 10 个并发套接字对目标运行 DHEat CPU 耗尽 DoS 攻击(CVE-2002-20001):
ssh-audit --dheat=10 目标服务器
使用 diffie-hellman-group-exchange-sha256
密钥交换算法运行 DHEat 攻击:
ssh-audit --dheat=10:diffie-hellman-group-exchange-sha256 目标服务器
使用 diffie-hellman-group-exchange-sha256
密钥交换算法和非常小但非标准的数据包长度运行 DHEat 攻击(这可能会导致相同的 CPU 耗尽,但每秒发送的字节数更少):
ssh-audit --dheat=10:diffie-hellman-group-exchange-sha256:4 目标服务器
截图
服务器标准审计示例
以下是连接到未加固的 OpenSSH v5.3 服务时标准服务器审计输出的截图:
服务器策略审计示例
以下是连接到未加固的 Ubuntu Server 20.04 机器时策略审计输出的截图(提示:使用 -L
/--list-policies
查看内置策略的名称,可与 -P
/--policy
一起使用):
应用加固指南中的步骤(见下文)后,输出变为以下内容:
客户端标准审计示例
以下是未加固的 OpenSSH v7.2 客户端连接时客户端审计输出的截图:
加固指南
服务器和客户端配置的加固指南可在此处找到:https://www.ssh-audit.com/hardening_guides.html
预构建包
Windows(见发布页面)、PyPI、Snap 和 Docker 均提供预构建包:
从 PyPI 安装:
$ pip3 install ssh-audit
安装 Snap 包:
$ snap install ssh-audit
从 Dockerhub 安装:
$ docker pull positronsecurity/ssh-audit
(然后运行:docker run -it --rm -p 2222:2222 positronsecurity/ssh-audit 10.1.1.1
)
其他平台包的状态可在下方查看(通过 Repology):
Web 前端
为方便起见,命令行工具的 Web 前端可在 https://www.ssh-audit.com/ 使用。
更新日志
v3.3.0-dev(???)
- 为 Ubuntu 24.04 LTS 服务器和客户端以及 OpenSSH 9.8 添加了内置策略。
- 为 DHEat 和连接速率测试添加了 IPv6 支持。
- 在 JSON 策略扫描结果中添加了 TCP 端口信息;感谢 Fabian Malte Kopp。
- 添加了 LANcom LCOS 服务器识别和 Ed448 密钥提取;感谢 Daniel Lenski。
- 修复了同时使用
-P
和-T
选项时的崩溃问题。 - 修复了主机密钥测试仅报告一种密钥类型最多一次的问题,尽管多个主机支持它;感谢 Daniel Lenski。
v3.2.0(2024-04-22)
- 添加了 DHEat 拒绝服务攻击的实现(见
--dheat
选项;CVE-2002-20001)。 - 扩展了 CBC 密码的过滤,以标记 Terrapin 漏洞。现在包括更多罕见的密码。
- 修复了对主机密钥上
ecdsa-sha2-nistp*
CA 签名的解析。此外,它们现在被标记为可能被后门,就像标准主机密钥一样。 - 在执行 GEX 测试时优雅地处理罕见的异常(即崩溃)。
- 内置手册页(
-m
,--manual
)现在可在 Docker、PyPI 和 Snap 构建中使用,除了 Windows 构建。 - Snap 构建现在与架构无关。
- 将 Docker 基础镜像从
python:3-slim
更改为python:3-alpine
,使镜像大小减少 59%;感谢 Daniel Thamdrup。 - 为 Amazon Linux 2023、Debian 12、OpenSSH 9.7 和 Rocky Linux 9 添加了内置策略。
- 内置策略现在包括更改日志(使用
-L -v
查看)。 - 自定义策略现在支持
allow_algorithm_subset_and_reordering
指令,允许目标通过子集和/或重新排序的主机密钥、密钥交换、密码和 MAC 列表。这允许创建基准策略,目标可以选择实施更严格的控制;部分感谢 yannik1015。 - 自定义策略现在支持
allow_larger_keys
指令,允许目标通过更大的主机密钥、CA 密钥和 Diffie-Hellman 密钥。这允许创建基准策略,目标可以选择实施更严格的控制;部分感谢 Damian Szuberski。 - 如果设置了
NO_COLOR
环境变量,则禁用彩色输出(参见 https://no-color.org/)。 - 添加了 1 种新的密钥交换算法:
gss-nistp384-sha384-*
。 - 添加了 1 种新的密码:
aes128-ocb@libassh.org
。
v3.1.0(2023-12-20)
- 添加了 Terrapin 消息前缀截断漏洞测试(CVE-2023-48795)。
- 停止支持 Python 3.7(2023 年 6 月达到 EOL)。
- 添加 Python 3.12 支持。
- 在服务器策略中,将预期的 DH 模数大小从 4096 减少到 3072,以匹配在线加固指南(注意,3072 位模数提供相当于 128 位对称安全性)。
- 在 Ubuntu 22.04 客户端策略中,将主机密钥类型
sk-ssh-ed25519@openssh.com
和ssh-ed25519
移到所有证书类型的末尾。 - 更新了 Ubuntu 服务器和客户端策略(20.04 和 22.04 版本),以考虑 Terrapin 漏洞补丁导致的密钥交换列表变化。
- 重新组织了 OpenSSH 9.2 服务器策略的可选主机密钥类型,以对应更新的 Debian 12 加固指南。
- 为 OpenSSH 9.5 和 9.6 添加了内置策略。
- 在 JSON 输出中添加了
additional_notes
字段。
v3.0.0 (2023-09-07)
- 修复了并发扫描多个主机时结果不当合并的问题;该漏洞由 Adam Russell 发现。
- 主机名解析失败不再导致对多个主机的扫描意外终止;感谢 Dani Cuesta。
- 由警告产生的算法建议现在以黄色而非红色打印;感谢 Adam Russell。
- 在 JSON 输出中添加了失败、警告和信息注释(请注意,这导致了横幅协议、"enc"和"mac"字段的重大变更);感谢 Bareq Al-Azzawi。
- Docker Makefile 现在为 amd64、arm64 和 armv7 创建多架构构建;感谢 Sebastian Cohnen。
- 修复了 GEX 测试期间的崩溃问题。
- 改进了针对 OpenSSH 服务器的 GEX 测试:当怀疑触发回退机制时,执行额外测试以获得更准确的结果。
- 当相关算法被评为良好时,所有注释的颜色将以绿色打印。
- 为 Ubuntu 22.04 LTS 客户端策略优先考虑主机密钥证书算法。
- 将所有 NIST K-、B- 和 T-曲线标记为未经证实,因为它们极少使用。
- 添加了 OpenSSH 9.4 的内置策略。
- 新增 12 种主机密钥:
ecdsa-sha2-curve25519
、ecdsa-sha2-nistb233
、ecdsa-sha2-nistb409
、ecdsa-sha2-nistk163
、ecdsa-sha2-nistk233
、ecdsa-sha2-nistk283
、ecdsa-sha2-nistk409
、ecdsa-sha2-nistp224
、ecdsa-sha2-nistp192
、ecdsa-sha2-nistt571
、ssh-dsa
、x509v3-sign-rsa-sha256
。 - 新增 15 种密钥交换:
curve448-sha512@libssh.org
、ecdh-nistp256-kyber-512r3-sha256-d00@openquantumsafe.org
、ecdh-nistp384-kyber-768r3-sha384-d00@openquantumsafe.org
、ecdh-nistp521-kyber-1024r3-sha512-d00@openquantumsafe.org
、ecdh-sha2-brainpoolp256r1@genua.de
、ecdh-sha2-brainpoolp384r1@genua.de
、ecdh-sha2-brainpoolp521r1@genua.de
、kexAlgoDH14SHA1
、kexAlgoDH1SHA1
、kexAlgoECDH256
、kexAlgoECDH384
、kexAlgoECDH521
、sm2kep-sha2-nistp256
、x25519-kyber-512r3-sha256-d00@amazon.com
、x25519-kyber512-sha512@aws.amazon.com
。 - 新增 8 种加密算法:
aes192-gcm@openssh.com
、cast128-12-cbc
、cast128-12-cfb
、cast128-12-ecb
、cast128-12-ofb
、des-cfb
、des-ecb
、des-ofb
。 - 新增 14 种 MAC:
cbcmac-3des
、cbcmac-aes
、cbcmac-blowfish
、cbcmac-des
、cbcmac-rijndael
、cbcmac-twofish
、hmac-sha256-96
、md5
、md5-8
、ripemd160
、ripemd160-8
、sha1
、sha1-8
、umac-128
。
v2.9.0 (2023-04-29)
- 由于Python 3.6在2021年底已达到生命周期结束(EOL),因此停止支持。
- 添加了Ubuntu Server和Client 22.04的加固策略。
- 移除了
sntrup761x25519-sha512@openssh.com
的实验性警告标签。 - 更新了CVE数据库;感谢Alexandre Zanni。
- 添加了
-g
和--gex-test
选项,用于详细的GEX模数大小测试;感谢Adam Russell。 - Snap包在遇到权限错误时现在会打印更友好的错误信息。
- JSON输出中的'target'字段现在始终包含端口号;感谢tomatohater1337。
- JSON输出现在包含建议和CVE数据。
- 现在可以正确处理混合主机密钥/CA密钥类型(例如:由ED25519 CA签名的RSA主机密钥等)。
- 现在会对2048位模数打印警告;部分感谢Adam Russell。
- SHA-1算法现在会导致失败。
- CBC模式加密现在是警告而不是失败。
- 通用失败/警告信息已替换为更具体的原因(例如:'使用弱加密'变为'使用已破解的RC4加密')。
- 更新了内置策略,包含缺失的主机密钥大小信息。
- 为OpenSSH 8.8、8.9、9.0、9.1、9.2和9.3添加了内置策略。
- 新增33种主机密钥:
dsa2048-sha224@libassh.org
、dsa2048-sha256@libassh.org
、dsa3072-sha256@libassh.org
、ecdsa-sha2-1.3.132.0.10-cert-v01@openssh.com
、eddsa-e382-shake256@libassh.org
、eddsa-e521-shake256@libassh.org
、null
、pgp-sign-dss
、pgp-sign-rsa
、spki-sign-dss
、spki-sign-rsa
、ssh-dss-sha224@ssh.com
、ssh-dss-sha384@ssh.com
、ssh-dss-sha512@ssh.com
、ssh-ed448-cert-v01@openssh.com
、ssh-rsa-sha224@ssh.com
、ssh-rsa-sha2-256
、ssh-rsa-sha2-512
、ssh-rsa-sha384@ssh.com
、ssh-rsa-sha512@ssh.com
、ssh-xmss-cert-v01@openssh.com
、ssh-xmss@openssh.com
、webauthn-sk-ecdsa-sha2-nistp256@openssh.com
、x509v3-ecdsa-sha2-1.3.132.0.10
、x509v3-sign-dss-sha1
、x509v3-sign-dss-sha224@ssh.com
、x509v3-sign-dss-sha256@ssh.com
、x509v3-sign-dss-sha384@ssh.com
、x509v3-sign-dss-sha512@ssh.com
、x509v3-sign-rsa-sha1
、x509v3-sign-rsa-sha224@ssh.com
、x509v3-sign-rsa-sha384@ssh.com
、x509v3-sign-rsa-sha512@ssh.com
。 - 新增46种密钥交换:
diffie-hellman-group14-sha224@ssh.com
、diffie-hellman_group17-sha512
、diffie-hellman-group-exchange-sha224@ssh.com
、diffie-hellman-group-exchange-sha384@ssh.com
、ecdh-sha2-1.2.840.10045.3.1.1
、ecdh-sha2-1.2.840.10045.3.1.7
、ecdh-sha2-1.3.132.0.1
、ecdh-sha2-1.3.132.0.16
、ecdh-sha2-1.3.132.0.26
、ecdh-sha2-1.3.132.0.27
、ecdh-sha2-1.3.132.0.33
、ecdh-sha2-1.3.132.0.34
、ecdh-sha2-1.3.132.0.35
、ecdh-sha2-1.3.132.0.36
、ecdh-sha2-1.3.132.0.37
、ecdh-sha2-1.3.132.0.38
、ecdh-sha2-4MHB+NBt3AlaSRQ7MnB4cg==
、ecdh-sha2-5pPrSUQtIaTjUSt5VZNBjg==
、ecdh-sha2-9UzNcgwTlEnSCECZa7V1mw==
、ecdh-sha2-D3FefCjYoJ/kfXgAyLddYA==
、ecdh-sha2-h/SsxnLCtRBh7I9ATyeB3A==
、ecdh-sha2-m/FtSAmrV4j/Wy6RVUaK7A==
、ecdh-sha2-mNVwCXAoS1HGmHpLvBC94w==
、ecdh-sha2-qCbG5Cn/jjsZ7nBeR7EnOA==
、ecdh-sha2-qcFQaMAMGhTziMT0z+Tuzw==
、ecdh-sha2-VqBg4QRPjxx1EXZdV0GdWQ==
、ecdh-sha2-wiRIU8TKjMZ418sMqlqtvQ==
、ecdh-sha2-zD/b3hu/71952ArpUG4OjQ==
、ecmqv-sha2
、gss-13.3.132.0.10-sha256-*
、gss-curve25519-sha256-*
、gss-curve448-sha512-*
、gss-gex-sha1-*
、gss-gex-sha256-*
、gss-group14-sha1-*
、gss-group14-sha256-*
、gss-group15-sha512-*
、gss-group16-sha512-*
、gss-group17-sha512-*
、gss-group18-sha512-*
、gss-group1-sha1-*
、gss-nistp256-sha256-*
、gss-nistp384-sha256-*
、gss-nistp521-sha512-*
、m383-sha384@libassh.org
、m511-sha512@libassh.org
。 - 新增28种加密算法:
3des-cfb
、3des-ecb
、3des-ofb
、blowfish-cfb
、blowfish-ecb
、blowfish-ofb
、camellia128-cbc@openssh.org
、camellia128-ctr@openssh.org
、camellia192-cbc@openssh.org
、camellia192-ctr@openssh.org
、camellia256-cbc@openssh.org
、camellia256-ctr@openssh.org
、cast128-cfb
、cast128-ecb
、cast128-ofb
、cast128-12-cbc@ssh.com
、idea-cfb
、idea-ecb
、idea-ofb
、rijndael-cbc@ssh.com
、seed-ctr@ssh.com
、serpent128-gcm@libassh.org
、serpent256-gcm@libassh.org
、twofish128-gcm@libassh.org
、twofish256-gcm@libassh.org
、twofish-cfb
、twofish-ecb
、twofish-ofb
- 新增5种MAC算法:
hmac-sha1-96@openssh.com
、hmac-sha224@ssh.com
、hmac-sha256-2@ssh.com
、hmac-sha384@ssh.com
、hmac-whirlpool
。
v2.5.0(2021-08-26)
- 修复了运行主机密钥测试时崩溃的问题。
- 更优雅地处理服务器连接失败。
- 使用
-jj
时现在会打印带缩进的JSON(对调试有用)。 - 在详细输出中添加了MD5指纹。
- 添加了
-d
/--debug
选项以获取调试输出;感谢Adam Russell。 - 更新了JSON输出,包含MD5指纹。注意,这导致了'fingerprints'字典格式的重大变更。
- 更新了OpenSSH 8.1(及更早版本)策略,包含
rsa-sha2-512
和rsa-sha2-256
。 - 添加了OpenSSH v8.6和v8.7策略。
- 新增3种密钥交换:
gss-gex-sha1-eipGX3TCiQSrx573bT1o1Q==
、gss-group1-sha1-eipGX3TCiQSrx573bT1o1Q==
和gss-group14-sha1-eipGX3TCiQSrx573bT1o1Q==
。 - 新增3种MAC算法:
hmac-ripemd160-96
、AEAD_AES_128_GCM
和AEAD_AES_256_GCM
。
v2.4.0(2021-02-23)
- 添加了多线程扫描支持。
- 添加了内置Windows手册页(见
-m
/--manual
);感谢Adam Russell。 - 为OpenSSH用户枚举(CVE-2018-15473)添加了版本检查。
- 为基于SHA-1的主机密钥类型添加了弃用说明。
- 为SSHv1添加了额外警告。
- 添加了内置的OpenSSH v8.5加固策略。
- 将基于SHA-1的主机密钥类型的警告升级为失败。
- 修复了在主机密钥测试期间收到意外响应时崩溃的问题。
- 修复了对旧版思科设备进行主机密钥测试和gex测试时挂起的问题。
- 修复了扫描多个目标时,一个目标返回错误导致不正确终止的问题。
- 放弃对Python 3.5的支持(该版本于2020年9月达到生命周期结束)。
- 新增1种密钥交换:
sntrup761x25519-sha512@openssh.com
。
v2.3.1(2020-10-28)
- 现在可以解析
rsa-sha2-256-cert-v01@openssh.com
和rsa-sha2-512-cert-v01@openssh.com
主机密钥类型的公钥大小。 - 由于使用SHA-1哈希,将
ssh-rsa-cert-v01@openssh.com
标记为失败。 - 修复了建议输出中不当抑制某些算法的错误。
- 内置策略现在包括CA密钥要求(如果使用证书)。
- 查找功能(
--lookup
)现在执行不区分大小写的相似算法查找;感谢Adam Russell。 - 将预制策略从外部文件迁移到内部数据库。
- 将单个3,500行脚本拆分为多个文件(按类)。
- 添加了setup.py支持;感谢Ganden Schaffner。
- 新增1种加密算法:
des-cbc@ssh.com
。
v2.3.0(2020-09-27)
- 添加了新的策略审计功能,用于测试对加固指南/标准配置的遵守情况(参见
-L
/--list-policies
、-M
/--make-policy
和-P
/--policy
)。有关深入教程,请参阅https://www.positronsecurity.com/blog/2020-09-27-ssh-policy-configuration-checks-with-ssh-audit/。 - 创建了新的man页面(见
ssh-audit.1
文件)。 - 将1024位模数从警告升级为失败。
- 进行了多项Python 2代码清理、测试框架改进、pylint和flake8修复,以及mypy类型注释;感谢Jürgen Gmach。
- 添加了在内部数据库中查找算法的功能(见
--lookup
);感谢Adam Russell。 - 抑制对令牌主机密钥类型的建议。
- 添加了对PuTTY v0.73中使用后释放漏洞的检查。
- 新增11种主机密钥类型:
ssh-rsa1
、ssh-dss-sha256@ssh.com
、ssh-gost2001
、ssh-gost2012-256
、ssh-gost2012-512
、spki-sign-rsa
、ssh-ed448
、x509v3-ecdsa-sha2-nistp256
、x509v3-ecdsa-sha2-nistp384
、x509v3-ecdsa-sha2-nistp521
、x509v3-rsa2048-sha256
。 - 新增8种密钥交换:
diffie-hellman-group1-sha256
、kexAlgoCurve25519SHA256
、Curve25519SHA256
、gss-group14-sha256-
、gss-group15-sha512-
、gss-group16-sha512-
、gss-nistp256-sha256-
、gss-curve25519-sha256-
。 - 新增5种加密算法:
blowfish
、AEAD_AES_128_GCM
、AEAD_AES_256_GCM
、crypticore128@ssh.com
、seed-cbc@ssh.com
。 - 新增3种MAC算法:
chacha20-poly1305@openssh.com
、hmac-sha3-224
、crypticore-mac@ssh.com
。
v2.2.0(2020-03-11)
- 由于SHA-1实际碰撞,将主机密钥类型
ssh-rsa
标记为弱。 - 添加了Windows构建。
- 新增10种主机密钥类型:
ecdsa-sha2-1.3.132.0.10
、x509v3-sign-dss
、x509v3-sign-rsa
、x509v3-sign-rsa-sha256@ssh.com
、x509v3-ssh-dss
、x509v3-ssh-rsa
、sk-ecdsa-sha2-nistp256-cert-v01@openssh.com
、sk-ecdsa-sha2-nistp256@openssh.com
、sk-ssh-ed25519-cert-v01@openssh.com
和sk-ssh-ed25519@openssh.com
。 - 新增18种密钥交换:
diffie-hellman-group14-sha256@ssh.com
、diffie-hellman-group15-sha256@ssh.com
、diffie-hellman-group15-sha384@ssh.com
、diffie-hellman-group16-sha384@ssh.com
、diffie-hellman-group16-sha512@ssh.com
、diffie-hellman-group18-sha512@ssh.com
、ecdh-sha2-curve25519
、ecdh-sha2-nistb233
、ecdh-sha2-nistb409
、ecdh-sha2-nistk163
、ecdh-sha2-nistk233
、ecdh-sha2-nistk283
、ecdh-sha2-nistk409
、ecdh-sha2-nistp192
、ecdh-sha2-nistp224
、ecdh-sha2-nistt571
、gss-gex-sha1-
和gss-group1-sha1-
。 - 新增9种加密算法:
camellia128-cbc
、camellia128-ctr
、camellia192-cbc
、camellia192-ctr
、camellia256-cbc
、camellia256-ctr
、aes128-gcm
、aes256-gcm
和chacha20-poly1305
。 - 新增2种MAC算法:
aes128-gcm
和aes256-gcm
。
v2.1.1(2019-11-26)
- 新增2种主机密钥类型:
rsa-sha2-256-cert-v01@openssh.com
、rsa-sha2-512-cert-v01@openssh.com
。 - 新增2种加密算法:
des
、3des
。 - 新增3个PuTTY漏洞。
- 在客户端测试期间,现在在输出中列出客户端IP地址。
v2.1.0 (2019年11月14日)
- 新增客户端软件审计功能(见
-c
/--client-audit
选项)。 - 新增 JSON 输出选项(见
-j
/--json
选项;感谢 Andreas Jaggi)。 - 修复扫描 Solaris Sun_SSH 时的崩溃问题。
- 新增9种密钥交换算法:
gss-group1-sha1-toWM5Slw5Ew8Mqkay+al2g==
、gss-gex-sha1-toWM5Slw5Ew8Mqkay+al2g==
、gss-group14-sha1-
、gss-group14-sha1-toWM5Slw5Ew8Mqkay+al2g==
、gss-group14-sha256-toWM5Slw5Ew8Mqkay+al2g==
、gss-group15-sha512-toWM5Slw5Ew8Mqkay+al2g==
、diffie-hellman-group15-sha256
、ecdh-sha2-1.3.132.0.10
、curve448-sha512
。 - 新增1种主机密钥类型:
ecdsa-sha2-1.3.132.0.10
。 - 新增4种加密算法:
idea-cbc
、serpent128-cbc
、serpent192-cbc
、serpent256-cbc
。 - 新增6种MAC算法:
hmac-sha2-256-96-etm@openssh.com
、hmac-sha2-512-96-etm@openssh.com
、hmac-ripemd
、hmac-sha256-96@ssh.com
、umac-32@openssh.com
、umac-96@openssh.com
。
v2.0.0 (2019年8月29日)
- 从 https://github.com/arthepsy/ssh-audit 分叉(原项目开发停滞,开发者失联)。
- 新增 RSA 主机密钥长度测试。
- 新增 RSA 证书密钥长度测试。
- 新增 Diffie-Hellman 模数大小测试。
- 现在输出 RSA 和 ED25519 的主机密钥指纹。
- 新增5种密钥交换算法:
sntrup4591761x25519-sha512@tinyssh.org
、diffie-hellman-group-exchange-sha256@ssh.com
、diffie-hellman-group-exchange-sha512@ssh.com
、diffie-hellman-group16-sha256
、diffie-hellman-group17-sha512
。 - 新增3种加密算法:
des-cbc-ssh1
、blowfish-ctr
、twofish-ctr
。 - 新增10种MAC算法:
hmac-sha2-56
、hmac-sha2-224
、hmac-sha2-384
、hmac-sha3-256
、hmac-sha3-384
、hmac-sha3-512
、hmac-sha256
、hmac-sha256@ssh.com
、hmac-sha512
、hmac-512@ssh.com
。 - 新增命令行参数(
-t
/--timeout
)用于设置连接和读取超时。 - 更新 libssh 和 Dropbear 的 CVE 信息。
v1.7.0 (2016年10月26日)
- 实现选项允许指定 IPv4/IPv6 的使用和优先顺序
- 实现选项指定远程端口(保留旧行为以兼容)
- 通过可选的 colorama 依赖为 Microsoft Windows 添加颜色支持
- 修复编码和解码问题,添加测试,避免编码错误导致崩溃
- 使用 mypy-lang 进行静态类型检查并验证所有代码
v1.6.0 (2016年10月14日)
- 实现算法推荐部分(基于识别的软件)
- 实现完整的 libssh 支持(版本历史、算法、安全性等)
- 修复 SSH-1.99 banner 识别和版本比较功能
- 不输出空算法(发生在配置错误的服务器上)
- 使 Python 3.x 版本的输出保持一致
- 添加大量测试(配置、banner、软件、SSH1/SSH2、输出等)
- 使用 Travis CI 测试多个 Python 版本(2.6-3.5、pypy、pypy3)
v1.5.0 (2016年9月20日)
- 创建安全部分以包含相关安全信息
- 匹配并输出 Dropbear SSH 的已分配 CVE 列表和安全问题
- 实现完整的 SSH1 支持,包括指纹信息
- 在协议不匹配时自动回退到 SSH1
- 添加新选项强制使用 SSH1 或 SSH2(默认两者都允许)
- 解析 banner 信息并转换为特定软件和操作系统版本
- 批处理模式下不使用填充
- 多项修复(Cisco sshd、罕见的挂起、错误处理等)
v1.0.20160902
- 实现批处理输出选项
- 实现最小输出级别选项
- 修复与 Python 2.6 的兼容性
v1.0.20160812
- 实现 SSH 版本兼容性功能
- 修复错误的 MAC 算法警告
- 修复 Dropbear SSH 版本拼写错误
- 解析预 banner 头
- 改进错误处理
v1.0.20160803
- 使用 OpenSSH 7.3 banner
- 添加新的密钥交换算法
v1.0.20160207
- 使用 OpenSSH 7.2 banner
- 为 OpenSSH 7.2 添加额外警告
- 修复 OpenSSH 7.0 失败消息
- 添加来自 OpenSSH 6.7 的 rijndael-cbc 失败消息
v1.0.20160105
- 多个额外警告
- 支持 none 算法
- 改进压缩处理
- 确保读取足够数据(修复部分 Linux SSH)
v1.0.20151230
- Dropbear SSH 支持
v1.0.20151223
- 初始版本