了解join某个域的计算机总数

我的问题很简单,就像听起来一样。 有什么工具可以知道属于networking中某个的计算机总数吗? 我使用nmapZenmap )扫描networking,然后查看FQDN来检查域名,但结果并不准确,因为当我这样做时,有些计算机脱机(closures)。 我正在谈论近1000台电脑。

我需要任何能够主动扫描networking并将主机保存在数据库中的工具。 所以我在一周内使用了AlienVault的OSSIM,并将结果导出为一个.csv文件(包含所有的计算机)。 到目前为止,我很好,但有一个问题,当一台计算机join一个域时,即使计算机“离开”networking,域控制器也会将计算机的名称与IP相关联。 所以当OSSIM(或者nmap)要求192.XYZ IP的名字时,它会得到原来计算机的名字。 这导致认为新机器(与先前的机器的IP地址)在域中,而不是。 如果我错了,请纠正我。 所以我会把这台机器当作域计算机,并且在域中join错误的计算机总数。

那么,有没有更多的技术(不parsingFQDN)方式来“问”一台机器:你是否在“ domain.net ”域? 我只是想听到“是或“ 否” (来自机器)。

回答这个问题比看起来更难,因为机器是否“join”可以被解释为许多不同的方式。 而你想要的答案取决于结果数据的目的是什么。

在基本级别上,只有具有有效的计算机帐户凭据的计算机才能join到域中,该计算机帐户凭证可用于向域控制器进行身份validation。

如果外部进程更改了该计算机帐户上的密码,禁用该帐户,或者只是将其从AD中删除,那么客户端计算机仍会认为它已连接,直到它尝试进行身份validation并且不再有效。 所以你不能真正依靠客户端来可靠地回答这个问题,除非客户端为了提供答案而实际执行成功的authentication。 在大范围内做这个也会浪费资源。

我需要任何能够主动扫描networking并将主机保存在数据库中的工具。

你很幸运 Active Directory已经为你自己做了这个。 除此之外,它还跟踪在自己的数据库中join的计算机。 它甚至知道这些计算机上次成功通过身份validation。 如果您需要将这些数据导出到不同的数据库,则只需查询Active Directory中的数据,而不是扫描整个networking。

有不同的方式来做到这一点,每个方面的优点和缺点在时间上的准确性和难度。 查询任何DC的lastLogonTimestamp属性是最简单但最不准确的方法,因为它的devise方式 。 lastLogon属性更为准确,但您必须单独询问每个DC的值,并使用最近的值作为您的答案。 如果您需要接近实时的更新,则基本上需要在发生计算机login事件时处理所有DC的安全事件日志。 这通常涉及使用某种集中式事件日志收集服务。