在以太網標準協議中規定端口號為兩個字節的長度,共16個比特,這樣端口范圍可以從0到65535,端口號種類多達6萬多,其中1~1024是被RFC 3232規定好的,用于特定協議,從1025~65535的端口被稱為動態端口,可用來建立與其它主機的會話,也可由用戶自定義用途。在網絡通信過程中,目的主機接收到數據報后,將根據報文首部的目的端口號,把數據發送到相應端口,而與此端口相對應的那個進程將會領取數據并等待下一組數據的到來。不光接受數據報的進程需要開啟它自己的端口,發送數據報的進程也需要開啟端口,這樣,數據報中將會標識有源端口,以便接受方能順利的回傳數據報到這個端口。由于每種網絡的服務功能都不相同,有必要將不同的封包送給不同的服務來處理,端口號就可以用來區分不同的服務,這樣就算網絡中同時跑數十種應用也不會亂,每種應用所用的端口都是不同的。每一種服務都有特定的端口在監聽,這樣不同應用相互之間無法互訪,不會混亂。
端口可分為三類:從0到1023叫做公認端口。它們緊密綁定于一些服務,通常這些端口的通訊明確表明了屬于某種服務的協議。例如:53端口是DNS域名解析服務,80端口是HTTP超文本傳輸服務;從1024到49151叫做注冊端口。它們松散地綁定于一些服務,也就是說有許多服務綁定于這些端口,這些端口同樣用于許多其它目的。例如:許多系統處理動態端口從1024左右開始;從49152到65535叫做動態或私有端口。理論上,不應為服務分配這些端口,當然也有例外,比如SUN的一些服務器,還有搭建一些私有網絡時,使用這些端口號,實際上是因為沒有那么多已知的網絡服務需要這么多端口號,后面的端口號都是沒有明確定義的,誰都可以使用,但只能是私有使用,并不能得到廣泛認可。
之所以將端口技術拿出來講,最重要的是網絡安全問題,網絡安全已經成為數據中心里最受人關注的議題,針對數據中心的攻擊都來源于網絡。通常網絡攻擊者會用掃描器對目標主機或者網絡設備進行端口掃描,以確定哪些端口是開放的,從開放的端口,攻擊者就可以知道目標主機或網絡設備大致提供了哪些服務,進而猜測可能存在的漏洞。如今對數據中心網絡進行防攻擊測試,端口測試是一個必測項,看設備都開放了哪些端口,在沒有使能相關應用的情況下是否有端口服務是被打開的,數據中心設備應該盡可能少開啟端口服務,只有需要的應用對應的端口服務才開啟。而一些常用的FTP端口號、Telnet端口號、HTTP端口號也經常被作為攻擊的對象,這些協議雖然很成熟,少有系統漏洞,但一些設備防攻擊能力較弱,或者軟件版本較低,依然有被攻破的風險,對于這些端口也不能忽視。有些端口是比較容易入侵的,比如135、139、445等,135實際上是一個WINNT漏洞,容易引起來自外部的Snork攻擊,139是NetBIOS提供服務的TCP端口,445用來傳輸文件和NET遠程管理,一旦這些端口被攻擊者頂上,協議處理上有漏洞就很容易被攻破。還有一些端口本身處理是什么問題的,但是在收到大量該端口的報文時,系統可能癱瘓而受到攻擊,這時可能系統并不見得被攻破,而是被破壞,導致系統運轉異常。比較典型的就是TCP SYN掃描,通常又叫“半開放”掃描,因為它不必打開一個完整的TCP連接,它發送一個SYN包,就像真的要打開一個連接一樣,然后等待對端的反應。如果對端返回SYN/ACK報文則表示該端口處于監聽狀態,此時,掃描端則必須再返回一個RST報文來關閉此連接,返回RST報文則表示該端口沒有開放。TCP SYN會導致設備建立大量的半連接,占用大量系統資源,待系統徹底崩潰時,攻擊者趁虛而入,破壞或者偷走機密數據,TCP Connect掃描也是常用的掃描方式。
為防止數據中心網絡遭受到端口攻擊,應該經常檢查所有的設備端口開啟情況,關閉一些沒有必要開啟的端口服務。檢查的時候要仔細,經常有一些動態分配的端口也可能存在問題,這類端口一般比較低,且連續。還有,一些狡猾的后門軟件,他們會借用80等一些常見端口來進行通信(穿透了防火墻),令人防不勝防,所以不要輕易運行陌生程序,才是關鍵。在數據中心的網絡訪問入口應該部署一些安全防火墻設備,對端口協議進行過濾,沒有應用的端口報文全部丟棄,這不僅對網絡攻擊,對于正常的安全策略下發也有意義,比如眾所周知,QQ的端口號是8000,那么在涉及辦公網的數據中心網絡中,可以在網絡出入口防火墻設備上下發端口號8000 的Deny策略,這樣所有的QQ服務都無法使用。
數據中心協議端口技術不難,但是要完全掌握也絕非易事,尤其是能夠利用這些端口特性部署應用,還有有效應對各種端口攻擊,還需要不斷進行探索和學習,所以端口技術雖然可算是一個古老的技術,但依然不過時。