远程检查 IP 端口状态

Posted

技术标签:

【中文标题】远程检查 IP 端口状态【英文标题】:Checking IP Port State Remotely 【发布时间】:2010-09-12 14:01:02 【问题描述】:

我发现一篇关于在机器上获取活动 tcp/udp 连接的文章。

http://www.codeproject.com/KB/IP/iphlpapi.aspx

但我的问题是我需要能够远程确定活动连接 - 以查看特定端口是否正在运行或侦听而不篡改机器。

这可能吗?

本机看起来不像,否则可能会造成安全问题。另一种方法是查询远程服务,然后可以在本地机器上进行必要的调用。

有什么想法吗?

【问题讨论】:

【参考方案1】:

Nmap 就是你要找的。​​p>

【讨论】:

【参考方案2】:

在远程计算机不知道的情况下,无法知道打开了哪些端口。但是您可以在端口上运行的程序不知道的情况下确定信息(即不干扰程序)。

使用 SYN 扫描:

为了建立连接,TCP 使用三次握手。可以在程序不知道的情况下,利用它来查明端口是否打开。

握手过程如下:

    客户端通过向服务器发送 SYN 来执行主动打开。 服务器回复一个 SYN-ACK。 通常,客户端会向服务器发送回 ACK。但是这一步被跳过了。

SYN 扫描是最流行的 TCP扫描。而不是使用 操作系统的网络功能, 端口扫描器生成原始 IP 数据包本身,并监控 回应。这种扫描类型也是 被称为“半开扫描”,因为 它实际上从未打开完整的 TCP 联系。端口扫描器生成 一个SYN包。如果目标端口是 打开,它将以 SYN-ACK 响应 包。扫描仪主机响应 一个RST数据包,关闭连接 在握手完成之前。

原始网络的使用有几个 优点,使扫描仪充分 控制发送的数据包和 响应超时,并允许 详细报告答复。 关于哪种扫描存在争议 对目标主机的干扰较小。同步 扫描的优点是 个人服务从未真正 接收连接,而一些 服务可能会因连接而崩溃 扫描。然而,在 RST 握手可能会给某些人带来问题 网络堆栈,特别简单 打印机等设备。没有 无论哪种方式都有结论性的论据。

Source Wikipedia

如下所述,我认为nmap 可以进行SYN 扫描。

使用套接字进行 TCP 端口扫描:

确定哪些端口已打开的一种方法是打开该端口的套接字。或者到一个不同的端口,它会像你提到的那样为你找到信息。

例如从命令提示符或终端:

telnet google.com 80

UDP 端口扫描:

如果一个 UDP 数据包被发送到一个未打开的端口,系统将响应一个 ICMP 端口不可达消息。您可以使用此方法来确定端口是打开还是关闭。但是接收程序会知道。

【讨论】:

直接连接到套接字的问题是它会干扰端口上运行的任何现有程序。我正在尝试确定端口的状态 - 这反过来会让我知道程序是否正常运行。 我相信 nmap 可以在不完成三次握手的情况下判断是否有程序在侦听端口。因此,它不会干扰在该端口上运行的程序,因为它永远不会注意到连接。【参考方案3】:

neouser99(等人)建议NMAP。如果您要做的只是检测远程计算机上打开的端口,NMAP 非常好。

但是从您的问题的声音来看,您实际上是在尝试确定远程计算机上同时打开和 连接的端口。如果您想要一个通用的监控解决方案,包括连接的端口,那么您可以在您的远程计算机上安装一个 snmp 服务器。有两个MIBs 可以让您检查端口状态,它们是TCP-MIB::tcpConnectionTable 和UDP-MIB::udpEndpointTable。

net-snmp 中提供的守护程序(服务器)很可能已获得对这些 mib 的支持。

【讨论】:

以上是关于远程检查 IP 端口状态的主要内容,如果未能解决你的问题,请参考以下文章

检查远程主机上一个端口的状态[关闭]

在 bash 脚本中检查远程端口状态 [重复]

十二月技术考核

怎么查看远程电脑开的远程桌面端口(3389)?

Windows远程桌面无法连接到腾讯云服务器,具体情况如下:

[时间:2011-10-05 11:22:07][远程IP端口:122.228.196.222:1793][本机端口:443(TCP)][状态:自动阻止]