扫描 SSH 以获取提供的身份验证选项

扫描 SSH 以获取提供的身份验证选项

我想扫描我们的网络(IPv4 和 IPv6)对于 ssh 并找到提供的身份验证选项。

最终,我希望可解析列表[1] 个主机,包含以下信息:

  • IP [IPv4|IPv6]地址
  • 可选:扫描时的 FQDN
  • 港口
  • 提供公钥认证[YES|NO]
  • 提供其他选择[YES|NO]
  • 是 SSHv1[YES|NO]
  • SSH 版本(横幅)

我实际上并不关心我可以生成的输入格式,最佳解决方案将接受以下内容:

  • 跨域路由
  • DNS 记录
  • IPv4/IPv6 地址

在一个由换行符分隔的文件中。我查看了 nmap 及其 nse 引擎,原版 nmap 提供对 sshv1 的扫描,但不提供身份验证选项。由于我的 lua 技能……与 David Carradines 的空手道技能和 Chuck Norris 的演员技能相当,我无法自己编写这些东西。

另外我没有使用 nmap,因为它相当慢(至少对我来说),并且我想定期运行此扫描以报告结果。

问题是:哪些工具可以提供所需的东西?

[1]:我不在乎它是 XML、JSON 还是 $FANCY_REPRESENTATION。它只需要机器可解析


正如评论中所问:

我可以访问主机。我可以登录,甚至可以使用 sudo :) -- 这是合规性检查。我可以获取服务器配置,我们正在运行 puppet应该确保配置正确。我们仍然希望依靠客户端从外部验证它是否正常工作,而且这样做的好处是,我可以(通过自动扫描)找到负责主机的人,并询问为什么配置管理没有运行,因为它已经到位了。我说的是这里有几千台主机,运营团队中有 12 个人,阅读所有配置...不是我们想要的(也不是审计员想要的)。

答案1

在有人关闭这个之前我最终编写了一个丑陋的脚本:

它包含了我需要的大部分基本信息,我可能会扩展它以满足我们的内部需求。

$ python scanner.py --help
usage: scanner.py [-h] [--num-cpus NUM_CPUS] [--infile INFILE] [--port PORT]

optional arguments:
  -h, --help           show this help message and exit
  --num-cpus NUM_CPUS  Number of CPUs. Sets the maximum number of parallel
                       tasks.
  --infile INFILE      Input file to read from (Default: stdin).
  --port PORT          Which port shall be scanned! (If you can guess the
                       default you are ueber!)
[INFO/MainProcess] process shutting down

相关内容