SYN flooding引發的網路故障

2021-07-10 03:14:25 字數 2834 閱讀 1139

1.應用無法通過外網訪問,應用伺服器所在的內網網段之間(web和db資料庫之間訪問丟包嚴重)不能互相訪問

其他網段正常

2.懷疑是網路裝置問題,將連線該網段裝置的交換機重啟後故障依舊,通過檢視個埠的ip報文資料

發現28號口疑似出現環路現象,接收input資料大大超出傳送output資料

28號口連線的是oa伺服器,oa伺服器是一台放在centos6.3下的apache web伺服器

懷疑連線該伺服器端口或者網線有問題,更換網線和交換機介面後問題依舊

3.拔掉該機器的網線後發現內網恢復正常,問題出在oa伺服器上

但單台伺服器引起類似環路問題令人費解

4.重啟伺服器後內網恢復正常

5.通過檢視該oa伺服器的日誌/ var/log/messages 發現了部分報錯日誌:

可能是遭到了syn flood流量惡意訪問

***********************************====

syn flood是當前最流行的dos(拒絕服務攻擊)與ddos(分布式拒絕服務攻擊)的方式之一,這是一種利用tcp協議缺陷,傳送大量偽造的tcp連線請求,常用假冒的ip或ip號段發來海量的請求連線的第乙個握手包(syn包),被攻擊伺服器回應第二個握手包(syn+ack包),因為對方是假冒ip,對方永遠收不到包且不會回應第三個握手包。導致被攻擊伺服器保持大量syn_recv狀態的「半連線」,並且會重試預設5次回應第二個握手包,塞滿tcp等待連線佇列,資源耗盡(cpu滿負荷或記憶體不足),讓正常的業務請求連線不進來。

syn攻擊是最常見又最容易被利用的一種攻擊手法,也應該算為ddos攻擊的一種,我們都知道,tcp協議有乙個缺陷,華三交換機是經過三次握手後面需要等待確認,傳送很多這樣的連線通訊資料報請求華三交換機,使得cpu資源和記憶體被耗盡,syn攻擊不但影響著網速和路由器,還對主機本身也產生影響,這種攻擊威力強大,不管對方是什麼系統,只要這些系統開啟了tcp這個埠服務華三交換機就可以進行攻擊。如果在配合ip欺騙,這種攻擊方式會達到非常好的效果。

此次處攻擊的物件為oa伺服器由兩台centos組成,oa系統本身沒有什麼大的影響,通過內網可以繼續訪問。流量同時打在了連線oa系統的交換機上,該交換機效能較差,導致同網段的windows伺服器如tomcat web服務和sqlserver資料庫伺服器收到牽連掉包驗證而不能正常提供服務,可能是windows伺服器對網路的要求比較高,此時應該更換交換機

檢查系統syslog:

# tail -f /var/log/messages

feb 23 09:48:15 localhost kernel: possible syn flooding on port 8888. sending cookies

檢查連線數增多,並且syn_recv 連線特別多:

# netstat -n | awk '/^tcp/ end '

time_wait 16855

close_wait 21

syn_sent 99

fin_wait1 229

fin_wait2 113

established 8358

syn_recv 48965

closing 3

last_ack 313

根據經驗,正常時檢查連線數如下: 

# netstat -n | awk '/^tcp/ end '

time_wait 612

close_wait 2

fin_wait1 3

fin_wait2 535

established 257

syn_recv 4

應急處理

根據netstat檢視到的對方ip特徵:

# netstat -na |grep syn_recv|more

利用iptables臨時封掉最大嫌疑攻擊的ip或ip號段,例如對方假冒173.*.*.*號段來攻擊,短期禁用173.*.*.*這個大號段(要確認小心不要封掉自己的本地ip了!)

# iptables -a input -s  173.0.0.0/8  -p tcp  –dport 80 -j drop

再分析剛才保留的罪證,分析業務,用iptables解封正常173.*.*.*號段內正常的ip和子網段。這樣應急處理很容易誤傷,甚至可能因為封錯了導致ssh登陸不了伺服器,並不是理想方式。

tcp_synack_retries = 0是關鍵,表示回應第二個握手包(syn+ack包)給客戶端ip後,如果收不到第三次握手包(ack包)後,不進行重試,加快**「半連線」,不要耗光資源。

總結:對於syn flood攻擊,調整下面三個引數就可以防範絕大部分的攻擊了。

增大tcp_max_syn_backlog  /proc/sys/net/ipv4目錄下tcp_max_syn_backlog檔案

減小tcp_synack_retries   /proc/sys/net/ipv4目錄下tcp_synack_retries

啟用tcp_syncookies

現在的核心預設都是開啟tcp_syncookies的

可以統一通過調整 /etc/sysctl.conf 檔案來調整三個引數:

使配置生效:

# sysctl -p

SCTP防止SYN Flooding攻擊的原理

1.tcp中的 syn flooding 攻擊原理 要明白這種攻擊的基本原理,還是要從 tcp連線建立的過程開始說起。由於 tcp基於連線的,為了在服務端和客戶端之間傳送 tcp資料,必須先建立乙個虛擬電路,也就是 tcp連線,建立 tcp連線的過程也就是我們熟悉的 三次握手 過程 首先,請求端 客...

從一次遠端ip連線docker引發的計網複習

上一次認真學習計網還是去年春招找實習2333,現在回頭複習一下,看了幾本書,部落格,感覺又有了新的學習心得。最近買了丐版阿里雲伺服器,在本地寫畢設,做完一部分想發到阿里雲上部署瞅瞅。通過idea docker外掛程式連線阿里雲上的docker,驚呼竟然可以通過公網ip直接連線 在這之前樓主都是以為只...

馬雲網商大會發言引發的6點思考

從事網際網路工作,也是受馬雲的影響。他帶給我們的是一種精神,永不放棄,執著追求自己的理想的精神。每次聽他演講,都會去反思自己,這次也不例外,反覆聽了多次,有些話語,讓我產生了共鳴!摘出一些對草根站長有思考性的論點,闡述我對 發展的一些思索!1 市場才能決定未來 引言 你要聽消費mcrahlqwsw者...