墨者安全分享:Linux系統怎麼抵禦SYN、DDOS功擊?

SYN功擊是現在最常見的DDoS功擊之一,這是一種利用TCP/IP協議3次握手的原理,發送大量的建立連接的網絡包,但不實際建立連接,最終導致被功擊服務器的網絡隊列被佔滿,無法被正常用戶訪問。Linux服務器在運營過程中遭到SYN,DDOS功擊時,最直接的方法就是接入墨者安全高防雲防禦或添置硬件防火牆。有些企業可能覺得成本太高,那也可以考慮利用Linux 系統本身提供的防火牆功能配置來防禦。

QQ截圖20180925102704.png


一、添加以下參數

QQ截圖20180925103610.png


二、參數詳解


1、net.ipv4.tcp_synack_retries = 0


表示迴應第二個握手包(SYN+ACK包)給客戶端IP後,如果收不到第三次握手包(ACK包)後,不進行重試,加快回收“半連接”,不要耗光資源。不修改這個參數,模擬×××,10秒後被×××的80端口即無法服務,機器難以ssh登錄; 用命令 netstat -na | grep SYN_RECV檢測“半連接”hold住180秒;


2、net.ipv4.tcp_syn_retries = 0


默認是5,當沒有收到服務器端的SYN+ACK包時,客戶端重發SYN握手包的次數;


3、net.ipv4.tcp_max_syn_backlog = 20480


半連接隊列長度,增加SYN隊列長度到20480:加大SYN隊列長度可以容納更多等待連接的網絡連接數,具體多少數值受限於內存;


4、fs.file-max = 819200


系統允許的文件句柄的最大數目,因爲連接需要佔用文件句柄;


5、net.core.somaxconn = 65536


用來應對突發的大併發connect請求;


6、net.core.wmem_max = 16777216


最大的TCP數據發送緩衝(字節);


7、net.core.netdev_max_backlog = 165536


網絡設備接收數據包的速度比內核處理這些包的速度快時,允許送到隊列的數據包的最大數目;


8、net.ipv4.ip_local_port_range = 10000 65535


本機主動連接其他機器時的端口分配範圍,比如說,在vdftpd主動模式會用到,如果只是開啓22端口,不會使用到net.ipv4.ip_local_port_range這個功能;


9、net.ipv4.tcp_syncookies = 1


表示開啓SYN Cookies,當出現半鏈接隊列溢出時啓用cookies來處理,調大半鏈接隊列,可防範少量SYN×××,默認爲0,改爲1開啓;


10、net.ipv4.tcp_tw_reuse = 1


表示開啓tcp連接重用,允許將TIME-WAIT sockets重新用於建立新的tcp連接,默認爲0,改爲1開啓;


11、net.ipv4.tcp_tw_recycle = 1


表示開啓tcp連接中TIME-WAIT sockets的快速回收,默認爲0,改爲1開啓;


12、net.ipv4.tcp_fin_timeout = 10


對於本端斷開的socket連接,tcp保持在FIN_WAIT_2狀態的時間。  


這些內核配置參數應該在每臺服務器上線之前配置好,可以有效的防禦小流量DDoS功擊。當遇到大流量DDoS洪水功擊時,還是要靠接入墨者安全高防雲防禦或添置硬件防火牆纔能有效防禦,企業可以根據自身實際情況來選擇合適的防禦方案。


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