fortinet.fortios.fortios_waf_profile 模块 – 在 Fortinet 的 FortiOS 和 FortiGate 中配置 Web 应用防火墙配置。

注意

此模块是 fortinet.fortios 集合 (版本 2.3.8) 的一部分。

如果您使用的是 ansible 包,则可能已经安装了此集合。它不包含在 ansible-core 中。要检查它是否已安装,请运行 ansible-galaxy collection list

要安装它,请使用: ansible-galaxy collection install fortinet.fortios。您需要其他要求才能使用此模块,请参阅 要求 以了解详细信息。

要在 playbook 中使用它,请指定: fortinet.fortios.fortios_waf_profile

fortinet.fortios 2.0.0 中的新增功能

概要

  • 此模块能够通过允许用户设置和修改 waf 功能和配置文件类别来配置 FortiGate 或 FortiOS (FOS) 设备。示例包括所有参数,在使用前需要将值调整到数据源。已在 FOS v6.0.0 上测试。

要求

执行此模块的主机需要以下要求。

  • ansible>=2.15

参数

参数

注释

access_token

字符串

基于令牌的身份验证。从 FortiGate 的 GUI 生成。

enable_log

布尔值

启用/禁用任务日志记录。

选项

  • false ← (默认)

  • true

member_path

字符串

要操作的成员属性路径。

如果有多个属性,则用斜杠字符分隔。

标有 member_path 的参数对于执行成员操作是合法的。

member_state

字符串

在指定的属性路径下添加或删除成员。

当指定 member_state 时,state 选项将被忽略。

选项

  • "present"

  • "absent"

state

字符串 / 必填

指示是创建还是删除对象。

选项

  • "present"

  • "absent"

vdom

字符串

虚拟域,在之前定义的那些虚拟域中。vdom 是 FortiGate 的虚拟实例,可以将其配置并用作不同的单元。

默认值: "root"

waf_profile

字典

配置 Web 应用防火墙配置。

address_list

字典

地址块和允许列表。

blocked_address

列表 / 元素=字典

被阻止的地址。

name

字符串 / 必填

地址名称。来源 firewall.address.name firewall.addrgrp.name。

blocked_log

字符串

启用/禁用被阻止地址的日志记录。

选项

  • "enable"

  • "disable"

severity

字符串

严重性。

选项

  • "high"

  • "medium"

  • "low"

status

字符串

状态。

选项

  • "enable"

  • "disable"

trusted_address

列表 / 元素=字典

受信任的地址。

name

字符串 / 必填

地址名称。来源 firewall.address.name firewall.addrgrp.name。

comment

字符串

注释。

constraint

字典

WAF HTTP 协议限制。

content_length

字典

请求中的 HTTP 内容长度。

action

字符串

操作。

选项

  • "allow"

  • "block"

length

整数

HTTP 内容的长度(字节)(0 到 2147483647)。

log

字符串

启用/禁用日志记录。

选项

  • "enable"

  • "disable"

severity

字符串

严重性。

选项

  • "high"

  • "medium"

  • "low"

status

字符串

启用/禁用约束。

选项

  • "enable"

  • "disable"

exception

列表 / 元素=字典

HTTP 约束例外。

address

字符串

主机地址。来源 firewall.address.name firewall.addrgrp.name。

content_length

字符串

请求中的 HTTP 内容长度。

选项

  • "enable"

  • "disable"

header_length

字符串

请求中的 HTTP 头长度。

选项

  • "enable"

  • "disable"

hostname

字符串

启用/禁用主机名检查。

选项

  • "enable"

  • "disable"

id

整数 / 必填

例外 ID。请参阅 注释

line_length

字符串

请求中的 HTTP 行长度。

选项

  • "enable"

  • "disable"

malformed

字符串

启用/禁用格式错误的 HTTP 请求检查。

选项

  • "enable"

  • "disable"

字符串

HTTP 请求中 cookie 的最大数量。

选项

  • "enable"

  • "disable"

max_header_line

字符串

HTTP 头行的最大数量。

选项

  • "enable"

  • "disable"

max_range_segment

字符串

HTTP range 行中范围段的最大数量。

选项

  • "enable"

  • "disable"

max_url_param

字符串

URL 中参数的最大数量。

选项

  • "enable"

  • "disable"

method

字符串

启用/禁用 HTTP 方法检查。

选项

  • "enable"

  • "disable"

param_length

字符串

URL、HTTP POST 请求或 HTTP 主体中参数的最大长度。

选项

  • "enable"

  • "disable"

pattern

字符串

URL 模式。

regex

字符串

启用/禁用基于正则表达式的模式匹配。

选项

  • "enable"

  • "disable"

url_param_length

字符串

URL 中参数的最大长度。

选项

  • "enable"

  • "disable"

version

字符串

启用/禁用 HTTP 版本检查。

选项

  • "enable"

  • "disable"

header_length

字典

请求中的 HTTP 头长度。

action

字符串

操作。

选项

  • "allow"

  • "block"

length

整数

HTTP 头的长度(字节)(0 到 2147483647)。

log

字符串

启用/禁用日志记录。

选项

  • "enable"

  • "disable"

severity

字符串

严重性。

选项

  • "high"

  • "medium"

  • "low"

status

字符串

启用/禁用约束。

选项

  • "enable"

  • "disable"

hostname

字典

启用/禁用主机名检查。

action

字符串

操作。

选项

  • "allow"

  • "block"

log

字符串

启用/禁用日志记录。

选项

  • "enable"

  • "disable"

severity

字符串

严重性。

选项

  • "high"

  • "medium"

  • "low"

status

字符串

启用/禁用约束。

选项

  • "enable"

  • "disable"

line_length

字典

请求中的 HTTP 行长度。

action

字符串

操作。

选项

  • "allow"

  • "block"

length

整数

HTTP 行的长度(字节)(0 到 2147483647)。

log

字符串

启用/禁用日志记录。

选项

  • "enable"

  • "disable"

severity

字符串

严重性。

选项

  • "high"

  • "medium"

  • "low"

status

字符串

启用/禁用约束。

选项

  • "enable"

  • "disable"

malformed

字典

启用/禁用格式错误的 HTTP 请求检查。

action

字符串

操作。

选项

  • "allow"

  • "block"

log

字符串

启用/禁用日志记录。

选项

  • "enable"

  • "disable"

severity

字符串

严重性。

选项

  • "high"

  • "medium"

  • "low"

status

字符串

启用/禁用约束。

选项

  • "enable"

  • "disable"

字典

HTTP 请求中 cookie 的最大数量。

字符串

操作。

选项

  • "allow"

  • "block"

字符串

启用/禁用日志记录。

选项

  • "enable"

  • "disable"

整数

HTTP 请求中 cookie 的最大数量 (0 到 2147483647)。

字符串

严重性。

选项

  • "high"

  • "medium"

  • "low"

字符串

启用/禁用约束。

选项

  • "enable"

  • "disable"

max_header_line

字典

HTTP 头行的最大数量。

action

字符串

操作。

选项

  • "allow"

  • "block"

log

字符串

启用/禁用日志记录。

选项

  • "enable"

  • "disable"

max_header_line

整数

HTTP 头行的最大数量 (0 到 2147483647)。

severity

字符串

严重性。

选项

  • "high"

  • "medium"

  • "low"

status

字符串

启用/禁用约束。

选项

  • "enable"

  • "disable"

max_range_segment

字典

HTTP range 行中范围段的最大数量。

action

字符串

操作。

选项

  • "allow"

  • "block"

log

字符串

启用/禁用日志记录。

选项

  • "enable"

  • "disable"

max_range_segment

整数

HTTP range 行中范围段的最大数量 (0 到 2147483647)。

severity

字符串

严重性。

选项

  • "high"

  • "medium"

  • "low"

status

字符串

启用/禁用约束。

选项

  • "enable"

  • "disable"

max_url_param

字典

URL 中参数的最大数量。

action

字符串

操作。

选项

  • "allow"

  • "block"

log

字符串

启用/禁用日志记录。

选项

  • "enable"

  • "disable"

max_url_param

整数

URL 中参数的最大数量 (0 到 2147483647)。

severity

字符串

严重性。

选项

  • "high"

  • "medium"

  • "low"

status

字符串

启用/禁用约束。

选项

  • "enable"

  • "disable"

method

字典

启用/禁用 HTTP 方法检查。

action

字符串

操作。

选项

  • "allow"

  • "block"

log

字符串

启用/禁用日志记录。

选项

  • "enable"

  • "disable"

severity

字符串

严重性。

选项

  • "high"

  • "medium"

  • "low"

status

字符串

启用/禁用约束。

选项

  • "enable"

  • "disable"

param_length

字典

URL、HTTP POST 请求或 HTTP 主体中参数的最大长度。

action

字符串

操作。

选项

  • "allow"

  • "block"

length

整数

URL、HTTP POST 请求或 HTTP 主体中参数的最大长度(字节)(0 到 2147483647)。

log

字符串

启用/禁用日志记录。

选项

  • "enable"

  • "disable"

severity

字符串

严重性。

选项

  • "high"

  • "medium"

  • "low"

status

字符串

启用/禁用约束。

选项

  • "enable"

  • "disable"

url_param_length

字典

URL 中参数的最大长度。

action

字符串

操作。

选项

  • "allow"

  • "block"

length

整数

URL 参数的最大长度(字节)(0 到 2147483647)。

log

字符串

启用/禁用日志记录。

选项

  • "enable"

  • "disable"

severity

字符串

严重性。

选项

  • "high"

  • "medium"

  • "low"

status

字符串

启用/禁用约束。

选项

  • "enable"

  • "disable"

version

字典

启用/禁用 HTTP 版本检查。

action

字符串

操作。

选项

  • "allow"

  • "block"

log

字符串

启用/禁用日志记录。

选项

  • "enable"

  • "disable"

severity

字符串

严重性。

选项

  • "high"

  • "medium"

  • "low"

status

字符串

启用/禁用约束。

选项

  • "enable"

  • "disable"

extended_log

字符串

启用/禁用扩展日志记录。

选项

  • "enable"

  • "disable"

external

字符串

禁用/启用外部 HTTP 检查。

选项

  • "disable"

  • "enable"

method

字典

方法限制。

default_allowed_methods

列表 / 元素=字符串

方法。

选项

  • "get"

  • "post"

  • "put"

  • "head"

  • "connect"

  • "trace"

  • "options"

  • "delete"

  • "others"

log

字符串

启用/禁用日志记录。

选项

  • "enable"

  • "disable"

method_policy

列表 / 元素=字典

HTTP 方法策略。

address

字符串

主机地址。来源 firewall.address.name firewall.addrgrp.name。

allowed_methods

列表 / 元素=字符串

允许的方法。

选项

  • "get"

  • "post"

  • "put"

  • "head"

  • "connect"

  • "trace"

  • "options"

  • "delete"

  • "others"

id

整数 / 必填

HTTP 方法策略 ID。请参阅 注释

pattern

字符串

URL 模式。

regex

字符串

启用/禁用基于正则表达式的模式匹配。

选项

  • "enable"

  • "disable"

severity

字符串

严重性。

选项

  • "high"

  • "medium"

  • "low"

status

字符串

状态。

选项

  • "enable"

  • "disable"

name

字符串 / 必填

WAF 配置文件名称。

signature

字典

WAF 签名。

credit_card_detection_threshold

整数

检测违规的信用卡的最小数量。

custom_signature

列表 / 元素=字典

自定义签名。

action

字符串

操作。

选项

  • "allow"

  • "block"

  • "erase"

case_sensitivity

字符串

模式中的大小写敏感性。

选项

  • "disable"

  • "enable"

direction

字符串

流量方向。

选项

  • "request"

  • "response"

log

字符串

启用/禁用日志记录。

选项

  • "enable"

  • "disable"

name

字符串 / 必填

签名名称。

pattern

字符串

匹配模式。

severity

字符串

严重性。

选项

  • "high"

  • "medium"

  • "low"

status

字符串

状态。

选项

  • "enable"

  • "disable"

target

列表 / 元素=字符串

匹配 HTTP 目标。

选项

  • "arg"

  • "arg-name"

  • "req-body"

  • "req-cookie"

  • "req-cookie-name"

  • "req-filename"

  • "req-header"

  • "req-header-name"

  • "req-raw-uri"

  • "req-uri"

  • "resp-body"

  • "resp-hdr"

  • "resp-status"

disabled_signature

列表 / 元素=字典

禁用的签名。

id

整数 / 必填

签名 ID。请参阅 注释。来源 waf.signature.id。

disabled_sub_class

列表 / 元素=字典

禁用的签名子类。

id

整数 / 必填

签名子类 ID。请参阅 注释。来源 waf.sub-class.id。

main_class

列表 / 元素=字典

主要签名类。

action

字符串

操作。

选项

  • "allow"

  • "block"

  • "erase"

id

整数 / 必填

主要签名类 ID。请参阅 注释。来源 waf.main-class.id。

log

字符串

启用/禁用日志记录。

选项

  • "enable"

  • "disable"

severity

字符串

严重性。

选项

  • "high"

  • "medium"

  • "low"

status

字符串

状态。

选项

  • "enable"

  • "disable"

url_access

列表 / 元素=字典

URL访问列表。

access_pattern

列表 / 元素=字典

URL访问模式。

id

整数 / 必填

URL访问模式ID。参见 注释

negate

字符串

启用/禁用匹配否定。

选项

  • "enable"

  • "disable"

pattern

字符串

URL 模式。

regex

字符串

启用/禁用基于正则表达式的模式匹配。

选项

  • "enable"

  • "disable"

srcaddr

字符串

源地址。源防火墙.address.name 防火墙.addrgrp.name。

action

字符串

操作。

选项

  • "bypass"

  • "permit"

  • "block"

address

字符串

主机地址。来源 firewall.address.name firewall.addrgrp.name。

id

整数 / 必填

URL访问ID。参见 注释

log

字符串

启用/禁用日志记录。

选项

  • "enable"

  • "disable"

severity

字符串

严重性。

选项

  • "high"

  • "medium"

  • "low"

注释

注意

  • 旧的fortiosapi已弃用,httpapi是运行playbook的首选方式。

  • 该模块支持check_mode。

示例

- name: Configure Web application firewall configuration.
  fortinet.fortios.fortios_waf_profile:
      vdom: "{{ vdom }}"
      state: "present"
      access_token: "<your_own_value>"
      waf_profile:
          address_list:
              blocked_address:
                  -
                      name: "default_name_5 (source firewall.address.name firewall.addrgrp.name)"
              blocked_log: "enable"
              severity: "high"
              status: "enable"
              trusted_address:
                  -
                      name: "default_name_10 (source firewall.address.name firewall.addrgrp.name)"
          comment: "Comment."
          constraint:
              content_length:
                  action: "allow"
                  length: "67108864"
                  log: "enable"
                  severity: "high"
                  status: "enable"
              exception:
                  -
                      address: "<your_own_value> (source firewall.address.name firewall.addrgrp.name)"
                      content_length: "enable"
                      header_length: "enable"
                      hostname: "enable"
                      id: "24"
                      line_length: "enable"
                      malformed: "enable"
                      max_cookie: "enable"
                      max_header_line: "enable"
                      max_range_segment: "enable"
                      max_url_param: "enable"
                      method: "enable"
                      param_length: "enable"
                      pattern: "<your_own_value>"
                      regex: "enable"
                      url_param_length: "enable"
                      version: "enable"
              header_length:
                  action: "allow"
                  length: "8192"
                  log: "enable"
                  severity: "high"
                  status: "enable"
              hostname:
                  action: "allow"
                  log: "enable"
                  severity: "high"
                  status: "enable"
              line_length:
                  action: "allow"
                  length: "1024"
                  log: "enable"
                  severity: "high"
                  status: "enable"
              malformed:
                  action: "allow"
                  log: "enable"
                  severity: "high"
                  status: "enable"
              max_cookie:
                  action: "allow"
                  log: "enable"
                  max_cookie: "16"
                  severity: "high"
                  status: "enable"
              max_header_line:
                  action: "allow"
                  log: "enable"
                  max_header_line: "32"
                  severity: "high"
                  status: "enable"
              max_range_segment:
                  action: "allow"
                  log: "enable"
                  max_range_segment: "5"
                  severity: "high"
                  status: "enable"
              max_url_param:
                  action: "allow"
                  log: "enable"
                  max_url_param: "16"
                  severity: "high"
                  status: "enable"
              method:
                  action: "allow"
                  log: "enable"
                  severity: "high"
                  status: "enable"
              param_length:
                  action: "allow"
                  length: "8192"
                  log: "enable"
                  severity: "high"
                  status: "enable"
              url_param_length:
                  action: "allow"
                  length: "8192"
                  log: "enable"
                  severity: "high"
                  status: "enable"
              version:
                  action: "allow"
                  log: "enable"
                  severity: "high"
                  status: "enable"
          extended_log: "enable"
          external: "disable"
          method:
              default_allowed_methods: "get"
              log: "enable"
              method_policy:
                  -
                      address: "<your_own_value> (source firewall.address.name firewall.addrgrp.name)"
                      allowed_methods: "get"
                      id: "113"
                      pattern: "<your_own_value>"
                      regex: "enable"
              severity: "high"
              status: "enable"
          name: "default_name_118"
          signature:
              credit_card_detection_threshold: "3"
              custom_signature:
                  -
                      action: "allow"
                      case_sensitivity: "disable"
                      direction: "request"
                      log: "enable"
                      name: "default_name_126"
                      pattern: "<your_own_value>"
                      severity: "high"
                      status: "enable"
                      target: "arg"
              disabled_signature:
                  -
                      id: "132 (source waf.signature.id)"
              disabled_sub_class:
                  -
                      id: "134 (source waf.sub-class.id)"
              main_class:
                  -
                      action: "allow"
                      id: "137 (source waf.main-class.id)"
                      log: "enable"
                      severity: "high"
                      status: "enable"
          url_access:
              -
                  access_pattern:
                      -
                          id: "143"
                          negate: "enable"
                          pattern: "<your_own_value>"
                          regex: "enable"
                          srcaddr: "<your_own_value> (source firewall.address.name firewall.addrgrp.name)"
                  action: "bypass"
                  address: "<your_own_value> (source firewall.address.name firewall.addrgrp.name)"
                  id: "150"
                  log: "enable"
                  severity: "high"

返回值

常用的返回值已在 此处 记录,以下是此模块独有的字段

描述

build

字符串

FortiGate镜像的版本号

返回值:始终

示例: "1547"

http_method

字符串

上次用于将内容置入FortiGate的方法

返回值:始终

示例: "PUT"

http_status

字符串

FortiGate在上次应用的操作中给出的最后结果

返回值:始终

示例: "200"

mkey

字符串

上次调用FortiGate时使用的主密钥(ID)

返回值:成功

示例: "id"

name

字符串

用于满足请求的表的名称

返回值:始终

示例: "urlfilter"

path

字符串

用于满足请求的表的路径

返回值:始终

示例: "webfilter"

revision

字符串

内部修订号

返回值:始终

示例: "17.0.2.10658"

serial

字符串

设备的序列号

返回值:始终

示例: "FGVMEVYYQT3AB5352"

status

字符串

操作结果的指示

返回值:始终

示例: "success"

vdom

字符串

使用的虚拟域

返回值:始终

示例: "root"

version

字符串

FortiGate的版本

返回值:始终

示例: "v5.6.3"

作者

  • 郑链 (@chillancezen)

  • 薛杰 (@JieX19)

  • 陆洪滨 (@fgtdev-hblu)

  • 沈锋 (@frankshen01)

  • Miguel Angel Munoz (@mamunozgonzalez)

  • Nicolas Thomas (@thomnico)