歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux管理 >> Linux安全

Linux的企業端口掃描及實戰

端口與漏洞發現及掃描也是對企業進行風險評估和管理的必要手段。俗話說得好:“千裡之堤,毀於蟻穴。”一個小小的漏洞造成一旦被攻擊者發現,最終後果有可能是整個網絡的癱瘓。而怎麼來發現企業網絡的安全漏洞呢?需要掌握和采用一些什麼關鍵技術?有什麼比較流行和高效的工具可以用來輔助系統管理員來進行漏洞的掃描和發現呢?

企業端口掃描策略
1、端口掃描的目的
對於位於網絡中的計算機系統來說,一個端口就是一個潛在的通信通道,也就是一個入侵通道。對目標計算機進行端口掃描,能得到許多有用的信息從而發現系統的安全漏洞。通過其可以使系統用戶了解系統目前向外界提供了哪些服務,從而為系統用戶管理網絡提供了一種參考的手段。

從技術原理上來說,端口掃描向目標主機的TCP/UDP服務端口發送探測數據包,並記錄目標主機的響應。通過分析響應來判斷服務端口是打開還是關閉,就可以得知端口提供的服務或信息。端口掃描也可以通過捕獲本地主機或服務器的流入流出IP數據包來監視本地主機的運行情況,不僅能對接收到的數據進行分析,而且能夠幫助用戶發現目標主機的某些內在的弱點,而不會提供進入一個系統的詳細步驟。一般說來,端口掃描的目的通常是如下的一項或者多項:
  1. 發現開放端口:發現目標系統上開放的TCP或UDP端口;
  2. 了解主機操作系統信息:端口掃描可以通過操作系統的“指紋”來推測被掃描操作系統或者應用程序的版本等信息;
  3. 了解軟件或者服務版本:軟件或服務版本可以通過“標志獲取”或者應用程序的指紋來識別獲得;
  4. 發現脆弱的軟件版本:識別軟件和服務的缺陷,從而有助於發起針對漏洞的攻擊。

端口掃描主要有經典的掃描器(全連接)以及所謂的SYN(半連接)掃描器。此外還有間接掃描和秘密掃描等。TCP掃描方式是通過與被掃描主機建立標准的TCP連接,因此這種方式最准確,很少漏報、誤報,但是容易被目標主機察覺、記錄。SYN方式是通過與目標主機建立半打開連接,這樣就不容易被目標主機記錄,但是掃描結果會出現漏報,在網絡狀況不好的情況下這種漏報是嚴重的。

2、快速安裝nmap進行企業端口掃描
nmap是一個網絡探測和安全掃描程序,系統管理者和個人可以使用這個軟件掃描大型的網絡,獲取那台主機正在運行以及提供什麼服務等信息。nmap支持很多掃描技術,例如:UDP、TCP connect()、TCP SYN(半開掃描)、ftp代理(bounce攻擊)、反向標志、ICMP、FIN、ACK掃描、聖誕樹(Xmas Tree)、SYN掃描和null掃描。nmap還提供了一些高級的特征,例如:通過TCP/IP協議棧特征探測操作系統類型,秘密掃描,動態延時和重傳計算,並行掃描,通過並行ping掃描探測關閉的主機,誘餌掃描,避開端口過濾檢測,直接RPC掃描(無須端口影射),碎片掃描,以及靈活的目標和端口設定。

為了提高nmap在non-root狀態下的性能,軟件的設計者付出了很大的努力。很不幸,一些內核界面(例如raw socket)需要在root狀態下使用。所以應該盡可能在root使用nmap。

nmap運行通常會得到被掃描主機端口的列表。nmap總會給出well known端口的服務名(如果可能)、端口號、狀態和協議等信息。每個端口的狀態有:open、filtered、unfiltered。

open狀態意味著目標主機能夠在這個端口使用accept()系統調用接受連接;

filtered狀態表示防火牆、包過濾和其它的網絡安全軟件掩蓋了這個端口,禁止 nmap探測其是否打開。

unfiltered表示這個端口關閉,並且沒有防火牆/包過濾軟件來隔離nmap的探測企圖。通常情況下,端口的狀態基本都是unfiltered狀態,只有在大多數被掃描的端口處於filtered狀態下,才會顯示處於unfiltered狀態的端口。

根據使用的功能選項,nmap也可以報告遠程主機的下列特征:使用的操作系統、TCP序列、運行綁定到每個端口上的應用程序的用戶名、DNS名、主機地址是否是欺騙地址、以及其它一些東西。

在使用之前,我們需要下載該軟件的源碼包進行安裝。下載網址為:http://linux.softpedia.com/get/System/Networking/Nmap-184.shtml。下載完成後,以作者下載到的版本為例:nmap-5.00.tgz,用戶執行如下安裝命令即可:

(1)解壓縮軟件包
#tar –xzvf nmap-5.00.tgz

(2)切換到安裝目錄
#cd nmap-5.00

(3)使用configure命令生成make文件
#./configure

(4)編譯源代碼
#make

(5)安裝相關模塊
#make install

3、四步驟使用nmap確定企業網絡開放端口
(1)掃描實施第一步:發現活動主機

使用nmap掃描整個網絡尋找目標,已確定目標機是否處於連通狀態。通過使用“-sP”命令,進行ping掃描。缺省情況下,nmap給每個掃描到的主機發送一個ICMP echo和一個TCP ACK,主機對任何一種的響應都會被nmap得到,掃描速度非常快,在很短的時間內可以掃描一個很大的網絡。該命令使用如下所示:

[root@localhost ~]# nmap -sP 10.1.4.0/24
Nmap finished: 256 IP addresses (125 hosts up) scanned in 7.852 seconds

通過該掃描,可以發現該公司網絡中有125台主機是活躍的,也就是說有機可趁,下一步就是要進行更詳細的掃描,來掃描這些主機到底有些什麼活動端口。

(2)掃描實施第二步:掃描端口掃描
通常情況下,當nmap的使用者確定了網絡上運行的主機處於連通狀態,下一步的工作就是進行端口掃描,端口掃描使用-sT參數。如下面結果如示:
[root@localhost ~]# nmap -v  -sT 10.1.4.0/24
Host 10.1.4.11 appears to be up ... good.
Interesting ports on 10.1.4.11:
Not shown: 1673 closed ports
PORT     STATE    SERVICE
80/tcp   open     http
MAC Address: 00:1E:65:F0:78:CA (Unknown)

可以清楚地看到,端口掃描采用多種方式對網絡中主機的TCP活動端口進行了全面的掃描,由於掃描的主機數太多(125台),上面僅僅給出了2台主機的TCP端口情況,也就是主機10.1.4.1和10.1.4.11,並且,主機10.1.4.1打開的端口非常多,網絡服務也相對比較豐富,並且從IP地址的構成來看,該主機極有可能是網關(一般網關的IP地址設定為X.X.X.1),我們於是就鎖定了這台主機進行後續的掃描。

(3)掃描實施第三步:主機操作系統識別
通常一個入侵者可能對某個操作系統的漏洞很熟悉,能很輕易地進入此操作系統的機器。一個常見的選項是TCP/IP上的指紋,帶有"-O"選項決定遠程操作系統的類型。這可以和一個端口掃描結合使用,但不能和ping掃描結合使用。nmap通過向主機發送不同類型的探測信號,縮小查找的操作系統的范圍。如下面的掃描結果所示:

[root@localhost ~]# nmap -O 10.1.4.1
Interesting ports on 10.1.4.1:
。。。
MAC Address: 00:0B:CD:B9:EE:A8 (Compaq (HP))
Device type: general purpose
Running: Microsoft Windows 95/98/ME|NT/2K/XP
OS details: Microsoft Windows Millennium Edition (Me), Windows 2000 Professional or Advanced Server, or Windows XP
Nmap finished: 1 IP address (1 host up) scanned in 68.749 seconds

通過上述掃描結果可以看到,10.1.4.1這台機器運行的是Windows系列的操作系統,並且提供了一些比較常用的網絡服務。

(4)掃描實施第四步:掃描總結歸納
通過上述3步的掃描實施,可以逐步總結得出了如下幾點結論和經驗:

端口掃描的步驟是先發現活動主機,然後發現活動主機的活動端口,從而確定需要重點關注或者需要供給的主機,一般這些主機是服務端口開得多的主機;再然後對重點關注的主機實行操作系統掃描,從而確定操作系統類型,以便從操作系統層面來尋找突破口;一般情況下,如果是Windows操作系統的話,那麼就有比較大的攻擊或者是安全維護的空間。

除了上述幾個常用的掃描選項外,在掃描過程中還需要綜合采用其他-T之類的選項,以保證掃描不被對方發現,否則對於具有豐富管理經驗的管理員來說,很容易發現這種掃描行為,引起反追蹤甚至是報復性的攻擊等。當然,對於內網的網管性的維護工作來說,就沒有這個風險。

另外,通常nmap在運行時,能夠很好地根據網絡特點進行調整。掃描時,nmap會盡量減少被目標檢測到的機會,同時盡可能加快掃描速度。然而,nmap默認的適時策略有時候不太適合用戶的目標。使用下面這些選項,可以有效地控制nmap的掃描時間。

1)-T
設置nmap的掃描策略,主要有如下幾種:
Paranoid:為了避開IDS的檢測使掃描速度極慢,nmap串行所有的掃描,每隔至少5分鐘發送一個包;
Sneaky:和Paranoid差不多,只是數據包的發送間隔是15秒;
Polite:不增加太大的網絡負載,避免宕掉目標主機,串行每個探測,並且使每個探測有0.4 秒種的間隔;
Normal:nmap默認的選項,在不是網絡過載或者主機/端口丟失的情況下盡可能快速地掃描;
Aggressive:設置5分鐘的超時限制,使對每台主機的掃描時間不超過5分鐘,並且使對每次探測回應的等待時間不超過1.5秒鐘;
Insane:只適合快速的網絡或者用戶不在意丟失某些信息,每台主機的超時限制是75秒,對每次探測只等待0.3秒鐘。

用戶也可以使用數字來代替上述這些模式,例如:-T 0等於-T Paranoid,-T 5等於-T Insane。並且,上述這些模式不能和下面的選項組合使用。

2)--host_timeout
設置掃描一台主機的時間,以毫秒為單位。默認的情況下,沒有超時限制。

3)--max_rtt_timeout
設置對每次探測的等待時間,以毫秒為單位。如果超過這個時間限制就重傳或者超時。默認值是大約9000毫秒。

4)--min_rtt_timeout
當目標主機的響應很快時,nmap就縮短每次探測的超時時間。這樣會提高掃描的速度,但是可能丟失某些響應時間比較長的包。使用這個選項,可以讓nmap對每次探測至少等待用戶指定的時間,以毫秒為單位。

5)--initial_rtt_timeout
設置初始探測的超時值。一般這個選項只在使用-P0選項掃描有防火牆保護的主機才有用。默認值是6000毫秒。

6)--max_parallelism
設置最大的並行掃描數量。--max_parallelism 1表示同時只掃描一個端口。這個選項對其它的並行掃描也有效,例如ping sweep, RPC scan。

7)--scan_delay
設置在兩次探測之間,nmap必須等待的時間。這個選項主要用於降低網絡的負載。
Copyright © Linux教程網 All Rights Reserved