Windows Server 2008/2003 - 确定所有“已使用”的本地网络端口

Windows Server 2008/2003 - 确定所有“已使用”的本地网络端口

我的任务是启用 100 多台服务器上的本地防火墙。这些系统使用许多不同的端口运行许多不同的应用程序。我首先进行了 nmap 扫描,但如果不进入每个系统并观察数据流 (tcpdump),我就想不出有什么方法可以查看这些开放端口是否实际被连接和使用。我知道可能有一些困难的方法可以做到这一点,但我希望也有一个简单的方法。

是否有一个工具/脚本可以随时间监视开放端口(如 netstat)(与没有花哨脚本的 netstat 不同)并将结果放入某种档案/日志形式?

答案1

这一切的中心是什么样的交换机/路由设备?我问这个问题的原因是,这似乎是从交换机采样 netflow 数据的完美案例。当然,这需要支持导出 netflow 数据的网络设备。

除此之外,我能想到的办法就是在每台主机上运行 tcpdump,然后以某种方式聚合数据。不过,如果需要的话,这应该很容易编写脚本。

答案2

我会选择tcpdumpnmap:首先,我会扫描目标机器以寻找开放端口,并假设这些端口正在使用中,目的是缩小portrangeTCP 和 UDP 的 tcpdump 参数。然后,我会运行tcpdump -w /some/file.pcap portrange <your_nmap_range>一天或一周或更长时间,之后再 grep 以查找已建立的连接。

如果您想继续使用 Windows,您也可以使用 perfmon 执行类似操作。我非常确定有 TCP/IP 计数器,它们可能还包括您可以缩小范围的进程 ID。

您可能还会发现tcpview来自 Sysinternals 的使用,但我不知道它是否可以记录。

答案3

这听起来像是适合这类工作的“合适工具”。我喜欢好的命令行;但是,对于这样的事情,您确实需要研究能够自动进行网络依赖关系映射的 GUI 和数据库支持的工具。许多供应商都销售这样的产品,而且许多供应商都提供 30 天免费试用(我立即想到了 Ipswitch WhatsUp)。

相关内容