ALIYUN::DDoS::Policy

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:表示添加黑白名单(WhiteIpListBlackIpList选填)。仅 IP防护策略支持。

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

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

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

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

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

  • 32:表示修改源限速配置(SourceLimitSourceBlockList必填)。仅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 黑名单列表

最多支持配置1999IP。

Content

Map

策略内容。

更多信息,请参见Content属性

WhiteIpList

List

IP 白名单列表

最多支持配置1999IP。

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 限速时(MacthActionip_ratesession_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"
        ]
      }
    }
  }
}