linux系統怎麼防止DDOS攻擊
用 squid是利用端口映射的功能,可以將80端口轉換一下,其實一般的DDOS攻擊可以修改/proc/sys/net/ipv4 /tcp_max_syn_backlog裡的參數就行了,默認參數一般都很小,設為8000以上,一般的DDOS攻擊就可以解決了。如果上升到 timeout階段,可以將/proc/sys/net/ipv4/tcp_fin_timeout設小點。
大家都在討論DDOS,個人認為目前沒有真正解決的方法,只是在緩衝和防禦能力上的擴充,跟黑客玩一個心理戰術,看誰堅持到最後,網上也有很多做法,例如syncookies等,就是複雜點。
sysctl-wnet.ipv4.icmp_echo_ignore_all=1
echo1>/proc/sys/net/ipv4/tcp_syncookies
sysctl-wnet.ipv4.tcp_max_syn_backlog="2048"
sysctl-wnet.ipv4.tcp_synack_retries="3"
iptables-AINPUT-ieth0-ptcp--syn-jsyn-flood
#Limit12connectionspersecond(burstto24)
iptables-Asyn-flood-mlimit--limit12/s--limit-burst24-jRETURN
這個地方可以試著該該:
iptbales-AFORWARD-ptcp--syn-mlimit--limit1/s-jACCEPT
虛擬主機服務商在運營過程中可能會受到黑客攻擊,常見的攻擊方式有 SYN,DDOS等。
通過更換IP,查找被攻擊的站點可能避開攻擊,但是中斷服務的時間比較長。比較徹底
的解決方法是添置硬件防火牆。不過,硬件防火牆價格比較昂貴。可以考慮利用Linux
系統本身提供的防火牆功能來防禦。
1.抵禦SYN
SYN攻擊是利用TCP/IP協議3次握手的原理,發送大量的建立連接的網絡包,但不實際
建立連接,最終導致被攻擊服務器的網絡隊列被佔滿,無法被正常用戶訪問。
Linux內核提供了若干SYN相關的配置,用命令:
sysctl-a|grepsyn
看到:
net.ipv4.tcp_max_syn_backlog=1024
net.ipv4.tcp_syncookies=0
net.ipv4.tcp_synack_retries=5
net.ipv4.tcp_syn_retries=5
tcp_max_syn_backlog是SYN隊列的長度,tcp_syncookies是一個開關,是否打開SYNCookie
功能,該功能可以防止部分SYN攻擊。tcp_synack_retries和 tcp_syn_retries定義SYN
的重試次數。
加大SYN隊列長度可以容納更多等待連接的網絡連接數,打開SYNCookie功能可以阻止部分
SYN攻擊,降低重試次數也有一定效果。
調整上述設置的方法是:
增加SYN隊列長度到2048:
sysctl-wnet.ipv4.tcp_max_syn_backlog=2048
打開SYNCOOKIE功能:
sysctl-wnet.ipv4.tcp_syncookies=1