为什么要过滤nmap报告的某些端口,而不过滤其他端口?


38

我正在扫描使用iptables的服务器,该服务器应该具有一个非常简单的防火墙:默认情况下,除RELATEDESTABLISHED数据包外,所有内容都被丢弃。NEW允许的唯一数据包类型是端口22和80上的TCP数据包,仅此而已(该服务器上没有HTTPS)。

正如我预期的那样,在前2048个端口上执行nmap的结果使22和80处于打开状态。但是,一些端口显示为“已过滤”。

我的问题是:为什么端口21、25和1863显示为“已过滤”,而2043其他端口却未显示为已过滤?

我预计只会看到22和80为“开放”。

如果将21,25和1863视为“已过滤”是正常的,那么为什么所有其他端口也不也都显示为“已过滤”!

这是nmap输出:

# nmap -PN 94.xx.yy.zz -p1-2048

Starting Nmap 6.00 ( http://nmap.org ) at 2014-06-12 ...
Nmap scan report for ksXXXXXX.kimsufi.com (94.xx.yy.zz)
Host is up (0.0023s latency).
Not shown: 2043 closed ports
PORT     STATE    SERVICE
21/tcp   filtered ftp
22/tcp   open     ssh
25/tcp   filtered smtp
80/tcp   open     http
1863/tcp filtered msnp

我真的不明白为什么我有2043个封闭端口:

Not shown: 2043 closed ports

而不是2046关闭的端口。

这是在服务器上启动的lsof

# lsof -i -n
COMMAND   PID USER   FD   TYPE   DEVICE SIZE NODE NAME
named    3789 bind   20u  IPv4     7802       TCP 127.0.0.1:domain (LISTEN)
named    3789 bind   21u  IPv4     7803       TCP 127.0.0.1:953 (LISTEN)
named    3789 bind  512u  IPv4     7801       UDP 127.0.0.1:domain 
sshd     3804 root    3u  IPv4     7830       TCP *:ssh (LISTEN)
sshd     5408 root    3r  IPv4 96926113       TCP 94.xx.yy.zz:ssh->aa.bb.cc.dd:37516 (ESTABLISHED)
sshd     5411    b    3u  IPv4 96926113       TCP 94.xx.yy.zz:ssh->aa.bb.cc.dd:37516 (ESTABLISHED)
java    16589    t   42u  IPv4 88842753       TCP *:http-alt (LISTEN)
java    16589    t   50u  IPv4 88842759       TCP *:8009 (LISTEN)
java    16589    t   51u  IPv4 88842762       TCP 127.0.0.1:8005 (LISTEN)

(请注意,Java / Tomcat正在侦听端口8009,但防火墙拒绝了该端口)


扫描其他主机时是否得到相同的结果?
小河

@Creek:啊,刚在slashdot.org上尝试过,打开了80443,但是也过滤了25 / smtp。但是,然后您给了我一个想法,尝试不是从我的家用计算机而是从我拥有的另一台服务器中映射同一台服务器:我没有获得3个过滤端口,但是我得到了53 / domain / closed443 / https / closed953 / rndc / closed。(我的专用服务器都托管在OVH /法国)。
塞德里克·马丁

1
如果您确实想查看nmap正在执行的操作,则应该使用root privs,SYN scan(-sS)和进行扫描--packet-trace。还花几分钟阅读手册页,您会惊讶那里的宝石是什么
克里克

我还要临时打开那些端口,看看是否有数据包通过它们。
Mark Hurd 2014年

Answers:


25

根据您的扫描方法,nmap的“已过滤端口”语句有所不同。

标准扫描(如果为非特权用户,则为TCP扫描;如果为超级用户,则为Half-Open scan -sS)取决于TCP协议。(命名为3向hanshake)

  • 如果服务器回复SYN / ACK,则客户端(您)将发出SYN消息:这意味着端口已打开

  • 如果服务器回复RST,则发出SYN消息:这意味着该端口已关闭

  • 如果服务器不响应或出现ICMP错误,则发出SYN消息:这意味着端口已过滤。可能是IDS /全状态防火墙阻止了您的请求)

要弄清端口的实际状态,可以:

由其创造者Fyodor撰写的出色的《Nmap Network Discovery》一书很好地解释了这一点。我引用

已过滤:Nmap无法确定端口是否打开,因为数据包过滤会阻止其探针到达端口。过滤可以来自专用防火墙设备,路由器规则或基于主机的防火墙软件。这些端口使攻击者感到沮丧,因为它们提供的信息很少。有时,它们以ICMP错误消息响应,例如类型3代码13(目标不可访问:在管理上被禁止通信),但是仅丢弃探针而不响应的过滤器更为常见。这迫使Nmap重试几次,以防万一由于网络拥塞而不是过滤导致探针被丢弃。这种过滤会大大降低扫描速度。

open | filtered:当无法确定端口是打开还是已过滤时,Nmap将端口置于此状态。对于打开端口不响应的扫描类型,会发生这种情况。缺乏响应还可能意味着数据包过滤器丢弃了探针或其引发的任何响应。因此,Nmap无法确定端口是打开还是被过滤。UDP,IP协议,FIN,NULL和Xmas扫描以这种方式对端口进行分类。

close | filtered:当Nmap无法确定端口是关闭还是过滤时,使用此状态。它仅用于第5.10节“ TCP空闲扫描(-sl)”中讨论的IP ID空闲扫描


那么如何取消过滤端口22?假设我正在使用Google Domains ...
IgorGanapolsky

“取消过滤”?好吧,您不会在防火墙上拦截进入22的通信,因此将不会被过滤...您将收到“打开”或“关闭”作为对nmap探针的答复
Florian Bidabe '16

您要扫描什么?
Florian Bidabe '16

我正在使用此命令:sudo nmap -oG--T4 -A -p22 -v pi.eazyigz.com | grep ssh
IgorGanapolsky

1
关于探针,“-T4”是不必要的,已经在“ -A”中指定了... sudo nmap表示使用了Syn扫描(-sS)。“ -A”是“ -T4” +“-sV” +“-O”的缩写。如果服务检测(-sV)无法探测SSH服务器,则该端口可能已关闭(无法ssh侦听),否则,客户端和服务器之间一定会有某种东西会干扰探针并丢弃数据包(主机防火墙,IDS,或配置错误的网络设备)
Florian Bidabe '16

10

为什么端口21、25和1863显示为“已过滤”,而2043其他端口却未显示为已过滤?

因为在您的ISP,路由器,网络管理员,它们之间的任何东西,或者您自己在过滤它们。这些端口的历史非常糟糕,1863年是Microsoft即时消息协议(又名MSN和朋友)使用的端口,我相信您可能(也可能没有)设置了特定的规则。SMTP似乎是您的ISP的罪魁祸首,而FTP让我完全不知所措,因为我不知道它们会发生什么。


1
感谢您的解释!因此,“过滤”基本上意味着某处(ISP,路由器等)是否有iptablesREJECT?而ISP /路由器或其他什么是拒绝而不是丢弃,因为它更干净?关于端口25:它也为我过滤了slashdot.org(当我从家庭连接中映射时,而不是从专用服务器中映射时)。
塞德里克·马丁

6
@CedricMartin,您已经完全倒退了。“已过滤”表示丢弃了数据包(无任何响应),而“关闭”表示拒绝了数据包(发送了ICMP“端口不可达”答复)。
2014年

@Mark:然后,如果我把它倒退了,我原来的问题是:在我的服务器上,使用iptables,我将丢弃端口22和80之外的所有内容。为什么只有3个端口显示为“过滤”!
塞德里克·马丁

@CedricMartin编辑您的问题并添加iptables规则。
Braiam 2014年

1

默认情况下,Nmap仅扫描每种协议(tcp,udp)的最常见的1,000个端口。如果您的端口不在该端口,则它不会扫描它,因此不会报告它。但是,您可以使用-p选项指定要扫描的端口。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.