我正在扫描一个应该有一个非常简单的防火墙的服务器iptables:默认情况下,除了数据包之外,所有内容都会被RELATED
丢弃ESTABLISHED
。唯一NEW
允许的数据包类型是端口 22 和 80 上的 TCP 数据包,仅此而已(该服务器上没有 HTTPS)。
的结果地图正如我所料,前 2048 个端口上的 22 和 80 为开放端口。然而,一些端口显示为“已过滤”。
我的问题是:为什么端口 21、25 和 1863 显示为“已过滤”,而 2043 其他端口未显示为已过滤?
我预计只会看到 22 和 80 为“开放”。
如果将 21,25 和 1863 视为“已过滤”是正常的,那么为什么所有其他端口不也显示为“已过滤”!?
这是地图输出:
# 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 -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,但该端口已被防火墙删除)
答案1
nmap 中的“过滤端口”语句根据您的扫描方法而有所不同。
标准扫描(如果是非特权用户则为 TCP 扫描,如果是超级用户则为半开扫描 -sS)依赖于 TCP 协议。 (命名为 3-way hanshake)
客户端(你)发出 SYN,如果服务器回复 SYN/ACK:这意味着该端口是打开!
您发出 SYN,如果服务器回复 RST:这意味着该端口是关闭!
- 你发出一个SYN,如果服务器没有回复,或者回复ICMP错误:这意味着该端口是过滤的。可能 IDS/状态防火墙阻止您的请求)
要了解端口的真实状态,您可以:
- 使用-sV, 或者-A选项(版本检测,它将帮助您确定该端口的状态。
- 使用--tcp-标志 SYN、FIN尝试绕过固件。
- 使用其他扫描类型(http://nmap.org/book/man-port-scanning-techniques.html)
优秀的“Nmap 网络发现“由其创始人费奥多尔(Fyodor)撰写的书很好地解释了这一点。我引用
Filtered :Nmap 无法确定端口是否打开,因为数据包过滤阻止其探测到达该端口。过滤可以来自专用防火墙设备、路由器规则或基于主机的防火墙软件。这些端口让攻击者感到沮丧,因为它们提供的信息很少。有时,它们会使用 ICMP 错误消息进行响应,例如类型 3 代码 13(目标无法到达:管理上禁止通信),但简单地丢弃探测而不响应的过滤器更为常见。这迫使 Nmap 重试几次,以防探测由于网络拥塞而不是过滤而被丢弃。这种过滤会大大减慢扫描速度。
open|filtered :当 Nmap 无法确定端口是开放还是已过滤时,Nmap 会将端口置于此状态。对于开放端口没有响应的扫描类型,会发生这种情况。缺乏响应还可能意味着数据包过滤器丢弃了探测或其引起的任何响应。所以Nmap不能确定端口是开放的还是被过滤的。 UDP、IP 协议、FIN、NULL 和 Xmas 扫描以这种方式对端口进行分类。
close|filtered :当 Nmap 无法确定端口是否关闭或过滤时,使用此状态。它仅用于第 5.10 节“TCP 空闲扫描 (-sl)”中讨论的 IP ID 空闲扫描
答案2
为什么端口 21、25 和 1863 显示为“已过滤”,而 2043 其他端口未显示为已过滤?
因为在你的ISP、路由器、你的网络管理员、他们之间的任何东西或者你自己都在过滤它们。这些端口有一个相当糟糕的历史,1863 是 Microsoft 即时消息协议(又名 MSN 和朋友)使用的端口,我相信您可能(或可能没有)设置了特定的规则。 SMTP 似乎是你的 ISP 的罪魁祸首,而 FTP 让我完全惊呆了,因为我不知道它们会发生什么。
答案3
默认情况下,Nmap 仅扫描每个协议(tcp、udp)最常见的 1,000 个端口。如果您的端口位于该端口之外,那么它不会扫描它,因此不会报告它。但是,您可以使用 -p 选项指定要扫描的端口。