ALIYUN::DDoS::Policy

更新时间:
复制 MD 格式

ALIYUN::DDoS::Policy类型用于创建防护策略。

语法

{
  "Type": "ALIYUN::DDoS::Policy",
  "Properties": {
    "PolicyName": String,
    "Type": String,
    "ActionType": String,
    "BlackIpList": List,
    "Content": Map,
    "WhiteIpList": List
  }
}

属性

属性名称

类型

必须

允许更新

描述

约束

PolicyName

String

是

是

策略名称。

无

Type

String

是

否

策略类型。

取值:

  • l3:表示IP防护策略。

  • l4:表示端口防护策略。

ActionType

String

否

否

动作类型。

取值

  • 10:表示修改名称(Name必填)。

  • 11:表示修改黑名单超时时间(BlackIpListExpireAt必填)。仅 IP防护策略支持。

  • 12:表示修改 DDoS高防回源地址加白开关(WhitenGfbrNets必填)。仅 IP防护策略支持。

  • 13:表示修改禁用 ICMP协议开关(EnableDropIcmp必填)。仅 IP防护策略支持。

  • 20:表示添加黑白名单(WhiteIpList和BlackIpList选填)。仅 IP防护策略支持。

  • 21:表示删除黑白名单(WhiteIpList和BlackIpList选填)。仅 IP防护策略支持。

  • 22:表示清空白名单。仅IP 防护策略支持。

  • 23:表示清空黑名单。仅IP 防护策略支持。

  • 30:表示修改AI智能防护开关和等级(EnableIntelligence和IntelligenceLevel必填)。仅 IP防护策略支持。

  • 31:表示修改区域封禁配置(RegionBlockCountryList和RegionBlockProvinceList选填)。仅 IP防护策略支持。

  • 32:表示修改源限速配置(SourceLimit和SourceBlockList必填)。仅IP防护策略支持。

  • 33:表示修改反射端口过滤(ReflectBlockUdpPortList必填)。仅 IP防护策略支持。

  • 40:表示创建端口封禁规则(PortRuleList必填)。仅 IP防护策略支持。

  • 41:表示修改端口封禁规则(PortRuleList必填)。仅 IP防护策略支持。

  • 42:表示删除端口封禁规则(PortRuleList必填)。仅 IP防护策略支持。

  • 50:表示创建指纹过滤规则(FingerPrintRuleList必填)。仅 IP防护策略支持。

  • 51:表示修改指纹过滤规则(FingerPrintRuleList必填)。仅 IP防护策略支持。

  • 52:表示删除指纹过滤规则(FingerPrintRuleList必填)。仅 IP防护策略支持。

  • 60:表示修改端口防护开关(EnableL4Defense必填)。仅端口防护策略支持。

  • 61:表示创建端口防护规则(L4RuleList必填)。仅端口防护策略支持。

  • 62:表示修改端口防护规则(L4RuleList必填)。仅端口防护策略支持。

  • 63:表示删除端口防护规则(L4RuleList必填)。仅端口防护策略支持。

BlackIpList

List

否

否

IP 黑名单列表

最多支持配置1999个IP。

Content

Map

否

是

策略内容。

更多信息,请参见Content属性。

WhiteIpList

List

否

否

IP 白名单列表

最多支持配置1999个IP。

Content语法

"Content": {
  "WhitenGfbrNets": Boolean,
  "PortRuleList": List,
  "RegionBlockCountryList": List,
  "RegionBlockProvinceList": List,
  "FingerPrintRuleList": List,
  "SourceLimit": Map,
  "EnableDefense": Boolean,
  "EnableIntelligence": Boolean,
  "SourceBlockList": List,
  "EnableDropIcmp": Boolean,
  "IntelligenceLevel": String,
  "ReflectBlockUdpPortList": List,
  "BlackIpListExpireAt": Integer,
  "Layer4RuleList": List
}

Content属性

属性名称

类型

必须

允许更新

描述

约束

BlackIpListExpireAt

Integer

否

是

IP 黑名单超时时间。

无

EnableDefense

Boolean

否

是

是否开启端口防护。

无

EnableIntelligence

Boolean

否

是

是否开启 AI 智能防护。

无

EnableDropIcmp

Boolean

否

是

是否禁用 ICMP 协议。

无

FingerPrintRuleList

List

否

是

指纹过滤规则列表。

最多支持配置8组规则,更多信息,请参见FingerPrintRuleList属性。

IntelligenceLevel

String

否

是

AI 智能防护的防护等级。

取值:

  • default:表示正常。

  • hard:表示严格。

  • weak:表示宽松。

Layer4RuleList

List

否

是

端口防护规则列表。

最多支持配置8组规则,更多信息,请参见Layer4RuleList属性。

PortRuleList

List

否

是

端口封禁规则列表。

最多支持配置8组规则,更多信息,请参见PortRuleList属性。

RegionBlockCountryList

List

否

是

区域封禁的国家列表。

无

RegionBlockProvinceList

List

否

是

区域封禁的省份列表。

无

ReflectBlockUdpPortList

List

否

是

反射攻击防护过滤的端口列表。

{'Length': {'Min': 0, 'Max': 20}}

SourceLimit

Map

否

是

源限速。

更多信息,请参见SourceLimit属性。

SourceBlockList

List

否

是

源限速拉黑列表。

更多信息,请参见SourceBlockList属性。

WhitenGfbrNets

Boolean

否

是

是否开启 DDoS高防(中国内地&非中国内地)回源地址加白。

无

PortRuleList语法

"PortRuleList": [
  {
    "SrcPortEnd": Integer,
    "SeqNo": Integer,
    "SrcPortStart": Integer,
    "PortRuleId": String,
    "DstPortStart": Integer,
    "DstPortEnd": Integer,
    "Protocol": String
  }
]

PortRuleList属性

属性名称

类型

必须

允许更新

描述

约束

DstPortStart

Integer

是

是

目的端口范围的起始值。

取值范围:0~65535。

DstPortEnd

Integer

是

是

目的端口范围的结束值。

取值范围:0~65535。

Protocol

String

是

是

协议类型。

取值:

  • tcp:表示传输控制协议。

  • udp:表示用户数据报协议。

SrcPortEnd

Integer

是

是

源端口范围的结束值。

取值范围:0~65535。

SeqNo

Integer

是

是

生效顺序号。

说明

数字越小,越靠前生效。

SrcPortStart

Integer

是

是

源端口范围的起始值。

取值范围:0~65535。

PortRuleId

String

否

是

封禁规则 ID。

无

FingerPrintRuleList语法

"FingerPrintRuleList": [
  {
    "SrcPortEnd": Integer,
    "SeqNo": Integer,
    "SrcPortStart": Integer,
    "FingerPrintRuleId": String,
    "RateValue": Integer,
    "PayloadBytes": String,
    "DstPortStart": Integer,
    "MatchAction": String,
    "Offset": Integer,
    "MaxPktLen": Integer,
    "MinPktLen": Integer,
    "DstPortEnd": Integer,
    "Protocol": String
  }
]

FingerPrintRuleList属性

属性名称

类型

必须

允许更新

描述

约束

DstPortStart

Integer

是

是

目的端口范围的起始值。

取值范围:0~65535。

DstPortEnd

Integer

是

是

目的端口范围的结束值。

取值范围:0~65535。

MatchAction

String

是

是

匹配动作。

取值:

  • accept:表示放行满足指纹特征的流量。

  • drop:表示丢弃满足指纹特征的流量。

  • ip_rate:表示对满足指纹特征的流量来源 IP 进行访问限速。限速值通过 RateValue 参数设置。

  • session_rate:表示对满足指纹特征的流量来源会话进行访问限速。限速值通过 RateValue 参数设置。

MaxPktLen

Integer

是

是

最大包长。

取值范围:1~1500。

MinPktLen

Integer

是

是

最小包长。

取值范围:1~1500。

Protocol

String

是

是

协议类型。

取值:

  • tcp:表示传输控制协议。

  • udp:表示用户数据报协议。

SrcPortEnd

Integer

是

是

源端口范围的结束值。

取值范围:0~65535。

SeqNo

Integer

是

是

生效顺序号。

使用整数表示。

说明

数字越小,越靠前生效。

SrcPortStart

Integer

是

是

源端口范围的开始值。

取值范围:0~65535。

FingerPrintRuleId

String

否

是

过滤规则 ID。

无

Offset

Integer

否

是

偏移量。

取值范围:0~1500。

PayloadBytes

String

否

是

检测载荷。

无

RateValue

Integer

否

是

限速值。

取值范围:1~100000。

说明

匹配后动作为源IP限速或者源 Session 限速时(MacthAction为ip_rate或session_rate),必须填写该参数。

SourceLimit语法

"SourceLimit": {
  "Pps": Integer,
  "SynBps": Integer,
  "Bps": Integer,
  "SynPps": Integer
}

SourceLimit属性

属性名称

类型

必须

允许更新

描述

约束

Bps

Integer

否

是

源带宽限速。

单位 Byte/s。

Pps

Integer

否

是

源PPS限速。

单位Packet/s。

SynBps

Integer

否

是

源SYN带宽限速。

单位 Byte/s。

SynPps

Integer

否

是

源SYN PPS限速。

单位Packet/s。

SourceBlockList语法

"SourceBlockList": [
  {
    "Type": Integer,
    "ExceedLimitTimes": Integer,
    "EverySeconds": Integer,
    "BlockExpireSeconds": Integer
  }
]

SourceBlockList属性

属性名称

类型

必须

允许更新

描述

约束

BlockExpireSeconds

Integer

是

是

源 IP 加入黑名单的时长。

单位:秒。

ExceedLimitTimes

Integer

是

是

源 IP 在 1 个统计周期内超过限速值的次数。

无

EverySeconds

Integer

是

是

源限速拉黑的统计周期。

单位:秒。

Type

Integer

是

是

源限速类型。

取值:

  • 3:表示源PPS限速。

  • 4:表示源带宽限速。

  • 5:表示源SYN PPS限速。

  • 6:表示源SYN带宽限速。

Layer4RuleList语法

"Layer4RuleList": [
  {
    "Action": String,
    "ConditionList": List,
    "Priority": Integer,
    "Method": String,
    "Limited": Integer,
    "Name": String,
    "Match": String
  }
]

Layer4RuleList属性

属性名称

类型

必须

允许更新

描述

约束

Action

String

是

是

动作。

取值:

  • 1:表示接受。

  • 2: 表示丢弃。

ConditionList

List

是

是

检测条件列表。

更多信息,请参见ConditionList属性。

Limited

Integer

是

是

会话流启动规则匹配的最小字节数。

取值范围:0~2048。

Method

String

是

是

规则类型。

取值:

  • char:表示字符串匹配。

  • hex:表示十六进制匹配。

Match

String

是

是

逻辑符。

取值:

  • 0:表示命中执行动作。

  • 1:表示未命中执行动作。

Name

String

是

是

规则名称。

无

Priority

Integer

是

是

规则优先级。

取值范围:1~100。

说明

数值越小,优先级越高。

ConditionList语法

"ConditionList": [
  {
    "Position": Integer,
    "Arg": String,
    "Depth": Integer
  }
]

ConditionList属性

属性名称

类型

必须

允许更新

描述

约束

Arg

String

是

是

检测内容。

说明

规则类型为char,必须为 ASCII 字符串;规则类型为hex,必须为十六进制字符串。最大长度 2048。

Depth

Integer

是

是

检测窗口长度。

取值范围:1~2048。

Position

Integer

是

是

检测起始位置。

取值范围:0~2047。

返回值

Fn::GetAtt

  • Type:规则类型。

  • Content:策略内容。

  • PolicyName:策略名称。

  • PolicyId:策略ID。

示例

ROSTemplateFormatVersion: '2015-09-01'
Parameters:
  PolicyName:
    Description:
      en: The name of the policy.
    Required: true
    Type: String
    Default: test_policy_312
Resources:
  ExtensionResource:
    Properties:
      Content:
        EnableIntelligence: true
        SourceBlockList:
          - Type: 4
            ExceedLimitTimes: 5
            EverySeconds: 60
            BlockExpireSeconds: 1200
          - Type: 3
            ExceedLimitTimes: 5
            EverySeconds: 60
            BlockExpireSeconds: 2400
          - Type: 6
            ExceedLimitTimes: 5
            EverySeconds: 60
            BlockExpireSeconds: 3360
          - Type: 5
            ExceedLimitTimes: 5
            EverySeconds: 60
            BlockExpireSeconds: 180
        EnableDropIcmp: true
        PortRuleList:
          - SrcPortEnd: 65535
            SrcPortStart: 0
            SeqNo: 1
            DstPortStart: 0
            DstPortEnd: 65535
            MatchAction: drop
            Protocol: udp
          - SrcPortEnd: 65535
            SrcPortStart: 333
            SeqNo: 2
            DstPortStart: 666
            DstPortEnd: 65535
            MatchAction: drop
            Protocol: tcp
        IntelligenceLevel: weak
        RegionBlockProvinceList:
          - 11
        ReflectBlockUdpPortList:
          - 137
          - 99
          - 916
        FingerPrintRuleList:
          - SrcPortEnd: 65535
            SrcPortStart: 56
            SeqNo: 1
            PayloadBytes: '16'
            RateValue: 100
            DstPortStart: 69
            MatchAction: ip_rate
            Offset: 56
            MaxPktLen: 33
            DstPortEnd: 65535
            MinPktLen: 2
            Protocol: tcp
        SourceLimit:
          Pps: 66
          SynBps: 1024
          Bps: 1024
          SynPps: 66
        BlackIpListExpireAt: 1734489860
      PolicyName:
        Ref: PolicyName
    Type: ALIYUN::DDoS::Policy
Outputs:
  Content:
    Description: Configuration Content.
    Value:
      Fn::GetAtt:
        - ExtensionResource
        - Content
  PolicyId:
    Description: The ID of the policy.
    Value:
      Fn::GetAtt:
        - ExtensionResource
        - PolicyId
  PolicyName:
    Description: The name of the policy.
    Value:
      Fn::GetAtt:
        - ExtensionResource
        - PolicyName
  Type:
    Description: The type of the policy.
    Value:
      Fn::GetAtt:
        - ExtensionResource
        - Type
{
  "ROSTemplateFormatVersion": "2015-09-01",
  "Parameters": {
    "PolicyName": {
      "Description": {
        "en": "The name of the policy."
      },
      "Required": true,
      "Type": "String",
      "Default": "test_policy_312"
    }
  },
  "Resources": {
    "ExtensionResource": {
      "Properties": {
        "Content": {
          "EnableIntelligence": true,
          "SourceBlockList": [
            {
              "Type": 4,
              "ExceedLimitTimes": 5,
              "EverySeconds": 60,
              "BlockExpireSeconds": 1200
            },
            {
              "Type": 3,
              "ExceedLimitTimes": 5,
              "EverySeconds": 60,
              "BlockExpireSeconds": 2400
            },
            {
              "Type": 6,
              "ExceedLimitTimes": 5,
              "EverySeconds": 60,
              "BlockExpireSeconds": 3360
            },
            {
              "Type": 5,
              "ExceedLimitTimes": 5,
              "EverySeconds": 60,
              "BlockExpireSeconds": 180
            }
          ],
          "EnableDropIcmp": true,
          "PortRuleList": [
            {
              "SrcPortEnd": 65535,
              "SrcPortStart": 0,
              "SeqNo": 1,
              "DstPortStart": 0,
              "DstPortEnd": 65535,
              "MatchAction": "drop",
              "Protocol": "udp"
            },
            {
              "SrcPortEnd": 65535,
              "SrcPortStart": 333,
              "SeqNo": 2,
              "DstPortStart": 666,
              "DstPortEnd": 65535,
              "MatchAction": "drop",
              "Protocol": "tcp"
            }
          ],
          "IntelligenceLevel": "weak",
          "RegionBlockProvinceList": [
            11
          ],
          "ReflectBlockUdpPortList": [
            137,
            99,
            916
          ],
          "FingerPrintRuleList": [
            {
              "SrcPortEnd": 65535,
              "SrcPortStart": 56,
              "SeqNo": 1,
              "PayloadBytes": "16",
              "RateValue": 100,
              "DstPortStart": 69,
              "MatchAction": "ip_rate",
              "Offset": 56,
              "MaxPktLen": 33,
              "DstPortEnd": 65535,
              "MinPktLen": 2,
              "Protocol": "tcp"
            }
          ],
          "SourceLimit": {
            "Pps": 66,
            "SynBps": 1024,
            "Bps": 1024,
            "SynPps": 66
          },
          "BlackIpListExpireAt": 1734489860
        },
        "PolicyName": {
          "Ref": "PolicyName"
        }
      },
      "Type": "ALIYUN::DDoS::Policy"
    }
  },
  "Outputs": {
    "Content": {
      "Description": "Configuration Content.",
      "Value": {
        "Fn::GetAtt": [
          "ExtensionResource",
          "Content"
        ]
      }
    },
    "PolicyId": {
      "Description": "The ID of the policy.",
      "Value": {
        "Fn::GetAtt": [
          "ExtensionResource",
          "PolicyId"
        ]
      }
    },
    "PolicyName": {
      "Description": "The name of the policy.",
      "Value": {
        "Fn::GetAtt": [
          "ExtensionResource",
          "PolicyName"
        ]
      }
    },
    "Type": {
      "Description": "The type of the policy.",
      "Value": {
        "Fn::GetAtt": [
          "ExtensionResource",
          "Type"
        ]
      }
    }
  }
}