跳转至

Dos

Dos简介

DOS 攻击(Denial of Service 拒绝服务攻击)是一种网络攻击,它的目的是通过发送大量无效或伪造的数据请求,使得网络或计算机系统无法处理正常的数据流量,从而导致系统崩溃或无法正常运行。这种攻击通常会导致网站无法访问,甚至整个网络都会受到影响。

WAF插件

Hango 通过集成 WAF 插件的方式支持防御 Dos 攻击;WAF(Web应用防火墙)插件是一种特殊的软件,它用于保护网站或Web应用程序免受恶意攻击的影响。它通过实时监测Web流量,并根据特定的规则和算法来识别和阻止恶意活动。WAF插件通常会包含一些基本的安全功能,例如防止SQL注入攻击和跨站点脚本攻击(XSS),并提供其他高级功能,如对抗DDoS攻击和安全日志记录等。

Dos 攻击防御是 WAF 插件中的一项功能,关于 Dos 的可配置项包括请求的统计时间窗口请求阈值请求拒绝时间这3项;我们做如下配置

配置项 配置值
统计时间窗口(s) 10
请求阈值 100
请求拒绝时间(s) 5

基于上述配置,可以在 10s 内对访问 Hango 网关的请求数进行统计, 若请求数超过了 100 则将对其他请求进行拒绝,拒绝的时间窗为 5s 。通过拒绝请求的方式,可以在关键时刻对恶意的请求洪流进行拦截,起到保护系统的作用。

除了比较典型的 Dos 攻击防御功能外, WAF 插件还提供了非常多安全防护的能力。

具体配置

名称 类型 必选项 范围 描述
kind string waf 插件类型(值固定)
wafRule.dosSwitch boolean - 是否打开dos功能
wafRule.dosConfig.dos_burst_time_slice integer [0, 3600] dos配置:统计时间窗
wafRule.dosConfig.dos_counter_threshold integer [0, 99999999] dos配置:请求数量阈值
wafRule.dosConfig.dos_block_timeout integer [0, 86400] dos配置:请求拒绝时间
scannerSwitch boolean - 防止扫描攻击开关
lfiSwitch boolean - LFI攻击开关
rfiSwitch boolean - RFI攻击开关
rceSwitch boolean - RCE攻击开关
phpInjectionSwitch boolean - PHP代码注入攻击开关
xssSwitch boolean - XSS攻击开关
sqliSwitch boolean - SQL注入攻击开关
sessionFixationSwitch boolean - Session Fixation攻击开关
javaInjectionSwitch boolean - Java代码注入攻击开关
cgiDataLeakagesSwitch boolean - CGI数据泄露攻击开关
sqlDataLeakagesSwitch boolean - SQL数据泄露攻击开关
javaDataLeakagesSwitch boolean - JAVA数据泄露攻击开关
phpDataLeakagesSwitch boolean - PHP数据泄露攻击开关
iisDataLeakagesSwitch boolean - IIS数据泄露攻击开关

对于各项开关功能有对应如下释义

功能 解释 CRS id 配置
DOS 防止拒绝服务攻击,针对 ip 级别的请求数统计实现防御 912
Scanner 防止扫描攻击,检查某些开源或商业的扫描攻击的默认 User-Agent 和 Headers 913
LFI 防止利用本地文件包含漏洞进行攻击,检查headers、cookie或者 uri 中是否包含目录遍历、系统文件等 930
RFI 防止利用远程文件包含漏洞进行攻击,检查 url 参数中是否包含 ip 地址、body 中是否包含 include关键字等 931
RCE 防止利用远程命令执行漏洞进行攻击,检查 cookie、url 参数等是否包含Unix Command、Windows Command、Windows PowerShell Command 等 932
PHP Injection 防止 PHP 代码注入 ,检查 headers、cookie、rl 参数等是否包含可能的 php 文件、关键字之类 933
XSS 防止跨站脚本攻击,检查 headers、cookie、rl 参数等是否包含可能的网页脚本 941
SQLi 防止 SQL 注入,检查 headers、cookie、rl 参数等是否包含可能的 sql 语句等 942
Session Fixation 阻止利用Session会话ID不变的漏洞进行攻击 943
Java Injection 防止 Java 代码注入,检查 headers、cookie、rl 参数等是否包含可能的 java 文件、关键字之类 944
Data Leakages 防止数据泄露(CGI、SQL、JAVA、PHP、IIS),检查 response body 中是否包含相应语言的关键字或者错误输出等 950-954

前置条件

以下curl命令中存在变量,使用前需要替换为真实环境数据,变量以{{}}符号包裹,例如{{ 网关ID }}需要根据网关的实际ID进行替换;创建插件命令中PluginConfiguration(插件配置)需要根据实际需要进行配置

创建

curl -XPOST -v -H "Content-Type:application/json" -d '{
  "BindingObjectId": {{ 路由ID }},
  "BindingObjectType": "routeRule",
  "GwId": {{ 网关ID }},
  "PluginConfiguration": "{\"wafRule\":{\"dosSwitch\":true,\"dosConfig\":{\"dos_burst_time_slice\":\"10\",\"dos_counter_threshold\":\"100\",\"dos_block_timeout\":\"5\"},\"scannerSwitch\":true,\"lfiSwitch\":true,\"rfiSwitch\":true,\"rceSwitch\":true,\"phpInjectionSwitch\":true,\"xssSwitch\":true,\"sqliSwitch\":true,\"sessionFixationSwitch\":true,\"javaInjectionSwitch\":true,\"cgiDataLeakagesSwitch\":true,\"sqlDataLeakagesSwitch\":true,\"javaDataLeakagesSwitch\":true,\"phpDataLeakagesSwitch\":true,\"iisDataLeakagesSwitch\":true},\"kind\":\"waf\"}",
  "PluginType": "waf"
}' http://{{ hango-portal ip:port }}/gdashboard?Action=BindingPlugin&Version=2019-09-01

测试

## 如下命令展示了用命令调用 100 次请求的案例,可修改 for 中的请求次数,进行 Dos 测试,测试是否会进行请求拒绝
for((i=0;i<100;i++));do curl -v "http://{{ 网关IP }}/{{ 路由path }}" -H "host:{{ 网关关联域名 }}";done

删除

curl -v -H "Content-Type:application/json" http://{{ hango-portal ip:port }}/gdashboard?PluginBindingInfoId={{ 插件ID }}&Action=UnbindingPlugin&Version=2019-09-01

界面配置方法

详见hango-gateway工程文档插件配置方法

Back to top