我需要检查远程主机是否能够到达特定的端口。 在testing时绑定到该端口的服务将会closures。
testing将解决的可能的问题将是:
我试过telnet。 但是,如果服务未绑定到该端口,则telnet将返回非零的退出代码。 可能的select是什么?
更新 :
我们不能有一个nmap的方式来做到这一点? 任何具有过滤状态的输出都应该是红旗。
示例命令:$ nmap -v 120.114.24.56 -P0 -p 8080
参考: http : //nmap.org/book/man-port-scanning-basics.html
Nmap认可的六个港口国家 – (用红色标记的应该是我们的红旗)
打开
应用程序正在主动接受此端口上的TCP连接,UDP数据报或SCTP关联。 查找这些通常是端口扫描的主要目标。 有安全意识的人知道每个开放的港口都是攻击的途径。 攻击者和笔testing者想利用开放的端口,而pipe理员试图用防火墙closures或保护他们,而不阻碍合法用户。 开放端口对于非安全扫描也很有意义,因为它们显示可用于networking的服务。
closures
closures的端口是可访问的(它接收并响应Nmap探测包),但是没有应用程序在监听它。 它们可以有助于显示主机已启动IP地址(主机发现或ping扫描),并作为操作系统检测的一部分。 因为封闭的端口是可以到达的,所以稍后可能值得一些开放。 pipe理员可能想要考虑用防火墙阻止这样的端口。 然后他们会出现在过滤状态,下面讨论。
过滤
Nmap无法确定端口是否打开,因为数据包过滤阻止其探针到达端口。 过滤可以来自专用的防火墙设备,路由器规则或基于主机的防火墙软件。 这些端口阻止了攻击者,因为他们提供的信息非常less。 有时候,他们会用ICMP错误消息来响应,例如types3的代码13(目标不可达:通信在pipe理上是禁止的),但是那些简单地放弃探测而不响应的filter则更为常见。 这会迫使Nmap多次重试,以防万一探测由于networking拥塞而不是过滤而被丢弃。 这大大降低了扫描的速度。
未经过滤
未经过滤的状态意味着一个端口是可访问的,但Nmap无法确定它是打开还是closures。 只有用于映射防火墙规则集的ACK扫描将端口分类为此状态。 使用其他扫描types(如窗口扫描,SYN扫描或FIN扫描)扫描未过滤的端口可能有助于确定端口是否处于打开状态。
开放|过滤
当无法确定端口是否打开或过滤时,Nmap将端口置于此状态。 对于打开端口不响应的扫描types,会发生这种情况。 没有响应也可能意味着数据包filter放弃了探测器或其引发的任何响应。 所以Nmap不知道端口是打开还是被过滤。 UDP,IP协议,FIN,NULL和Xmas扫描以这种方式对端口进行分类。
closures|过滤
当Nmap无法确定某个端口是closures还是过滤时,将使用此状态。 它仅用于IP ID空闲扫描。
根据您对资源的访问情况,这很困难(如果不是不可能的话)。
如果它是一个基于Unix的服务器,我会在服务器上运行tcpdump(这样它只能监听您感兴趣的端口上的stream量),然后尝试通过Telnet连接到它。 Telnet当然会失败,但是至less你应该通过tcpdump看到传入的服务器尝试(尽pipe只有传入的stream量没有任何反应)。 这意味着stream量正在进入框 – 这并不意味着防火墙上没有防止程序工作的过程。
如果没有人在服务器上侦听,那么我通常只是在端口上启动一个服务。 现代的防火墙可能会使用数据包检测,所以不能保证你的目标是监听端口。
你可以用nc来做到这一点(例如,在端口6667上的TCP)
nc -l 6667
然后在发送端尝试telnet或nc。 如果你没有nc,你可以用perl来创build一个简单的套接字监听器,例如IO :: Socket :: Inet,或者使用python或powershell,这取决于平台。
对于UDP,你可以使用nc加-u标志,但是这个你不能用telnet来validation,但是nc也在发送端工作。