我想扫描我们的网络(IPv4 和 IPv6)以查找 ssh 并找到提供的身份验证选项。
最终,我希望得到一个可解析的主机列表 [1],其中包含以下信息:
- IP
[IPv4|IPv6]
地址 - 可选:扫描时的 FQDN
- 港口
- 提供公钥认证
[YES|NO]
- 提供其他选项
[YES|NO]
- 是 SSHv1
[YES|NO]
- SSH 版本(横幅)
我实际上并不关心我可以生成的输入格式,最佳解决方案将接受以下内容:
- CIDR
- DNS 记录
- IPv4/IPv6 地址
在由换行符分隔的文件中。我看过 nmap 和它的 nse 引擎,股票 nmap 提供对 sshv1 的扫描,但不提供身份验证选项。由于我的 lua 技能……与 David Carradines 的空手道技能和 Chuck Norris 的演员技能相当,我自己不能写那些东西。
此外,我没有设置 nmap,因为它相当慢(至少对我而言),我想定期运行此扫描以报告结果。
问题是:哪些工具提供了所需的东西?
[1]:我不在乎它是 XML、JSON 还是 $FANCY_REPRESENTATION。它只需要机器可解析
如评论中所问:
我可以访问主机。我可以登录,甚至可以 sudo :) -- 这是一个合规性检查。我可以获得服务器配置,我们正在运行 puppet,它应该确保配置正确。我们仍然宁愿依赖一个从外部验证它不起作用的客户端,还有一个好处是我可以(通过自动扫描)跑到负责主机的人那里并询问为什么配置管理不起作用运行,因为它已经到位。我在这里说的是几千个主机,运营团队中有 12 人,通读所有配置是……不是我们想要的(也不是审计员想要的)。
在有人关闭之前,我最终制作了一个丑陋的脚本:
它包含我需要的大部分基本信息,我可能会对其进行扩展,使其符合我们的内部需求。