我想扫描我们的网络(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