一、七层协议攻击类型与特征
攻击类型 协议 特征 HTTP慢速攻击 HTTP 低速率发送不完整请求 DNS隧道 DNS 异常长域名、高频率TXT查询 API滥用攻击 HTTP 高频调用关键接口(如短信发送) WebSocket洪水 WebSocket 海量小消息耗尽服务器资源
二、HTTP协议深度防护
1. 慢速攻击防御(Nginx配置)
http {
# 限制请求头和体的读取时间
client_header_timeout 10s;
client_body_timeout 10s;
# 限制请求速率
limit_req_zone $binary_remote_addr zone=api_limit:10m rate=100r/s;
server {
location / {
limit_req zone=api_limit burst=200;
# 限制最小传输速率(100字节/秒)
client_body_in_file_only on;
client_body_temp_path /dev/shm/;
client_max_body_size 1m;
limit_rate_after 1k;
limit_rate 100;
}
}
}
2. 请求特征过滤(OpenResty Lua脚本)
location / api {
access_by_lua_block {
local headers = ngx. req. get_headers ( )
if not headers[ "User-Agent" ] then
ngx. exit ( ngx. HTTP_FORBIDDEN)
end
local method = ngx. req. get_method ( )
if not ( { GET= true , POST= true } ) [ method] then
ngx. exit ( ngx. HTTP_NOT_ALLOWED)
end
}
}
三、DNS协议定制防护
1. DNS隧道检测(Python深度学习)
import tensorflow as tf
import numpy as np
model = tf. keras. Sequential( [
tf. keras. layers. Dense( 64 , activation= 'relu' , input_shape= ( 3 , ) ) ,
tf. keras. layers. Dense( 1 , activation= 'sigmoid' )
] )
def predict_dns_tunnel ( domain) :
features = [
len ( domain) ,
entropy( domain) ,
domain. count( '.' )
]
return model. predict( np. array( [ features] ) ) [ 0 ] > 0.9
def entropy ( s) :
p, lns = tf. unique( tf. strings. bytes_split( s) )
return - tf. reduce_sum( p * tf. math. log( p) )
2. DNS查询限频(Bind配置)
options {
rate-limit {
responses-per-second 50;
window 5;
qps-scale 100;
};
};
zone "example.com" {
type master;
file "db.example.com";
# 限制单个客户端查询频率
rate-limit {
responses-per-second 10;
window 3;
};
};
四、WebSocket协议防护
1. 消息频率限制(Node.js示例)
const WebSocket = require ( 'ws' ) ;
const wss = new WebSocket. Server ( { port : 8080 } ) ;
wss. on ( 'connection' , ( ws ) => {
let messageCount = 0 ;
setInterval ( ( ) => messageCount = 0 , 1000 ) ;
ws. on ( 'message' , ( data ) => {
if ( ++ messageCount > 100 ) {
ws. close ( 1008 , '消息频率超限' ) ;
return ;
}
} ) ;
} ) ;
2. 协议头校验(Go语言实现)
func handleWebSocket ( w http. ResponseWriter, r * http. Request) {
if r. Header. Get ( "Origin" ) != "https://example.com" {
http. Error ( w, "Invalid Origin" , http. StatusForbidden)
return
}
if ! strings. Contains ( r. Header. Get ( "Sec-WebSocket-Version" ) , "13" ) {
http. Error ( w, "Unsupported Version" , http. StatusUpgradeRequired)
return
}
}
五、防御工具链与监控体系
应用层防火墙 :
ModSecurity(自定义规则示例):SecRule REQUEST_URI "@contains /api/send_sms" \
"id:1001,phase:2,deny,log,msg:'SMS API滥用'"
日志分析平台 :
ELK Stack(检测异常请求模式) Grafana(可视化实时QPS) 云WAF集成 :
AWS WAF(速率限制规则) Cloudflare Workers(边缘JS挑战)
六、防御效果验证方法
压力测试工具 :
slowhttptest -c 1000 -u https://example.com -r 10
wsdump.py --fragment 1000 ws://example.com
防御验证指标 :
攻击期间CPU占用率 < 70% 正常请求成功率 > 99.9% 攻击IP自动封禁时间 < 5秒