如何通過掃描工具Nmap列出開放端口和監聽服務?
譯文網絡管理員面臨的最棘手問題之一就是設備上的開放端口。除非你將操作系統手動安裝到網絡上的每個設備上,確保關閉了所有不必要的端口,否則你就有可能面臨攻擊的風險。
你應該禁用的端口視系統而異,甚至可能取決于特殊軟件的需要(比如說,QuickBooks需要特定的端口才能正常運行――具體哪些端口由版本決定)。你需要列出可以或必須保持開放的端口。一旦你有了這份列表,就可以著手關閉那些機器上的端口了。
但是你又如何才能知道哪些機器的哪些端口是開放的?當然了,你可以過去查看網絡上的每個機器,打開用作防火墻的任何設備,手動確保所有必要的端口都開放,所有不必要的端口都關閉。
或者,你可以掃描網絡,查明哪些機器的哪些端口是開放的?如果你知道了開放端口的位置,就能對照主列表來核實該信息,關閉必要的每個端口。現在來說說棘手的部分。
如何運行端口掃描?
你如何才能查明哪些機器的哪個端口是開放的?你可以運行端口掃描。假如你不知道如何運行端口掃描,我會逐步介紹整個過程。
我使用一臺Linux機器來掃描。原因何在?因為Linux擁有出色的掃描工具,它們隨時可以處理這項任務,不僅免費,而且易于使用。
如果你沒有Linux運行在上面的機器,也不用擔心――你可以下載Kali Linux之類的網絡滲透直啟動發行版(live distribution),將ISO文件刻錄到CD或USB閃驅上,并啟動機器、進入到Linux的直啟動實例(不需要對所用的機器進行更改,因為直啟動實例完全從內存運行)。直啟動實例安裝并運行起來后,你就有了形形色色的網絡取證/分析工具可以使用。
你應該使用的端口掃描工具
最出色的端口掃描工具是Nmap。如果你不想搗鼓命令行,還有一個出色的GUI前端程序,名為Zenmap(https://nmap.org/zenmap/),它可適用于Linux、Windows和Mac等平臺。如果你不想為Linux而操心,可以將它安裝在Windows上。(Nmap的功能要比Windows內置網絡掃描工具強大得多。)Nmap和Zenmap在眾多平臺上工作起來一模一樣,所以如果你知道了如何在一個平臺上使用該工具,就可以在所有平臺上使用它。
Zenmap安裝完畢后,你隨時可以對自己的網絡運行全面的端口掃描。網絡規模將決定運行掃描所花的時間。如果使用Zenmap,你可以運行非常籠統的掃描和非常具體的掃描。不妨先運行非常籠統的掃描,大致了解我們所處理的對象。我們將在整個192.168.1.x網絡上運行掃描。
1. 打開Zenmap。
2. 在Target(目標)部分,輸入192.168.1.1/24(或者你想要擴展的任何龐大的目標)。
3. 從Profile(配置文件)中選擇Intense Scan(精細掃描)。
4. 點擊Scan(掃描)按鈕。
你應該會立馬看到結果批量裝入到Nmap Output(輸出)選項卡;結果顯示網絡中機器上的開放端口(圖A)。精細掃描要花很長時間,但是如果你想要獲得網絡方面的最詳細信息,就應該進行精細掃描。
圖A:使用Zenmap進行精細掃描。
一旦掃描完畢,你會在左窗格看到一份列表,列出了網絡上存在的所有設備。點擊其中一個設備,滾動瀏覽Nmap Output(輸出),尋找列有Port(端口)、State(狀態)和Service(服務)的這幾部分(圖B)。
圖B:Linux生產機器上開放的端口8080和端口8086。
如果你沒有時間來梳理掃描,總是可以保存起來,以便之后查看(使用Zenmap查看)。想保存掃描結果,進入到Scan(掃描) | Save Scan(保存掃描),給它取個名字,并點擊Save(保存)。
想快速查看網絡上的開放端口,點擊Ports/Hosts(端口/主機)選項卡,即可查看哪些端口完全開放(圖C)。
圖C:使用Zenmap快速查看開放端口。
如果你不想依賴GUI,如果使用Nmap(你在安裝Zenmap時一并安裝),就可以從命令行運行同樣的掃描。比如說,你想對單一主機運行精細掃描。打開終端窗口,執行這個命令。
sudo nmap -T4 -A -v 192.168.1.1/24
這些是上述命令的參數選項符。
T4─ 將時間設為4(0-5,5代表最快)
A ─ 啟用操作系統檢測
v ─ 詳細輸出
這時候(無論你通過命令行使用Nmap還是使用Zenmap GUI),應該可以獲得網絡上開放端口的完整列表。既然已知道了哪些機器上的哪些端口開放,保護這些端口安全性、進而保護網絡安全性的可能性大大提高。
結束語
Nmap/Zenmap不是市面上唯一的網絡掃描選擇方案,不過你很難找到使用更簡單、功能更強大的工具來幫助發現網絡上哪些端口是開放的。
英文:List open ports and listening services



























