扫描SSH提供的身份validation选项

我想扫描我们的networking(IPv4和IPv6) ssh并find提供的身份validation选项。

最终,我想结束一个包含以下信息的主机可parsing列表 [1]:

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

我实际上不关心我可以产生的input格式,最佳的解决scheme将接受以下内容:

  • CIDR
  • DNSlogging
  • IPv4 / IPv6地址

在由换行符分隔的文件中。 我已经看过nmap,它是nse引擎,股票nmap提供了sshv1的扫描,但不提供authentication选项。 由于我的技巧是… …与大卫·卡拉丁斯空手道技巧和查克·诺里斯的演员技能相提并论,我不能自己写这些东西。

我也没有设置nmap,因为它相当慢(至less对我来说),我想定期运行这个扫描报告结果。

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

[1]:我不在乎它是XML,JSON还是$ FANCY_REPRESENTATION。 它只需要是机器可parsing的


正如在评论中所问:

我可以访问主机。 我可以login,甚至sudo 🙂 – 这是一个合规检查。 我可以得到服务器configuration,我们正在运行木偶, 应该确保configuration是正确的。 我们更希望依赖于从外部validation它不工作的客户端,而且我的优势是可以(通过自动扫描)运行到负责主机的人,并询问为什么configurationpipe理不是按照已经到位的方式运行。 我正在按照几千个主机的顺序进行交谈,并且在操作团队中有12个人,通过所有的configuration阅读…不是我们想要的(而不是审计员想要的)。

在有人closures之前,我最终制作了一个丑陋的脚本:

它有我需要的大部分基本信息,我可能会扩展它以适应我们的内部需求。

 $ 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