SYN flooding引發的網路故障
故障現象:
1.應用無法通過外網訪問,應用伺服器所在的內網網段之間(web和db資料庫之間訪問丟包嚴重)不能互相訪問其他網段正常
2.懷疑是網路裝置問題,將連線該網段裝置的交換機重啟後故障依舊,通過檢視個埠的IP報文資料
發現28號口疑似出現環路現象,接收INPUT資料大大超出傳送OUTPUT資料
28號口連線的是OA伺服器,OA伺服器是一臺放在centos6.3下的apache web伺服器
懷疑連線該伺服器埠或者網線有問題,更換網線和交換機介面後問題依舊
3.拔掉該機器的網線後發現內網恢復正常,問題出在OA伺服器上
但單臺伺服器引起類似環路問題令人費解
4.重啟伺服器後內網恢復正常
5.通過檢視該OA伺服器的日誌/ var/log/messages 發現了部分報錯日誌:
localhost kernel: possible SYN flooding on port 8888. Sending cookies
可能是遭到了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/ {++S[$NF]} END {for(a in S) print a, S[a]}'
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/ {++S[$NF]} END {for(a in S) print a, S[a]}'
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 檔案來調整三個引數:
net.ipv4.tcp_max_syn_backlog = 4096
net.ipv4.tcp_syn_retries = 2
使配置生效:
# sysctl -p
相關文章
- 當MySQL資料庫遇到Syn FloodingMySql資料庫
- 網路故障排除工具 | 快速定位網路故障
- 從網路發展看無線網路故障排查需求
- remote_listener引發的故障分析REM
- 【故障公告】資料庫伺服器 CPU 100% 引發網站故障資料庫伺服器網站
- 一個歷時三年的核心 Bug 引發大量的容器系統出現網路故障
- 【故障公告】K8s CofigMap 掛載問題引發網站故障K8S網站
- library cache: mutex X引發的故障Mutex
- GPON網路故障如何處理?GPON網路故障處理流程
- 由OGG引發的資料庫故障資料庫
- hp vg引發的資料庫故障(zt)資料庫
- 網際網路思維引發的集體魔症
- 網咖網路協議故障的排除方法協議
- 【故障公告】部落格系統升級到 .NET 5.0 引發的故障
- 網路故障一例
- Oracle in子句過多的硬編碼引發的故障Oracle
- 常見的網路故障排除辦法
- 積極探索 瞻博網路將引領智慧網路發展
- 網際網路專車:鯰魚引發的對戰——資訊圖
- Oracle DBLink bug引發的故障(Session Hang Memory leak)OracleSession
- 由於版本升級引發的SQL語句故障SQL
- 網路卡故障導致區域網網路故障原因與解決辦法
- 網路分割槽引發的oplog亂序問題
- 多種網路裝置的優缺點及網路故障的排除方法
- 【故障公告】資料庫伺服器 CPU 100% 引發全站故障資料庫伺服器
- 【故障公告】redis 伺服器當機引發部落格站點故障Redis伺服器
- 網際網路的下半場,哪些玩法會引發行業鉅變行業
- 網路自查 用Pathping命令診斷網路故障(轉)
- 伺服器網路故障如何排查伺服器
- 處理網路連結故障技巧
- RAC環境網路故障測試
- 記一次Ubuntu網路故障Ubuntu
- 配置網路引數
- 由於版本升級引發的SQL語句故障(續)SQL
- 【故障公告】阿里雲 RDS 資料庫突發 CPU 近 100% 引發全站故障阿里資料庫
- 【故障公告】資料庫伺服器再次 CPU 100% 引發全站故障資料庫伺服器
- 烏俄兩國引發的“網路戰爭”最新訊息盤點!
- 一次網路丟包故障的解決