DDOS攻击防护处理流程v2.docx
- 文档编号:8635660
- 上传时间:2023-02-01
- 格式:DOCX
- 页数:12
- 大小:887.39KB
DDOS攻击防护处理流程v2.docx
《DDOS攻击防护处理流程v2.docx》由会员分享,可在线阅读,更多相关《DDOS攻击防护处理流程v2.docx(12页珍藏版)》请在冰豆网上搜索。
DDOS攻击防护处理流程v2
xuegibson
一、适用范围
1.发现流量异常堵塞网络
2.高频率TCP请求访问攻击
3.ActiveConnections
4.大量伪造IP访问攻击
正常范围基准参考图(超出范围可能为异常)
二、响应策略
序号
触发满足条件
安全工具使用&防御方法
生效时间
影响范围
1
流量>40M
iRules:
ip阻断/User-Agent特征阻断
立刻
无影响
2
ActiveConnections持续>50k或者每个VSConnections>基准1.5倍
iRules:
ip阻断/User-Agent特征阻断/限制POST请求数量
立刻
无影响
3
大量伪造IP模拟访问网页
iRules:
反插js验证脚本
立刻
无影响,只针对浏览器访问有效
4
流量>100M
或者ActiveConnections持续>60k
并且大部分用户无法正常打开网站
F5ASM防御模块
需要30分钟学习实践
切换期间网络中断5分钟,小部分正常访问可能会被拒绝
5
以上方法均无法抑制攻击
并且大部分用户无法正常打开网站
电信DDos清洗防护
DNS根据用户本地缓存策略0-10分钟
无影响,小部分正常访问可能会被拒绝
三、排查步骤
1.检查F5总体的吞吐量和连接数,查看流量异常时间段
Statistics->performance->alldisplayoptins选择对应的时间段,从图表中可以查看一些异常情况
2.找出有问题的VIRTUALSERVER地址与对应的POOL
a.VirtualServerList排序找出流量有问题的策略
b.Pools中找出Members
3.在应用服务器或nginx获取攻击特征(以下为nginx)
a.登陆Pool中Nginx服务器查看访问日志tail-100/usr/local/nginx/logs/access.log
A10.32.156.53"223.244.123.188,10.32.153.14"2016-08-01T22:
30:
30+08:
00POST"HTTP/1.1200164520.06156144""Mozilla/5.0(Linux;U;Android2.2;en-us;NexusOneBuild/FRF91)AppleWebKit/533.1(KHTML,likeGecko)Version/4.0MobileSafari/533.1"---user_trace_cookie=359C200A055D9F57EB7E104802180E03
A10.32.156.53"223.244.123.188,10.32.153.14"2016-08-01T22:
30:
30+08:
00POST"HTTP/1.1200164050.02056144""Mozilla/5.0(Linux;U;Android2.2;en-us;NexusOneBuild/FRF91)AppleWebKit/533.1(KHTML,likeGecko)Version/4.0MobileSafari/533.1"---user_trace_cookie=359C200A065D9F57E97EA54702430E03
请求agent如下
Mozilla/5.0(Linux;U;Android2.2;en-us;NexusOneBuild/FRF91)AppleWebKit/533.1(KHTML,likeGecko)Version/4.0MobileSafari/533.1"
4.日志统计
登录POOL中所示的nginxIP,发觉请求数增长是否正常
awk'{print$3}'access.log|sort|uniq-c|sort-nr|head-n20
四、安全工具
5.iRules
在VirturalServer中应用对应的iRulesLocalTraffic››VirtualServers:
VirtualServerList
点击Resource››Manage
移动相应iRules到Enabled列表,并且调整先后顺序,保证4层策略放置在7层策略前
6.Nginx访问策略
7.F5ASM防御模块
8.电信DDos清洗防护
五、攻击防御方法
9.IP阻断
找出访问最多的IP添加到F5的黑名单库中
Loaltraffic->Irules->datagrouplist->black_list
对应iRules:
black_list
抓取Nginx头部中X-Forwared-For的ip加入black_list中屏蔽
whenHTTP_REQUEST{
setdebug1
if{[HTTP:
:
headerexists"X-Forwarded-For"]}{
if{[classmatch[HTTP:
:
header"X-Forwarded-For"]equalsblack_list]}{
if$debug{
loglocal0."ClientIPaddress[HTTP:
:
header"X-Forwarded-For"]isbanned"
}
drop
}
}
}
10.User-Agent特征阻断
找出访问频繁的User-Agent添加到的ban_agent_list中
Mozilla/5.0(Linux;U;Android2.2;en-us;NexusOneBuild/FRF91)AppleWebKit/533.1(KHTML,likeGecko)Version/4.0MobileSafari/533.1"
对应iRules:
block_agent
whenHTTP_REQUEST{
if{[classmatch[HTTP:
:
header"User-Agent"]containsban_agent_list]}
{drop
}
}
11.限制POST请求数量
屏蔽访问源ip1秒钟建立20次以上的HttpPOST请求
对应iRules:
Post_Limitation
whenRULE_INIT{
#1个源ip1秒钟最多建立20次HttpPOST请求
setstatic:
:
maxRate20
setstatic:
:
windowSecs1
}
whenHTTP_REQUEST{
#事件动作为HTTP的GET
if{[HTTP:
:
method]eq"POST"}{
#根据subtable表查源ip得到次数,设置次数的变量为getCount
setgetCount[tablekey-count-subtable[IP:
:
client_addr]]
loglocal0."getCount=$getCount"
#如果次数小于maxRate次数则在subtable中增加1
if{$getCount<$static:
:
maxRate}{
incrgetCount1
tableset-subtable[IP:
:
client_addr]$getCountindef$static:
:
windowSecs
}else{
loglocal0."Thisuserhas$getCountexceededthenumberofrequestsallowed."
HTTP:
:
respond501content"Blocked:
reqs/windowSecsexceedthemaxRate/windowSecs."
return
}
}
}
12.反插js验证脚本
防止非浏览器的机器人对网站的访问,反插一段js脚本到用户的浏览器中,机器人一般无法识别js,故能屏蔽这部分的攻击
对应iRules:
proof_ip_block
whenRULE_INIT{
#定义一个AES128位加密的静态密钥
setstatic:
:
encrytionKey"AES12843237ec78871FAACEbc8b98de6d36fc8"
}
whenHTTP_REQUEST{
#将“IP:
[IP:
:
client_addr]”进行AES128位加密后转换为Base64编码格式
setencrypted[b64encode[AES:
:
encrypt$static:
:
encrytionKey"IP:
[IP:
:
client_addr]"]]
#如果不存在cookiename“this-is-human”
if{not[HTTP:
:
cookieexists"this-is-human"]}{
loglocal0."firstnoexiststhis-is-humancookie"
setsrcip[IP:
:
client_addr]
#建立源Ip与noexitstcookie次数的表,执行到此处表项固定加1
tableincr$srcip
#查表得到nocookie的数量值
setnocookie_count[tablelookup$srcip]
loglocal0."nocookie_count=$nocookie_count"
#如果nocookie的数量值为1
if{$nocookie_count==1}{
#设置JS_redir变量,type为javascript,内容为cookie名字及路径
setJS_redir"
--\r\ndocument.cookie=\"this-is-human=$encrypted;path=/\";\r\nwindow.location=\"/\";\r\n//-->"
#返回Javascript脚本给客户端
HTTP:
:
respond200content$JS_redirnoserver
loglocal0."response_JSsuccess"
}
#如果存在"this-is-human"的cookie
}elseif{[HTTP:
:
cookieexists"this-is-human"]}{
loglocal0."cookieexiststhis-is-human"
if{!
[catch{b64decode[HTTP:
:
cookie"this-is-human"]}]}{
#解密cookie内容,设置变量decrypted为cookie解密后抓取的IP地址
setdecrypted[findstr[subst[AES:
:
decrypt$static:
:
encrytionKey[b64decode[HTTP:
:
cookie"this-is-human"]]]]"IP"3""]
#如果解密后的ip为客户端源ip
if{($decryptedequals[IP:
:
client_addr])}{
loglocal0."[IP:
:
client_addr]=$decrypted"
#如果解密后的ip不等于客户端源ip则Drop
}elseif{!
($decryptedequals[IP:
:
client_addr])}{
loglocal0."[IP:
:
client_addr]!
=$decrypted"
drop
}
}
}
}
13.nginx过滤配置IP访问次数限制配置
/usr/local/nginx/conf/nginx.conf
http{
...
#定义一个名为one的limit_zone,大小10M内存来存储session,
#以$binary_remote_addr为key
#nginx1.18以后用limit_conn_zone替换了limit_conn
#且只能放在http作用域
limit_conn_zoneone$binary_remote_addr10m;
...
/usr/local/nginx/conf/m.conf
server{
...
location{
...
limit_connone20;#连接数限制
#带宽限制,对单个连接限数,如果一个ip两个连接,就是500x2k
limit_rate500k;
...
}
...
}
...
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- DDOS 攻击 防护 处理 流程 v2