nmap是一個網絡端口掃描程序。其主要功能是檢查一組目標主機,看看在哪個TCP和UDP端口上有服務程序在監聽 。因為大多數網絡服務都與“眾所周知的”端口號相關聯,所以這項信息會告訴您有關一台機器上正在運行的軟件的很多信息。
運行nmap是一種很好的方法,可以弄清楚系統在打算搞破壞的人看來是個什麼樣子。例如,下面是來自一台RHEL默認安裝機器的報告:
在默認情況下,nmap帶的-sT參數要求以正常方法嘗試連接目標主機上的每個TCP端口 。一旦建立連接,nmap將立即斷開,這樣做雖然不禮貌,但對一個正常編寫的網絡服務程序來說是無害的。
從上面的例子我們可以看出,主機rhel正在運行幾個可能沒用到的服務程序,這幾個程序在歷史上就與安全性問題息息相關:portmapd(rpcbind),CUPS(ipp),可能還包括sendmail(smtp)。幾條潛在的攻擊路線已經相當清楚了。
nmap輸出中的STATE一欄顯示“open”表示端口有服務程序,“unfiltered”表示端口沒有服務程序,“filtered”表示因為防火牆的干擾而無法探測到該端口。unfiltered的端口是最典型的情況,除非nmap在執行一次ACK掃描,否則通常都不顯示它們。
除了直截了當的TCP和UDP探測之外,nmap還有一整套悄悄探測而不發起實際連接的方法。在大多數情況下,這些探測方法會發送看上去像是出自TCP會話中間(而不是開始)的包,然後等待診斷包被送回。這些秘密的探測方法也許能有效地繞過防火牆或避免被尋找端口掃描程序的網絡安全監視器檢測到。如果您的站點使用了防火牆(參見20.12節),用這些可供選擇的掃描模式來探測它,看看它們能找到什麼是個好主意。
nmap有一種神奇而有用的能力:通過查看一個遠程系統TCP/IP實現的細節來推測該系統運行的是什麼操作系統。它有時候甚至能確定一個開放端口上正在運行什麼軟件。-O和-sV選項分別打開這些功能。例如:
這項功能對獲取本地網絡的詳細目錄非常有用。很遺憾,它對黑客也非常有用,他們可以把攻擊集中在目標操作系統已知的弱點上。
也請記住,大多數系統管理員通常不喜歡您掃描他們的網絡並指出網絡的薄弱之處,不論您的動機有多友好。在沒有得到其他網絡的系統管理員同意之前,決不要用nmap來掃描別人的網絡。