Nmap是一種用來發現網絡中主機和服務的安全掃描工具,從而能夠產生一個網絡“地圖”,為了完成這個功能,nmap會向每個目標主機發送特定的報文,從而從目標主機返回報文(或者無返回報文)來判斷目標主機的屬性(如:開放的端口,所使用的操作系統,操作系統的類型等信息)
本文主要討論nmap對端口進行掃描中,當nmap向目標主機發送報文並根據返回報文從而認定端口的6種狀態的含義(注意:這六種狀態只是namp認為的端口狀態,例如:有些主機或者防火牆會返回一些不可靠的報文從而妨礙nmap對端口開放問題的確認)。
-
Open
:端口處於開放狀態,例如:當nmap使用TCP SYN對目標主機某一范圍的端口進行掃描時,我們知道 TCP SYN報文是TCP建立連接的第一步,所以,如果目標主機返回SYN+ACK的報文,我們就認為此端口開放了並且使用了TCP服務。 -
Closed
:端口處於關閉狀態。例如:TCP SYN類型的掃描,如果返回RST類型的報文,則端口處於管理狀態。這里我們值得注意的是關閉的端口也是可訪問的,只是沒有上層的服務在監聽這個端口
,而且,只是在我們掃描的這個時刻為關閉,當我們在另一個時間段進行掃描的時候,這些關閉的端口可能會處於open的狀態
。 -
Filtered(過濾的)
:由於報文無法到達指定的端口,nmap不能夠決定端口的開放狀態
,這主要是由於網絡或者主機安裝了一些防火牆所導致的。當nmap收到icmp報文主機不可達報文(例如:type為3,code為13(communication administratively prohibit)報文)或者目標主機無應答,常常會將目標主機的狀態設置為filtered。 -
Unfiltered(未被過濾的)
:當nmap不能確定端口是否開放的時候所打上的狀態,這種狀態和filtered的區別在於:unfiltered的端口能被nmap訪問,但是nmap根據返回的報文無法確定端口的開放狀態,而filtered的端口直接就沒就沒能夠被nmap訪問
。端口被定義為Unfilterd只會發生在TCP ack掃描類型時當返回RST的報文。而端口被定義為filtered 狀態的原因是是報文被防火牆設備,路由器規則,或者防火牆軟件攔截,無法送達到端口,這通常表現為發送NMAP的主機收到ICMP報錯報文,如:TYPE為3,code為13的報文(通信被認為的禁止 communication administratively prohibited),或者主機通過多次重復發送沒有收到任何回應)。 -
Open|filtered
狀態,這種狀態主要是nmap無法區別端口處於open狀態還是filtered狀態。這種狀態只會出現在open端口對報文不做回應的掃描類型中,如:udp,ip protocol ,TCP null,fin,和xmas掃描類型。 -
Closed|filtered
狀態,這種狀態主要出現在nmap無法區分端口處於closed還是filtered時。此狀態只會出現在IP ID idle scan(這個類型我現在也不太理解,過段時間進行總結一些)中。