fortinet.fortimanager.fmgr_waf_profile 模块 – Web 应用防火墙配置。

注意

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

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

要安装它,请使用: ansible-galaxy collection install fortinet.fortimanager

要在 playbook 中使用它,请指定: fortinet.fortimanager.fmgr_waf_profile

fortinet.fortimanager 1.0.0 中的新增功能

概要

  • 此模块能够配置 FortiManager 设备。

  • 示例包含所有参数和值,在使用前需要将其调整为数据源。

参数

参数

注释

access_token

字符串

无需用户名和密码即可访问 FortiManager 的令牌。

adom

字符串 / 必填

请求 URL 中的参数 (adom)。

bypass_validation

布尔值

仅当模块模式与 FortiManager API 结构不同时设置为 True,模块将继续执行而不验证参数。

选项

  • false ← (默认)

  • true

enable_log

布尔值

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

选项

  • false ← (默认)

  • true

forticloud_access_token

字符串

使用 forticloud API 访问令牌对 Ansible 客户端进行身份验证。

proposed_method

字符串

底层 Json RPC 请求的覆盖方法。

选项

  • "update"

  • "set"

  • "add"

rc_failed

列表 / 元素=整数

将覆盖失败条件的 rc 代码列表。

rc_succeeded

列表 / 元素=整数

将覆盖成功条件的 rc 代码列表。

state

字符串 / 必填

创建、更新或删除对象的指令。

选项

  • "present"

  • "absent"

waf_profile

字典

设置的顶级参数。

address_list

别名:address-list

字典

地址列表。

blocked_address

别名:blocked-address

任意

(列表或字符串) 被阻止的地址。

blocked_log

别名:blocked-log

字符串

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

选项

  • "disable"

  • "enable"

severity

字符串

严重性。

选项

  • "low"

  • "medium"

  • "high"

status

字符串

状态。

选项

  • "disable"

  • "enable"

trusted_address

别名:trusted-address

任意

(列表或字符串) 可信地址。

comment

字符串

注释。

constraint

字典

约束。

content_length

别名:content-length

字典

内容长度。

action

字符串

动作。

选项

  • "allow"

  • "block"

length

整数

HTTP 内容长度(以字节为单位)

log

字符串

启用/禁用日志记录。

选项

  • "disable"

  • "enable"

severity

字符串

严重性。

选项

  • "low"

  • "medium"

  • "high"

status

字符串

启用/禁用约束。

选项

  • "disable"

  • "enable"

exception

列表 / 元素=字典

例外。

address

字符串

主机地址。

content_length

别名:content-length

字符串

请求中的 HTTP 内容长度。

选项

  • "disable"

  • "enable"

header_length

别名:header-length

字符串

请求中的 HTTP 头部长度。

选项

  • "disable"

  • "enable"

hostname

字符串

启用/禁用主机名检查。

选项

  • "disable"

  • "enable"

id

整数

异常 ID。

line_length

别名:line-length

字符串

请求中的 HTTP 行长度。

选项

  • "disable"

  • "enable"

malformed

字符串

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

选项

  • "disable"

  • "enable"

max_cookie

别名:max-cookie

字符串

HTTP 请求中的最大 Cookie 数量。

选项

  • "disable"

  • "enable"

max_header_line

别名:max-header-line

字符串

HTTP 头部行的最大数量。

选项

  • "disable"

  • "enable"

max_range_segment

别名:max-range-segment

字符串

HTTP range 行中最大范围段数。

选项

  • "disable"

  • "enable"

max_url_param

别名:max-url-param

字符串

URL 参数最大数量。

选项

  • "disable"

  • "enable"

方法

字符串

启用/禁用 HTTP 方法检查。

选项

  • "disable"

  • "enable"

param_length

别名:param-length

字符串

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

选项

  • "disable"

  • "enable"

模式

字符串

URL 模式。

正则表达式

字符串

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

选项

  • "disable"

  • "enable"

url_param_length

别名:url-param-length

字符串

URL 中参数的最大长度。

选项

  • "disable"

  • "enable"

版本

字符串

启用/禁用 HTTP 版本检查。

选项

  • "disable"

  • "enable"

header_length

别名:header-length

字典

报头长度。

action

字符串

动作。

选项

  • "allow"

  • "block"

length

整数

HTTP 报头长度(字节)

log

字符串

启用/禁用日志记录。

选项

  • "disable"

  • "enable"

severity

字符串

严重性。

选项

  • "low"

  • "medium"

  • "high"

status

字符串

启用/禁用约束。

选项

  • "disable"

  • "enable"

hostname

字典

主机名。

操作

字符串

动作。

选项

  • "allow"

  • "block"

日志

字符串

启用/禁用日志记录。

选项

  • "disable"

  • "enable"

严重性

字符串

严重性。

选项

  • "low"

  • "medium"

  • "high"

状态

字符串

启用/禁用约束。

选项

  • "disable"

  • "enable"

line_length

别名:line-length

字典

行长度。

action

字符串

动作。

选项

  • "allow"

  • "block"

length

整数

HTTP 行长度(字节)

log

字符串

启用/禁用日志记录。

选项

  • "disable"

  • "enable"

severity

字符串

严重性。

选项

  • "low"

  • "medium"

  • "high"

status

字符串

启用/禁用约束。

选项

  • "disable"

  • "enable"

malformed

字典

格式错误。

操作

字符串

动作。

选项

  • "allow"

  • "block"

日志

字符串

启用/禁用日志记录。

选项

  • "disable"

  • "enable"

严重性

字符串

严重性。

选项

  • "low"

  • "medium"

  • "high"

状态

字符串

启用/禁用约束。

选项

  • "disable"

  • "enable"

max_cookie

别名:max-cookie

字典

Cookie 最大数量。

action

字符串

动作。

选项

  • "allow"

  • "block"

log

字符串

启用/禁用日志记录。

选项

  • "disable"

  • "enable"

max_cookie

别名:max-cookie

整数

HTTP 请求中 Cookie 的最大数量

severity

字符串

严重性。

选项

  • "low"

  • "medium"

  • "high"

status

字符串

启用/禁用约束。

选项

  • "disable"

  • "enable"

max_header_line

别名:max-header-line

字典

HTTP 报头行最大数量。

action

字符串

动作。

选项

  • "allow"

  • "block"

log

字符串

启用/禁用日志记录。

选项

  • "disable"

  • "enable"

max_header_line

别名:max-header-line

整数

HTTP 报头行的最大数量

severity

字符串

严重性。

选项

  • "low"

  • "medium"

  • "high"

status

字符串

启用/禁用约束。

选项

  • "disable"

  • "enable"

max_range_segment

别名:max-range-segment

字典

范围段最大数量。

action

字符串

动作。

选项

  • "allow"

  • "block"

log

字符串

启用/禁用日志记录。

选项

  • "disable"

  • "enable"

max_range_segment

别名:max-range-segment

整数

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

severity

字符串

严重性。

选项

  • "low"

  • "medium"

  • "high"

status

字符串

启用/禁用约束。

选项

  • "disable"

  • "enable"

max_url_param

别名:max-url-param

字典

URL 参数最大数量。

action

字符串

动作。

选项

  • "allow"

  • "block"

log

字符串

启用/禁用日志记录。

选项

  • "disable"

  • "enable"

max_url_param

别名:max-url-param

整数

URL 参数的最大数量

severity

字符串

严重性。

选项

  • "low"

  • "medium"

  • "high"

status

字符串

启用/禁用约束。

选项

  • "disable"

  • "enable"

方法

字典

方法。

操作

字符串

动作。

选项

  • "allow"

  • "block"

日志

字符串

启用/禁用日志记录。

选项

  • "disable"

  • "enable"

严重性

字符串

严重性。

选项

  • "low"

  • "medium"

  • "high"

状态

字符串

启用/禁用约束。

选项

  • "disable"

  • "enable"

param_length

别名:param-length

字典

参数长度。

action

字符串

动作。

选项

  • "allow"

  • "block"

length

整数

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

log

字符串

启用/禁用日志记录。

选项

  • "disable"

  • "enable"

severity

字符串

严重性。

选项

  • "low"

  • "medium"

  • "high"

status

字符串

启用/禁用约束。

选项

  • "disable"

  • "enable"

url_param_length

别名:url-param-length

字典

URL 参数长度。

action

字符串

动作。

选项

  • "allow"

  • "block"

length

整数

URL 参数的最大长度(字节)

log

字符串

启用/禁用日志记录。

选项

  • "disable"

  • "enable"

severity

字符串

严重性。

选项

  • "low"

  • "medium"

  • "high"

status

字符串

启用/禁用约束。

选项

  • "disable"

  • "enable"

版本

字典

版本。

操作

字符串

动作。

选项

  • "allow"

  • "block"

日志

字符串

启用/禁用日志记录。

选项

  • "disable"

  • "enable"

严重性

字符串

严重性。

选项

  • "low"

  • "medium"

  • "high"

状态

字符串

启用/禁用约束。

选项

  • "disable"

  • "enable"

extended_log

别名:extended-log

字符串

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

选项

  • "disable"

  • "enable"

外部

字符串

禁用/启用外部 HTTP 检查。

选项

  • "disable"

  • "enable"

方法

字典

方法。

default_allowed_methods

别名:default-allowed-methods

列表 / 元素=字符串

方法。

选项

  • "delete"

  • "get"

  • "head"

  • "options"

  • "post"

  • "put"

  • "trace"

  • "others"

  • "connect"

日志

字符串

启用/禁用日志记录。

选项

  • "disable"

  • "enable"

method_policy

别名:method-policy

列表 / 元素=字典

方法策略。

address

字符串

主机地址。

allowed_methods

别名:allowed-methods

列表 / 元素=字符串

允许的方法。

选项

  • "delete"

  • "get"

  • "head"

  • "options"

  • "post"

  • "put"

  • "trace"

  • "others"

  • "connect"

id

整数

HTTP 方法策略 ID。

pattern

字符串

URL 模式。

regex

字符串

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

选项

  • "disable"

  • "enable"

严重性

字符串

严重性。

选项

  • "low"

  • "medium"

  • "high"

状态

字符串

状态。

选项

  • "disable"

  • "enable"

名称

字符串 / 必填

WAF 配置文件名称。

签名

字典

签名。

credit_card_detection_threshold

别名:credit-card-detection-threshold

整数

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

custom_signature

别名:custom-signature

列表 / 元素=字典

自定义签名。

action

字符串

动作。

选项

  • "allow"

  • "block"

  • "erase"

case_sensitivity

别名:case-sensitivity

字符串

模式中的大小写敏感性。

选项

  • "disable"

  • "enable"

direction

字符串

流量方向。

选项

  • "request"

  • "response"

log

字符串

启用/禁用日志记录。

选项

  • "disable"

  • "enable"

name

字符串

签名名称。

pattern

字符串

匹配模式。

severity

字符串

严重性。

选项

  • "low"

  • "medium"

  • "high"

status

字符串

状态。

选项

  • "disable"

  • "enable"

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

别名:disabled-signature

任意

(列表或字符串) 禁用的签名

disabled_sub_class

别名:disabled-sub-class

任意

(列表或字符串) 禁用的签名子类。

main_class

别名:main-class

字典

主类。

action

字符串

动作。

选项

  • "allow"

  • "block"

  • "erase"

id

整数

主签名类 ID。

log

字符串

启用/禁用日志记录。

选项

  • "disable"

  • "enable"

severity

字符串

严重性。

选项

  • "low"

  • "medium"

  • "high"

status

字符串

状态。

选项

  • "disable"

  • "enable"

url_access

别名:url-access

列表 / 元素=字典

URL 访问。

access_pattern

别名:access-pattern

列表 / 元素=字典

访问模式。

id

整数

URL 访问模式 ID。

negate

字符串

启用/禁用匹配否定。

选项

  • "disable"

  • "enable"

pattern

字符串

URL 模式。

regex

字符串

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

选项

  • "disable"

  • "enable"

srcaddr

字符串

源地址。

action

字符串

动作。

选项

  • "bypass"

  • "permit"

  • "block"

address

字符串

主机地址。

id

整数

URL访问ID。

log

字符串

启用/禁用日志记录。

选项

  • "disable"

  • "enable"

severity

字符串

严重性。

选项

  • "low"

  • "medium"

  • "high"

workspace_locking_adom

字符串

在工作区模式下运行FortiManager时要锁定的ADOM,值可以是global和其他值,包括root。

workspace_locking_timeout

整数

等待其他用户释放工作区锁的最大时间(秒)。

默认值: 300

注释

注意

  • 从2.4.0版本开始,所有输入参数都使用下划线命名约定(snake_case)。请将诸如“var-name”之类的参数更改为“var_name”。旧的参数名称仍然可用,但您会收到弃用警告。您可以在ansible.cfg中设置deprecation_warnings=False来忽略此警告。

  • 此FortiManager模块支持在工作区锁定模式下运行,顶级参数workspace_locking_adom和workspace_locking_timeout有助于完成此工作。

  • 要创建或更新对象,请使用state present指令。

  • 要删除对象,请使用state absent指令。

  • 通常,当返回非零rc时,运行一个模块可能会失败。您还可以使用参数rc_failed和rc_succeeded覆盖失败或成功的条件。

示例

- name: Example playbook (generated based on argument schema)
  hosts: fortimanagers
  connection: httpapi
  vars:
    ansible_httpapi_use_ssl: true
    ansible_httpapi_validate_certs: false
    ansible_httpapi_port: 443
  tasks:
    - name: Web application firewall configuration.
      fortinet.fortimanager.fmgr_waf_profile:
        # bypass_validation: false
        workspace_locking_adom: <value in [global, custom adom including root]>
        workspace_locking_timeout: 300
        # rc_succeeded: [0, -2, -3, ...]
        # rc_failed: [-2, -3, ...]
        adom: <your own value>
        state: present # <value in [present, absent]>
        waf_profile:
          comment: <string>
          extended_log: <value in [disable, enable]>
          external: <value in [disable, enable]>
          name: <string>
          url_access:
            -
              access_pattern:
                -
                  id: <integer>
                  negate: <value in [disable, enable]>
                  pattern: <string>
                  regex: <value in [disable, enable]>
                  srcaddr: <string>
              action: <value in [bypass, permit, block]>
              address: <string>
              id: <integer>
              log: <value in [disable, enable]>
              severity: <value in [low, medium, high]>
          address_list:
            blocked_address: <list or string>
            blocked_log: <value in [disable, enable]>
            severity: <value in [low, medium, high]>
            status: <value in [disable, enable]>
            trusted_address: <list or string>
          constraint:
            content_length:
              action: <value in [allow, block]>
              length: <integer>
              log: <value in [disable, enable]>
              severity: <value in [low, medium, high]>
              status: <value in [disable, enable]>
            exception:
              -
                address: <string>
                content_length: <value in [disable, enable]>
                header_length: <value in [disable, enable]>
                hostname: <value in [disable, enable]>
                id: <integer>
                line_length: <value in [disable, enable]>
                malformed: <value in [disable, enable]>
                max_cookie: <value in [disable, enable]>
                max_header_line: <value in [disable, enable]>
                max_range_segment: <value in [disable, enable]>
                max_url_param: <value in [disable, enable]>
                method: <value in [disable, enable]>
                param_length: <value in [disable, enable]>
                pattern: <string>
                regex: <value in [disable, enable]>
                url_param_length: <value in [disable, enable]>
                version: <value in [disable, enable]>
            header_length:
              action: <value in [allow, block]>
              length: <integer>
              log: <value in [disable, enable]>
              severity: <value in [low, medium, high]>
              status: <value in [disable, enable]>
            hostname:
              action: <value in [allow, block]>
              log: <value in [disable, enable]>
              severity: <value in [low, medium, high]>
              status: <value in [disable, enable]>
            line_length:
              action: <value in [allow, block]>
              length: <integer>
              log: <value in [disable, enable]>
              severity: <value in [low, medium, high]>
              status: <value in [disable, enable]>
            malformed:
              action: <value in [allow, block]>
              log: <value in [disable, enable]>
              severity: <value in [low, medium, high]>
              status: <value in [disable, enable]>
            max_cookie:
              action: <value in [allow, block]>
              log: <value in [disable, enable]>
              max_cookie: <integer>
              severity: <value in [low, medium, high]>
              status: <value in [disable, enable]>
            max_header_line:
              action: <value in [allow, block]>
              log: <value in [disable, enable]>
              max_header_line: <integer>
              severity: <value in [low, medium, high]>
              status: <value in [disable, enable]>
            max_range_segment:
              action: <value in [allow, block]>
              log: <value in [disable, enable]>
              max_range_segment: <integer>
              severity: <value in [low, medium, high]>
              status: <value in [disable, enable]>
            max_url_param:
              action: <value in [allow, block]>
              log: <value in [disable, enable]>
              max_url_param: <integer>
              severity: <value in [low, medium, high]>
              status: <value in [disable, enable]>
            method:
              action: <value in [allow, block]>
              log: <value in [disable, enable]>
              severity: <value in [low, medium, high]>
              status: <value in [disable, enable]>
            param_length:
              action: <value in [allow, block]>
              length: <integer>
              log: <value in [disable, enable]>
              severity: <value in [low, medium, high]>
              status: <value in [disable, enable]>
            url_param_length:
              action: <value in [allow, block]>
              length: <integer>
              log: <value in [disable, enable]>
              severity: <value in [low, medium, high]>
              status: <value in [disable, enable]>
            version:
              action: <value in [allow, block]>
              log: <value in [disable, enable]>
              severity: <value in [low, medium, high]>
              status: <value in [disable, enable]>
          method:
            default_allowed_methods:
              - "delete"
              - "get"
              - "head"
              - "options"
              - "post"
              - "put"
              - "trace"
              - "others"
              - "connect"
            log: <value in [disable, enable]>
            method_policy:
              -
                address: <string>
                allowed_methods:
                  - "delete"
                  - "get"
                  - "head"
                  - "options"
                  - "post"
                  - "put"
                  - "trace"
                  - "others"
                  - "connect"
                id: <integer>
                pattern: <string>
                regex: <value in [disable, enable]>
            severity: <value in [low, medium, high]>
            status: <value in [disable, enable]>
          signature:
            credit_card_detection_threshold: <integer>
            custom_signature:
              -
                action: <value in [allow, block, erase]>
                case_sensitivity: <value in [disable, enable]>
                direction: <value in [request, response]>
                log: <value in [disable, enable]>
                name: <string>
                pattern: <string>
                severity: <value in [low, medium, high]>
                status: <value in [disable, enable]>
                target:
                  - "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: <list or string>
            disabled_sub_class: <list or string>
            main_class:
              action: <value in [allow, block, erase]>
              id: <integer>
              log: <value in [disable, enable]>
              severity: <value in [low, medium, high]>
              status: <value in [disable, enable]>

返回值

公共返回值已在此处记录此处,以下是此模块特有的字段

描述

meta

字典

请求的结果。

返回值:始终

request_url

字符串

请求的完整URL。

返回值:始终

示例: "/sys/login/user"

response_code

整数

API请求的状态。

返回值:始终

示例: 0

response_data

列表 / 元素=字符串

API响应。

返回值:始终

response_message

字符串

API响应的描述性消息。

返回值:始终

示例: "OK."

system_information

字典

目标系统的信息。

返回值:始终

rc

整数

请求的状态。

返回值:始终

示例: 0

version_check_warning

列表 / 元素=字符串

如果剧本中使用的参数不受当前FortiManager版本支持,则会发出警告。

返回值:复杂

作者

  • 杜欣蔚 (@dux-fortinet)

  • 李星 (@lix-fortinet)

  • 薛杰 (@JieX19)

  • 郑林 (@chillancezen)

  • 沈芳 (@fshen01)

  • 卢宏斌 (@fgtdev-hblu)