時間:2017-07-04 來源:互聯網 瀏覽量:
今天給大家帶來linux如何檢測及防止DDOS攻擊的,linux檢測及防止DDOS攻擊的辦法,讓您輕鬆解決問題。
身為一個網站的站長,不僅要保證網站的流量提升,還要預防DDOS攻擊,那麼在Linux係統下要如何檢測DDOS攻擊呢?又該如何防止DDOS攻擊呢?這都是一門學問。
1、利用netstat 工具來檢測查看SYN連接
netstat -n -p -t
Active Internet connections (w/o servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 192.168.0.200:5050 192.168.0.38:48892 TIME_WAIT -
tcp 0 0 192.168.0.200:5050 192.168.0.38:36604 TIME_WAIT -
tcp 0 0 192.168.0.200:5050 192.168.0.38:52988 TIME_WAIT -
tcp 0 0 192.168.0.200:5050 192.168.0.38:38911 TIME_WAIT -
tcp 0 0 192.168.0.200:5050 192.168.0.38:58623 TIME_WAIT -
tcp 0 0 192.168.0.200:43690 192.168.0.200:61616 ESTABLISHED 10415/java
當然我上麵的都是正常連接。當然TIME_WAIT如果占比過多,肯定也是不正常的。(要麼受到了攻擊,要麼需要參數調優。)
而受到DDOS惡意攻擊的情況下會在係統中看到的,很多連接處於SYN_RECV狀態(在WINDOWS係統中是SYN_RECEIVED狀態)源IP地址都是隨機的,表明這是一種帶有IP欺騙的SYN攻擊。
tcp 0 10.11.11.11:23 124.173.152.8:25882 SYN_RECV-
tcp 0 10.11.11.11:23 236.15.133.204:2577 SYN_RECV-
tcp 0 10.11.11.11:23 127.160.6.129:51748 SYN_RECV-
具體主機的端口狀態有以下幾種:
CLOSED:無連接是活動的或正在進行
LISTEN:服務器在等待進入呼叫
SYN_RECV:一個連接請求已經到達,等待確認
SYN_SENT:應用已經開始,打開一個連接
ESTABLISHED:正常數據傳輸狀態
FIN_WAIT1:應用說它已經完成
FIN_WAIT2:另一邊已同意釋放
ITMED_WAIT:等待所有分組死掉
CLOSING:兩邊同時嚐試關閉
TIME_WAIT:另一邊已初始化一個釋放
LAST_ACK:等待所有分組死掉
稍微更詳細的說明可以看下百度百科上對ESTABLISHED狀態的解釋及延伸。
具體SYN_RECV狀態的統計比較多,我這裏介紹兩種腳本的寫法:
netstat -an | awk ‘/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}’
上麵的腳本會列出所有狀態的連接數。
netstat -n -p -t | grep SYN_RECV | grep :80 | wc -l
當然,上麵80是特指web站點受到DDOS攻擊。
2、LINUX下DDOS SYN攻擊的防範
防範也主要從兩方麵入手,一是sysctl的自身的關於syn方麵的配置,二是防火牆策略上。
sysctl -w net.ipv4.tcp_syncookies=1 # tcp syncookie,默認關閉
sysctl -w net.ipv4.tcp_max_syn_backlog=1280 # syn隊列,默認1024,》 1280可能工作不穩定,需要修改內核源碼參數
sysctl -w net.ipv4.tcp_synack_retries=2 # syn-ack握手狀態重試次數,默認5,遭受syn-flood攻擊時改為1或2
sysctl -w net.ipv4.tcp_syn_retries=2 # 外向syn握手重試次數,默認4
以上四處是網上經常提到的幾個地方,當然還有未提到的也可以通過下列命令查看。
[root@web3 nginx]# sysctl -a|grep syn
net.ipv4.netfilter.ip_conntrack_tcp_timeout_syn_recv = 60
net.ipv4.netfilter.ip_conntrack_tcp_timeout_syn_sent = 120
net.ipv4.tcp_max_syn_backlog = 1024
net.ipv4.tcp_syncookies = 1
net.ipv4.tcp_synack_retries = 5
net.ipv4.tcp_syn_retries = 5
fs.quota.syncs = 25
如未受到攻擊,上麵的參數不建議修改。據說有增加主機的不穩定性的風險。
以上就是linux如何檢測及防止DDOS攻擊的,linux檢測及防止DDOS攻擊的辦法教程,希望本文中能幫您解決問題。