SYN FLOOD
SYN FLOOD 相关 原文
原理
利用TCP的缺陷,发送大量的伪造的TCP链接请求,常用假冒的ip发送第一个握手包,服务器回应后,收不到第三个握手,服务器保持大量的SYN_RECV的半链接。并且重试5次回应,晒满TCP链接。
模拟工具
https://github.com/EmreOvunc/Python-SYN-Flood-Attack-Tool/blob/master/SYN-Flood.py
http://man.linuxde.net/hping3
诊断
当业务曲线大跌时,检查机器和DNS,web机器响应慢,cpu负载高,ssh登录缓慢。
检查log tail -f /var/log/messages
检查连接数增多,并且SYN_RECV 连接特别多:
netstat -n | awk ‘/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}’ |
http://0daysecurity.com/articles/hping3_examples.html
netstat -na>指定文件
应急处理
根据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登陆不了服务器,并不是理想方式。
F5阻挡
应急处理毕竟太被动,因为本机房的F5比较空闲,运维利用F5来挡攻击,采用方式:让客户端先和F5三次握手,连接建立之后F5才转发到后端业务服务器。后来被攻击时F5上看到的现象: