李景山php syn flood 攻擊防禦方案

2021-08-01 12:40:21 字數 1405 閱讀 2934

前文描述過,syn flood攻擊大量消耗伺服器的cpu、記憶體資源,並佔滿syn等待佇列。相應的,我們修改核心引數即可有效緩解。主要引數如下:

net.ipv4.tcp_syncookies = 1

net.ipv4.tcp_max_syn_backlog = 8192

net.ipv4.tcp_synack_retries = 2

分別為啟用syn cookie、設定syn最大佇列長度以及設定syn+ack最大重試次數。

syn cookie的作用是緩解伺服器資源壓力。啟用之前,伺服器在接到syn資料報後,立即分配儲存空間,並隨機化乙個數字作為syn號傳送syn+ack資料報。然後儲存連線的狀態資訊等待客戶端確認。啟用syn cookie之後,伺服器不再分配儲存空間,而且通過基於時間種子的隨機數演算法設定乙個syn號,替代完全隨機的syn號。傳送完syn+ack確認報文之後,清空資源不儲存任何狀態資訊。直到伺服器接到客戶端的最終ack包,通過cookie檢驗演算法鑑定是否與發出去的syn+ack報文序列號匹配,匹配則通過完成握手,失敗則丟棄。當然,前文的高階攻擊中有syn混合ack的攻擊方法,則是對此種防禦方法的反擊,其中優劣由雙方的硬體配置決定

tcp_max_syn_backlog則是使用伺服器的記憶體資源,換取更大的等待佇列長度,讓攻擊資料報不至於佔滿所有連線而導致正常使用者無法完成握手。net.ipv4.tcp_synack_retries是降低伺服器syn+ack報文重試次數,盡快釋放等待資源。這三種措施與攻擊的三種危害一一對應,完完全全地對症下藥。但這些措施也是雙刃劍,可能消耗伺服器更多的記憶體資源,甚至影響正常使用者建立tcp連線,需要評估伺服器硬體資源和攻擊大小謹慎設定。

除了定製tcp/ip協議棧之外,還有一種常見做法是tcp首包丟棄方案,利用tcp協議的重傳機制識別正常使用者和攻擊報文。當防禦裝置接到乙個ip位址的syn報文後,簡單比對該ip是否存在於白名單中,存在則**到後端。如不存在於白名單中,檢查是否是該ip在一定時間段內的首次syn報文,不是則檢查是否重傳報文,是重傳則**並加入白名單,不是則丟棄並加入黑名單。是首次syn報文則丟棄並等待一段時間以試圖接受該ip的syn重傳報文,等待超時則判定為攻擊報文加入黑名單。

首包丟棄方案對使用者體驗會略有影響,因為丟棄首包重傳會增大業務的響應時間,有鑑於此發展出了一種更優的tcp proxy方案。所有的syn資料報文由清洗裝置接受,按照syn cookie方案處理。和裝置成功建立了tcp三次握手的ip位址被判定為合法使用者加入白名單,由裝置偽裝真實客戶端ip位址再與真實伺服器完成三次握手,隨後**資料。而指定時間內沒有和裝置完成三次握手的ip位址,被判定為惡意ip位址遮蔽一定時間。除了syn cookie結合tcp proxy外,清洗裝置還具備多種畸形tcp標誌位資料報探測的能力,通過對syn報文返回非預期應答測試客戶端反應的方式來鑑別正常訪問和惡意行為。

清洗裝置的硬體具有特殊的網路處理器晶元和特別優化的作業系統、tcp/ip協議棧,可以處理非常巨大的流量和syn佇列

李景山php XSS攻擊

xss css cross site scripting,跨站指令碼。跨 主要是因為遠端或者是第三方域上的指令碼資源。例子 eval location.hash substr 1 net test xss.html alert no 型別 反射型,儲存型,dom xss 反射型 echo get x...

李景山php mysql 配置優化

今天我們不討論其它優化,就就配置上,講講mysql的優化,看看怎麼處理更好。最好是固態硬碟。注意 此處說明的my.cnf可能根據不同的配置位置顯示情況不一樣。檢視當前最大連線數 show variables like max connections 檢視最大響應連線數 show status lik...

李景山php Linux課程 vim

基本介紹 vim是vi的擴充套件,被譽為終端編輯器之神 軟體安裝 yum install y vim 工作模式 1 正常模式 0 使用格式說明 vim filename 若檔案已存在,則直接開啟 若檔案不存在,則會新建,若不修改則不會建立空檔案 1 主要用來瀏覽或修改文字內容 2 使用vim開啟檔案...