計算機端口

說到端口,這確實是個老話題,但一切都是從它開始的,不得不說。何謂端口,打個比方,你住在一座房子裏,想讓別人來拜訪你,得在房子上開個大門,你養了個可愛的小貓,爲了它的進出,專門給它修了個小門,爲了到後花園,又開了個後門……所有這些爲了進到這所房子裏而開的門叫端口,這些爲了別人進來而開的端口稱它爲“服務端口”。

你要拜訪一個叫張三的人,張三家應該開了個允許你來的門--服務端口,否則將被拒之門外。去時,首先你在家開個“門”,然後通過這個“門”徑直走進張三家的大門。爲了訪問別人而在自己的房子開的“門”,稱爲“客戶端口”。它是隨機開的而且是主動打開的,訪問完就自行關閉了。它和服務端口性質是不一樣的,服務端口是開了個門等着別人來訪問,而客戶端口是主動打開一個門去打開別人的門,這點一定要清楚。

下面從專業的角度再簡單解釋一下端口的概念。聯網的計算機要能相互通信必須用同一種協議,協議就是計算機通信的語言,計算機之間必須說一種語言才能彼此通信,Internet的通用語言是TCP/TP,它是一組協議,它規定在網絡的第四層運輸層有兩種協議TCP、UDP。端口就是這兩個協議打開的,端口分爲源端口和目的端口,源端口是本機打開的,目的端口是正在和本機通信的另一臺計算機的端口,源端口分主動打開的客戶端口和被動連接的服務端口兩種。在Internet中,你訪問一個網站時就是在本機開個端口去連網站服務器的一個端口,別人訪問你時也是如此。也就是說計算機的通訊就像互相串門一樣,從這個門走進哪個門。

當裝好系統後默認就開了很多“服務端口”。如何知道自己的計算機系統開了那些端口呢?這就是下面要說的。

二)、查看端口的方法

1、命令方式

下面以Windows XP爲例看看新安裝的系統都開了那些端口,也就是說都預留了那些門,不借助任何工具來查看端口的命令是netstat,方法如下:

a、在“開始”的“運行”處鍵入cmd,回車

b、在dos命令界面,鍵入netstat -na,圖2顯示的就是打開的服務端口,其中Proto

代表協議,該圖中可以看出有TCP和UDP兩種協議。Local Address代表本機地址,該地址冒號後的數字就是開放的端口號。Foreign Address代表遠程地址,如果和其它機器正在通信,顯示的就是對方的地址,State代表狀態,顯示的LISTENING表示處於偵聽狀態,就是說該端口是開放的,等待連接,但還沒有被連接。就像你房子的門已經敞開了,但此時還沒有人進來。以第一行爲例看看它的意思。

TCP 0.0.0.0:135 0.0.0.0:0 LISTENING

這一行的意思是本機的135端口正在等待連接。注意:只有TCP協議的服務端口才能處於LISTENING狀態。



圖1 用netstat命令查看端口狀態

2、用TCPView工具

爲了更好的分析端口,最好用TCPView這個軟件,該軟件很小隻有93KB,而且是個綠色軟件,不用安裝。

圖3是TCPView的運行界面。第一次顯示時字體有些小,在“Options”->“Font”中將字號調大即可。TCPView顯示的數據是動態的。圖3中Local Address顯示的就是本機開放的哪個端口(:號後面的數字),TCPView可以看出哪個端口是由哪個程序發起的。從圖3可以看出445、139、1025、135、5000等端口是開放的,445、139等端口都是system發起的,135等都是SVCHOST發起的。



圖2 用TCPView查看端口狀態

三)、研究端口的目的

1、知道本機開了那些端口,也就是可以進入到本機的“門”有幾個,都是誰開的?

2、目前本機的端口處於什麼狀態,是等待連接還是已經連接,如果是已經連接那就要特別注意看連接是個正常連接還是非正常連接(***等)?

3、目前本機是不是正在和其它計算機交換數據,是正常的程序防問到一個正常網站還是訪問到一個陷阱?

當你上網時就是本機和其它機器傳遞數據的過程,要傳遞數據必須要用到端口,即使是有些非常高明的***利用正常的端口傳送數據也不是了無痕跡的,數據在開始傳輸、正在傳輸和結束傳輸的不同階段都有各自的狀態,要想搞明白上述3個問題,就必須清楚端口的狀態變化。下面結合實例先分析服務端口的狀態變化。只有TCP協議纔有狀態,UDP協議是不可靠傳輸,是沒有狀態的。

四)、服務端口的狀態變化

先在本機(IP地址爲:192.168.1.10)配置FTP服務,然後在其它計算機(IP地址爲:192.168.1.1)訪問FTP服務,從TCPView看看端口的狀態變化。

下面黑體字顯示的是從TCPView中截取的部分。

1、LISTENING狀態

FTP服務啓動後首先處於偵聽(LISTENING)狀態。

State顯示是LISTENING時表示處於偵聽狀態,就是說該端口是開放的,等待連接,但還沒有被連接。就像你房子的門已經敞開的,但還沒有人進來。

從TCPView可以看出本機開放FTP的情況。它的意思是:程序inetinfo.exe開放了21端口,FTP默認的端口爲21,可見在本機開放了FTP服務。目前正處於偵聽狀態。

inetinfo.exe:1260 TCP 0.0.0.0:21 0.0.0.0:0 LISTENING

2、ESTABLISHED狀態

現在從192.168.1.1這臺計算機訪問一下192.168.1.10的FTP服務。在本機的TCPView可以看出端口狀態變爲ESTABLISHED。

ESTABLISHED的意思是建立連接。表示兩臺機器正在通信。

下面顯示的是本機的FTP服務正在被192.168.1.1這臺計算機訪問。

inetinfo.exe:1260 TCP 192.168.1.10:21 192.168.1.1:3009 ESTABLISHED

注意:處於ESTABLISHED狀態的連接一定要格外注意,因爲它也許不是個正常連接。後面要講到這個問題。

3、 TIME_WAIT狀態

現在從192.168.1.1這臺計算機結束訪問192.168.1.10的FTP服務。在本機的TCPView可以看出端口狀態變爲TIME_WAIT。

TIME_WAIT的意思是結束了這次連接。說明21端口曾經有過訪問,但訪問結束了。

[System Process]:0 TCP 192.168.1.10:21 192.168.1.1:3009 TIME_WAIT

4、小技巧

a、可以telnet一個開放的端口,來觀察該端口的變化。比如看1025端口是開放的,在命令狀態(如圖1運行cmd)運行:

telnet 192.168.1.10 1025

b、從本機也可以測試,只不過顯示的是本機連本機

c、在Tcpview中雙擊連接可看出程序的位置,右鍵點擊該連接,選擇End Process即可結束該連接

五)、客戶端口的狀態變化

客戶端口實際上就是從本機訪問其它計算機服務時打開的源端口,最多的應用是上網,下面就以訪問baidu.com爲例來看看端口開放以及狀態的變化情況。

1、SYN_SENT狀態

SYN_SENT狀態表示請求連接,當你要訪問其它的計算機的服務時首先要發個同步信號給該端口,此時狀態爲SYN_SENT,如果連接成功了就變爲ESTABLISHED,此時SYN_SENT狀態非常短暫。但如果發現SYN_SENT非常多且在向不同的機器發出,那你的機器可能中了衝擊波或震盪波之類的病毒了。這類病毒爲了感染別的計算機,它就要掃描別的計算機,在掃描的過程中對每個要掃描的計算機都要發出了同步請求,這也是出現許多SYN_SENT的原因。

下面顯示的是本機連接baidu.com網站時的開始狀態,如果你的網絡正常的,那很快就變爲ESTABLISHED的連接狀態。

IEXPLORE.EXE:2928 TCP 192.168.1.10:1035 202.108.250.249:80 SYN_SENT

2、ESTABLISHED狀態

下面顯示的是本機正在訪問baidu.com網站。如果你訪問的網站有許多內容比如訪問www.yesky.com,那會發現一個地址有許多ESTABLISHED,這是正常的,網站中的每個內容比如圖片、flash等都要單獨建立一個連接。看ESTABLISHED狀態時一定要注意是不是IEXPLORE.EXE程序(IE)發起的連接,如果是EXPLORE.EXE之類的程序發起的連接,那也許是你的計算機中了***了。

IEXPLORE.EXE:3120 TCP 192.168.1.10:1045 202.108.250.249:80 ESTABLISHED

3、TIME_WAIT狀態

如果瀏覽網頁完畢,那就變爲TIME_WAIT狀態。

[System Process]:0 TCP 192.168.1.10:4259 202.108.250.249:80 TIME_WAIT

六)、端口詳細變遷圖

以上是最主要的幾個狀態,實際還有一些,圖4是TCP的狀態詳細變遷圖(從TCP/IP詳解中剪來),用粗的實線箭頭表示正常的客戶端狀態變遷,用粗的虛線箭頭表示正常的服務器狀態變遷。這些不在本文的討論範圍。有興趣的朋友可以好好研究一下。



圖3 TCP的狀態變遷圖

七)、要點

一般用戶一定要熟悉(再囉嗦幾句):

1、服務端口重點要看的是LISTENING狀態和ESTABLISHED狀態,LISTENING是本機開了哪些端口,ESTABLISHED是誰在訪問你的機器,從哪個地址訪問的。

2、客戶端口的SYN_SENT狀態和ESTABLISHED狀態,SYN_SENT是本機向其它計算機發出的連接請求,一般這個狀態存在的時間很短,但如果本機發出了很多SYN_SENT,那可能就是中毒了。看ESTABLISHED狀態是要發現本機正在和哪個機器傳送數據,主要看是不是一個正常程序發起的。

二、***

什麼是***,簡單的說就是在未經你許可偷偷在你的計算機中開個後門,***開後門主要有兩種方式。

1、有服務端口的***

這類***都要開個服務端口的後門,成功後該後門處於LISTENING狀態,它的端口號可能固定一個數,也可能變化,還有的***可以與正常的端口合用,例如你開着正常的80端口(WEB服務),***也用80端口。這種***最大的特點就是有端口處於LISTENING狀態,需要遠程計算機連接它。這種***對一般用戶比較好防範,將防火牆設爲拒絕從外到內的連接即可。比較難防範的是反彈型***。

2、反彈型***

反彈型***是從內向外的連接,它可以有效的穿透防火牆,而且即使你使用的是內網IP,他一樣也能訪問你的計算機。這種***的原理是服務端主動連接客戶端(***)地址。***的服務端軟件就像你的Internet Explorer一樣,使用動態分配端口去連接客戶端的某一端口,通常是常用端口,像端口80。而且會使用隱避性較強的文件名,像iexpiore.exe、explorer(IE的程序是IEXPLORE.EXE)。如果你不仔細看,你可能會以爲是你的Internet Explorer。這樣你的防火牆也會被騙過。如果你在TcpView中看到下面這樣的連接一定要注意,很有可能是種***了。 iexpiore.exe 192.168.1.10(本機IP):1035(你的端口) Y.Y.Y.Y(遠程IP):80(遠程端口)

或 Rundll32.exe 192.168.1.10(本機IP):1035(你的端口) Y.Y.Y.Y(遠程IP):80(遠程端口)

或 explorer.exe 192.168.1.10(本機IP):1035(你的端口) Y.Y.Y.Y(遠程IP):80(遠程端口)

三、安全

分析端口的目的就是要保證上網安全,根據以上的思路可以從以下幾個方面來防範。

一)、關閉不需要的端口

對一般上網用戶來說只要能訪問Internet就行了,並不需要別人來訪問你,也就是說沒有必要開放服務端口,在WIN 98可以做到不開放任何服務端口上網,但在Win XP、Win 2000、Win 2003下不行,但可以關閉不必要的端口。圖3是安裝完WIN XP系統默認開的端口,以此爲例關閉不必要的端口。

1、關閉137、138、139、445端口

這幾個端口都是爲共享而開的,是NetBios協議的應用,一般上網用戶是不需要別人來共享你的內容的,而且也是漏洞最多的端口。關閉的方法很多,最近從網上學了一招非常好用,一次全部關閉上述端口。

開始-> 控制面板-> 系統-> 硬件-> 設備管理器-> 查看-> 顯示隱藏的設備-> 非即插即用驅動程序-> Netbios over Tcpip。

找到圖5界面後禁用該設備重新啓動後即可。



圖4 關閉137、138、139、445端口

2、關閉123端口

有些蠕蟲病毒可利用UDP 123端口,關閉的方法:如圖6停止windows time服務。



圖5 關閉123端口

3、關閉1900端口

***者只要向某個擁有多臺Win XP系統的網絡發送一個虛假的UDP包,就可能會造成這些Win XP主機對指定的主機進行***(DDoS)。另外如果向該系統1900端口發送一個UDP包,令"Location"域的地址指向另一系統的chargen端口,就有可能使系統陷入一個死循環,消耗掉系統的所有資源(需要安裝硬件時需手動開啓)。

關閉1900端口的方法如圖7所示——停止SSDP Discovery Service 服務。



圖6 關閉1900端口

通過上面的辦法關閉了一些有漏洞的或不用的端口後是不是就沒問題了呢?不是。因爲有些端口是不能關掉的。像135端口,它是RPC服務打開的端口如果把這個服務停掉,那計算機就關機了,同樣像Lsass打開的端口500和4500也不能關閉。衝擊波病毒利用的就是135端口,對於不能關閉的端口最好的辦法一是常打補丁,端口都是相應的服務打開的,但是對於一般用戶很難判斷這些服務到底有什麼用途,也很難找到停止哪些服務就能關閉相應的端口。最好的辦法就是下面要講的安裝防火牆。安裝防火牆的作用通俗的說就像你不管住在一所結實的好房子裏還是住在一所千瘡百孔的破房子裏,只要你在房子的四周建了一堵密不透風的牆,那對於牆裏的房子就是安全的。

二)、安裝防火牆

對於一般用戶來講有下面三類防火牆

1、 自帶的防火牆

關於Win XP 與Win 2003自帶防火牆的設置請參閱天極網中拙作,不再贅述。

2、ADSL貓防火牆

通過ADSL上網的,如果有條件最好將ADSL貓設置爲地址轉換方式(NAT),也就是大家常說的路由模式,其實路由與NAT是不一樣的,權且這麼叫吧。用NAT方式最大的好處是設置完畢後,ADSL貓就是一個放火牆,它一般只開放80、21、161等爲了對ADSL貓進行設置開放的端口。如果不做端口映射的話,一般從遠程是***不到ADSL貓後面的計算機的。ADSL貓最大的安全隱患就是很多用戶都不改變默認密碼。這樣***如果進到你的貓做個端口映射就有可能進入到你的計算機,一定把默認密碼改掉。

用自帶的放火牆和ADSL貓的NAT方式基本可以抵禦從外到內的***,也就是說即使服務端口開放(包括系統開放的端口和中了開個服務端口的***),***和類似震盪波一類的病毒也奈何不了你的計算機。上述防火牆只能防止從外到內的連接,不能防止從內到外的連接,當你打開網頁和用QQ聊天時就是從內到外的連接,反彈型***就是利用放火牆的這一特性來盜取你機器的數據的。反彈型***雖然十分隱蔽,但也不是沒有馬腳,防範這類***最好的辦法就是用第三方防火牆。

3、第三方防火牆

前面說過,反彈型***而且會使用隱避性較強的文件名,像iexpiore.exe、explorer等與IE的程序IEXPLORE.EXE很想的名字或用一些rundll32之類的好像是系統文件的名字,但***的本質就是要與遠程的計算機通訊,只要通訊就會有連接。如下所示:正常連接是IEXPLORE.EXE發起的,而非正常連接是***程序explorer發起的。



圖7 正常連接



圖8 ***連接

一般的防火牆都有應用程序訪問網絡的權限設置,如圖8所示,在防火牆的這類選項中將不允許訪問網絡的應用程序選擇X,即不允許訪問網絡。

在寫這篇文章之前筆者中了一個反彈型***,就是explorer程序向外連接,用了好幾個查毒軟件也沒有殺掉,當時就先用天網放火牆阻止它訪問網絡,然後手工費了很大的勁才清除掉。可惜沒有做截圖。沒有勇氣爲了寫這篇文章再犧牲一把了。

4、用Tcpview結束一個連接

當你用Tcpview觀察哪個連接有可能是不正常的連接,可在Tcpview中直接鼠標右鍵點擊該連接,選擇End Process即可結束該連接。

四、掃描

談起掃描又是個大話題了,有端口掃描(Superscan)、漏洞掃描(X-scan)等,關於掃描的話題以後再論,本文只對一般用戶簡單說一下在線安全檢測。如果你按上面的說得作了相應的安全措施,就可以在網上找個在線測試安全的網站測試一下你目前系統的安全情況,如到下面網站:

1、千禧在線--在線檢測

2、藍盾在線檢測

3、天網安全在線

4、諾頓在線安全檢測

說明一點,測試機器時開了21、23、80端口,但這都是ADSL的服務端口,MODEM沒有提供修改和關閉的地方,不過沒關係,只要把密碼設的複雜點就行了。

五、震盪波

如果你按上述關閉了445端口或者開啓了放火牆那就不會受到震盪波及類似的病毒騷擾了,關於震盪波病毒的文章太多了,此處就不多談。只要做好了安全防護,不管是震盪大波還是衝擊小波只能在你的計算機門前掠過而奈何不了你。

六、後記

關於計算機的安全還有很多要設置,但對於一般用戶來說,太多的安全設置就等於沒有了安全,因爲即使對於專業從事計算機安全的人員對於安全的設置也不是件容易的事,何況對於對計算機的知識還不夠的一般用戶。如果要作很多設置才能保證安全,那肯定就有很多人不做了。對一般用戶個人的建議是力所能及的事一定要做,比如:

1、上網時一定要安裝防病毒軟件並及時升級。

2、至少安裝一個防火牆,ADSL用戶最好用路由方式上網,改掉默認密碼。

3、經常打補丁,Windows用戶最好將系統設爲自動升級。

4、自己要做的就是用Tcpview 常常看看連接,防止反彈型***。常常看看,時間長了也許就看成專家了。

5、Udp協議是不可靠傳輸,沒有狀態,從Tcpview中很難看出它是不是在傳輸數據,感興趣的朋友可以用iris、sniffer這類的協議分析工具看看是不是有Udp的數據。關於這個話題以後再聊。

6、本文題目起的很大,但寫起來又覺得很多問題都是別人說了再說的,也就沒有深談。

道高一尺,魔高一丈。網絡安全將是一個永恆的話題,沒有絕對的安全,但有了防範意識總比敞開了大門還不知道好吧。

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章