TCP/IP協議會導致互聯網服務產生以下威脅:
SYN泛洪攻擊:SYN泛洪攻擊發生在服務器接收到遠遠超出其處理能力的大量的請求時。正常情況下,主機之間使用TCP傳輸數據時必須通過三次握手(3-Way Handshake)來初始化連接,SYN泛洪攻擊原理是阻止TCP三次握手的完成。攻擊者向受攻擊主機發送SYN報文請求建立連接,報文中的源地址為偽造的、路由不可達地址。受攻擊主機向偽造的地址發送SYN/ACK回應請求,等待對方回應。與正常TCP連接不同的是,SYN泛洪攻擊阻止了三次握手最后過程的ACK包的發送,導致服務器端口一直處于半開狀態,每個TCP端口都有接收半開連接的上限值,當連接數達到這個上限值時,服務器不再接收連接請求,攻擊者的目的也就達到了。
IP欺騙:IP欺騙其實很簡單,攻擊者所需要做的就是產生一個源地址是偽造的IP數據包。這可以使用RAW-socket原始套接字來完成受攻擊主機沒有辦法判斷該數據包是否是偽造的,因為它僅僅是根據源地址來判斷除了IP欺騙外,攻擊者還要結合TCP序列號預測等技術來完成攻擊。
TCP序列號預測:TCP序列號預測利用TCP是基于序列號(SNO)傳輸數據的特性來攻擊TCP會話。TCP協議使用序列號保證應用層接收數據的完整性,雖然這是一種保證數據完整的有效方法,但是它同樣存在缺陷。如果攻擊者能猜測到正確的序列號,那么就能發出能被受攻擊主機接收的TCP偽造數據包。
TCP會話挾持:TCP會話挾持可以用于攻擊基于TCP協議的應用,如Telnet、rlogin、FTP等。對于攻擊者來說,要實施攻擊的前提是必須獲取受攻擊主機和欺騙主機之間的會話,從而獲得正確的TCP序列號。一旦攻擊者有了正確的TCP序列號,就可以成功的接管該會話。通常,TCP會話挾持用來接管一個Telnet會話,Telnet是非常容易受挾持的協議,它在客戶端和服務端傳輸簡單的字節流。攻擊者只要將他們的指令插入被挾持的TCP數據段,服務器就會把這個TCP段指令串重裝并執行。TCP會話挾持比其他的攻擊方法更有效,如嗅探密碼在使用高級認證技術的網絡中,密碼是經過加密的,嗅探攻擊并不起作用,而TCP會話挾持攻擊卻可以。因此,攻擊者更傾向于使用TCP挾持獲取系統權限。
RST和FIN攻擊:IP數據包有兩個特殊的標志位,RST和FIN,可用于拒絕服務攻擊。在正常情況下,RST標志用來重設連接,FIN標志表示沒有數據要發送。攻擊者分析通過目的主機和受騙主機之間的IP數據包,計算出從受騙主機發往目的主機的下一個TCP段的序列號,然后產生一個帶有RST位設置的TCP段,將其放在假冒源地址的數據包中發往目標主機,目標主機收到后就關閉與受騙主機的連接。利用FIN位的攻擊與RST位的攻擊很相似,攻擊者預測到正確的序列號后,使用它創建一個帶有FIN位的TCP分段,然后發送給目的主機,好像受騙主機沒有數據需要發送了,這樣由受騙主機隨后發出的TCP段就會因為目標主機認為是網絡錯誤而忽略。
Ping of DeathPing攻擊:程序通過發送一個ICMP回應請求消息和接收一個響應的ICMP回應來測試主機的連通性。ICMP回應請求放在IP數據包中,其中有8bytes的ICMP頭信息,然后是Ping請求的數據字節數。因此數據區所允許的最大尺寸為65535-20-8=65507bytes。分段后的IP包要在接收端的IP層進行重組,這樣就可以發送一個回應請求數據包,使它的數據包中的數據超過65507bytes,使得某些系統的IP分段組裝模塊出現異常,導致系統崩潰或重啟。
可以通過加固操作系統來減少TCPIP產生的威脅,操作方法如下:
端口和進程:網絡操作系統使用進程向外提供服務,減少無用軟件及服務的任務就是要在所有系統進程中找出多余進程。由于進程通過打開網絡端口向外提供服務,所以找出多余進程的最快方法是觀察進程及端口對應表。Netstat命令顯示協議統計和當前的TCP/IP網絡連接,該命令只有在安裝了TCP/IP協議后才可以使用。通過使用該命令可以列出一個系統上所有打開的TCP/IP網絡監聽端口。這些打開著的端口正是入侵者所要攻擊的,因為它們通向系統平臺內部。因此,作為平臺加固的一部分,用戶使用Netstat命令來識別出無關端口,并由此找到需要刪除或禁用的服務。
安裝系統補丁:所有軟件都有缺陷。為了修復這些錯誤,供應商會發布軟件補丁。如果沒有這些補丁,組織很容易遭受攻擊。在有很嚴格的更改控制策略的組織中,及時安裝補丁會是一個問題。對補丁的徹底測試是這個過程的關鍵部分,因為供應商在解決舊問題時,有可能會引入新的問題。而對于和安全缺陷無關的補丁來說沒有問題。但是,入侵者搜索和利用安全弱點的速度很快,所以要求有更快的安全補丁修正過程。企業必須注意安全補丁的發布,并隨時準備快速地使用它們。
用戶賬戶:用戶賬戶標識了需要訪問平臺資源的實體(無論是應用程序進程還是人)。操作系統通過權限和優先權將用戶賬戶與其訪問控制系統相關聯。因為用戶賬戶是合法進入系統的機制,所以入侵者常常試圖利用用戶賬戶管理和訪問控制中的缺陷。如果可以作為合法用戶輕松地登錄系統,那么為什么還要浪費時間去做自定義緩沖器溢出攻擊呢?用戶賬戶管理的弱點有5個方面:弱密碼、制造商默認的賬戶、基于角色的賬戶、公司默認賬戶,以及廢棄賬戶。在任何情況下,平臺加固的目標是將用戶賬戶數目減少到所需的絕對最小值。
用戶特權:為每一個用戶指派通常只能作為超級用戶運行的特定的應用程序和功能,而不是真正地使用超級用戶賬戶。也可以啟用詳細的日志記錄,使得可以根據任何運行于超級用戶功能追蹤到某個特定的用戶。在特定的應用中,意味著沒有人使用過超級用戶賬戶。
文件系統安全:通過在程序文件上設置SUID標志,某一個進程可以臨時提升其特權用以完成某項任務(例如,訪問文件passwd)。當程序執行時,可以暫時得到這些額外的特權而不用被全授予如此高的特權。這個SUID標志常常過度使用,當它與被黑客修改過的軟件包結合時,被修改的程序執行后會使某個用戶得到全時提升的系統權利。UNIX系統可能有很多帶有這個標志的組件,但是通常只需要它們中的一小部分。建議使用命令從整個系統中刪除不需要SUID標志程序的SUID標志。
遠程訪問的安全:Telnet和rlogin是UNIX系統上最常用的遠程訪問方式。這些系統都不采用加密技術來保護遠程訪問會話。一種被動的網絡監聽攻擊可以看到用戶在進入Telnet或者rlogin會話中按下的每一個鍵。安全Shell(SSH)是一種在UNIX及Window系統上使用的軟件包,它提供與Telnet和rlogin相同功能,但增加了加密會話功能。這個軟件包已經成為用加密和訪問控制的各種可配置級別進行安全遠程訪問的行業標準。