Linux系統巧用NMAP來收集主機信息
NMAP自從在紅帽Linux中出現后,就迅速流傳開來,成為Linux網絡工程師與系統管理員不可缺少的工具之一。通過這個工具可以用來判斷網絡布局、主機打開的端口與服務等等。而這些信息的話對于管理員提高系統的安全性又具有至關重要的作用。NMAP為建立使用安全服務和停運不被使用能夠服務的政策奠定了良好的基礎。
如上圖就是NMAP運行的命令結果。他可以通過對特定主機進行掃描,以發現其所采用的操作系統、所打開的端口與采用的服務等等。不過SMAP是在shell下運行的一個命令其沒有直觀的界面。為此對于不少Linux系統管理員來說這是一個難以跨越的障礙。我剛開始的時候也特別不習慣,很羨慕Windows下面的一些局域網掃描工具,如流光掃描等等。這些工具都提供了友好的圖形化操作界面。不過后來我用慣了這個命令之后,反而離不開這個NMAP命令了。因為經過多次使用,我發現了很多其他掃描工具難以實現的功能。只要靈活使用這個命令,相比其他掃描工具來說,系統管理員會有更大的收獲。廢話就不說了,我轉入正題,談談如何巧用NMAP來收集局域網中的主機信息。
一、掃描一批主機。
若你正在負責你們公司局域網的安全,那么就需要知道企業局域網中哪些主機開啟了不需要的服務與端口。這會為局域網的安全埋下安全隱患。為此就需要對局域網的主機進行掃描,以收集開發的端口與啟用的服務信息。
NMAP命令就可以實現這個目的。因為NMAP命令支持CIDR風格的地址。如系統管理員可以采用192.168.0.0/24的形式來表示一串IP地址。這是一種通過子網掩碼來表示IP地址串的一種方法。但是很顯然,CIDR命名方法雖然比較簡單但是不夠靈活。如現在企業中192.168.0.4是一臺文件服務器。在掃描的時候,系統管理員不希望NMAP命令掃描這臺主機,以免信息外漏給攻擊者提供方便。為此在實際工作中對局域網主機進行掃描的時侯,往往需要過濾某些特定的主機。另外也不希望對192.168.0.0等特殊的地址進行掃描,因為這些是廣播地址,不對標特定的主機。現在市面上的掃描軟件基本上都支持CIDR風格的IP地址。但是NMAP卻可以把某些特定的IP地址過濾掉,或者只收集一些特定IP地址主機的信息。
如NMAP命令后面可以利用逗號來分隔多個IP地址,還可以通過范圍列表來選定特定IP地址的主機。不過當需要掃描的主機比較多時,通過手工輸入的方式將會很麻煩。而NMAP命令最值得我推薦的就是可以從一個列表中制定需要掃描的IP地址信息。也就是說,系統管理員可以預先把需要收集信息的主機的IP地址保存在一個文件中。然后讓NMAP命令從這個文件中讀取IP地址信息。這即省去了輸入的麻煩,提高了工作效率;而且這個文件還可以重復使用。如利用“nmap –iL 文件名”的方式即可。我現在在企業中是利用DHCP服務器來管理IP地址的。IP地址分配即有動態的、又有靜態的。我會定期對局域網內的主機進行掃描,以防止用戶打開了不安全的端口。在掃描的時候如果主機比較多,需要花費比較多的時間。為此我是采用循環掃描的方式,如一次掃描50臺主機等等,一個月剛好循環一次。為了達到這個目的,我就從DHCP服務器中導出了所有在用的IP地址列表,然后制作成一個文本文件。注意NMAP命令不支持EXCEL格式的文件,所以需要把這個列表轉換成文本格式的文件。然后我就可以利用“nmap –iL 文件名”命令來掃描文件中規定IP地址的主機,收集有用的信息,以保障局域網內主機的安全。
#p#二、過濾特定的主機。
在企業網絡中,有些IP地址對應著特殊的服務。無論是出于安全考慮還是性能方面的考慮,都不希望NMAP命令對這些IP地址所對應的主機進行掃描。如192.168.0.2可能是企業局域網中的一臺網絡打印機。對這個IP地址進行掃描往往沒有多大實際的價值,除了浪費時間就是增加系統管理員的閱讀量。為此系統管理員希望在使用這個命令進行掃描的時候,能夠過濾一些特定的主機,以縮短掃描的時間、簡化掃描的結果。NMAP命令支持用戶的這種需求。
如系統管理員可以通過exclued參數來排除不需要收集信息的主機。如nmap exclude 192.168.0.2,192.168.0.3就表示用戶不需要對這兩個IP地址的主機進行掃描。也就是說如果掃描范圍內有一些主機不需要掃描,則可以利用逗號把它們分開,并通過Exclued參數來實現過濾。這個參數后面不但可以接IP地址,而且還可以接主機名、CIDR格式的IP地址名等等。通常情況下掃描的網絡中如果包含正在執行關鍵任務的服務器、對端口掃描反應強烈的應用程序,這功能通常很有用。
但是當過濾的主機比較多時,如果采用一個個的輸入IP地址來實現,也是非常不方便的。如果系統管理員正在這么做的話,那對于這個命令可能還只是一知半解。其實這個Exclued參數還有一個同父異母的兄弟,即excludefile。顧名思義,這個參數后面可以接一個文本文件。在這個文本文件中包含的IP地址都將會被過濾掉。它的實際作用,跟Exclued參數一樣,只是其所排除的目標主機信息是從一個文件中取得的,而不是在命令行中輸入的。這個文件中的IP地址或者主機名字可以用換行符、空格、或者制表符分隔。顯然通過文件的形式來保存需要過濾的主機信息,不但可以提高掃描的效率,而且在下次掃描時還可以重復利用。
我現在特別喜歡使用NMAP命令來收集相關的主機信息,最主要的就是看中這個功能??梢宰孨MAP命令從特定的文件中讀取IP地址或者主機名字信息,然后通過參數選項來實現從列表中收集主機信息或者過濾某些特定的主機。這可以在很大程度上提高我們的工作效率,提高NMAP命令的靈活性。
三、隨機選擇目標主機收集信息。
有時候出于研究或者測試的需要,要隨即的選擇IP地址進行掃描,并收集端口、服務等相關信息。Nmap命令也支持對網絡上的主機進行隨即掃描。這主要是借助于iR選項,這個選項后面需要跟一個整數類型的數字。若是0的話,則表示永無休止的掃描。由于掃描不但會引起用戶的反感,而且也會影響本機的性能,為此這個永無休止的掃描最好不要用。若跟著是其他數字的話,則表示需要隨機生成多少個IP地址進行掃絕。注意這里生成的IP地址是隨機的,而不是從小到大或者從大到小。只有如此這個命令收集起來的信息才具有參考的價值。另外值得稱道的是,使用者選項的時候,如果其生成的主機地址中包含了組播或者未分配的IP地址的話,則這個命令會自動略過。顯然這是一個很人性化的設計。
再次強調一下,對網絡上的主機進行掃描的話,會一件“害人害己”的事情。因為有些操作系統或者應用程序對于網絡掃描很敏感,掃描可能會影響他們的正常運行。另外掃描也需要耗費本機的大量資源。為此及時采用SMAP命令進行掃描的話,一次性掃描的主機也不宜過多,而且頻率也不要臺過于頻繁。如果企業網絡中客戶端比較多的話,那么分次批量掃描收集信息是比較合理的選擇。
另外NMAP命令雖然是一個在Linux操作系統上運行的開源掃描工具。但是其不僅可以掃描Linux的客戶端,而且還可以掃描包括Windows操作系統在內的客戶端。他通過一些標示符來區分是什么類型的操作系統。而且,即使客戶端時一臺網絡打印機,NMAP命令也可以掃描并收集相關重要的信息。上面這張截圖中所收集的信息就是一臺網絡打印機的啟用的端口與服務信息。這就可以幫助系統管理員把企業網絡中的設備一網打盡。
故我認為NMAP命令要比其他的一些圖形化界面的掃描工具具有更大的優勢。
【編輯推薦】