fortinet.fortimanager.fmgr_waf_profile – Web application firewall configuration.

Note

This plugin is part of the fortinet.fortimanager collection (version 2.1.4).

You might already have this collection installed if you are using the ansible package. It is not included in ansible-core. To check whether it is installed, run ansible-galaxy collection list.

To install it, use: ansible-galaxy collection install fortinet.fortimanager.

To use it in a playbook, specify: fortinet.fortimanager.fmgr_waf_profile.

New in version 2.10: of fortinet.fortimanager

Synopsis

  • This module is able to configure a FortiManager device.

  • Examples include all parameters and values which need to be adjusted to data sources before usage.

Parameters

Parameter Choices/Defaults Comments
adom
string / required
the parameter (adom) in requested url
bypass_validation
boolean
    Choices:
  • no ←
  • yes
only set to True when module schema diffs with FortiManager API structure, module continues to execute without validating parameters
enable_log
boolean
    Choices:
  • no ←
  • yes
Enable/Disable logging for task
proposed_method
string
    Choices:
  • update
  • set
  • add
The overridden method for the underlying Json RPC request
rc_failed
list / elements=string
the rc codes list with which the conditions to fail will be overriden
rc_succeeded
list / elements=string
the rc codes list with which the conditions to succeed will be overriden
state
string / required
    Choices:
  • present
  • absent
the directive to create, update or delete an object
waf_profile
dictionary
the top level parameters set
address-list
dictionary
no description
blocked-address
string
Blocked address.
blocked-log
string
    Choices:
  • disable
  • enable
Enable/disable logging on blocked addresses.
severity
string
    Choices:
  • low
  • medium
  • high
Severity.
status
string
    Choices:
  • disable
  • enable
Status.
trusted-address
string
Trusted address.
comment
string
Comment.
constraint
dictionary
no description
content-length
dictionary
no description
action
string
    Choices:
  • allow
  • block
Action.
length
integer
Length of HTTP content in bytes (0 to 2147483647).
log
string
    Choices:
  • disable
  • enable
Enable/disable logging.
severity
string
    Choices:
  • low
  • medium
  • high
Severity.
status
string
    Choices:
  • disable
  • enable
Enable/disable the constraint.
exception
list / elements=string
Exception.
address
string
Host address.
content-length
string
    Choices:
  • disable
  • enable
HTTP content length in request.
header-length
string
    Choices:
  • disable
  • enable
HTTP header length in request.
hostname
string
    Choices:
  • disable
  • enable
Enable/disable hostname check.
id
integer
Exception ID.
line-length
string
    Choices:
  • disable
  • enable
HTTP line length in request.
malformed
string
    Choices:
  • disable
  • enable
Enable/disable malformed HTTP request check.
max-cookie
string
    Choices:
  • disable
  • enable
Maximum number of cookies in HTTP request.
max-header-line
string
    Choices:
  • disable
  • enable
Maximum number of HTTP header line.
max-range-segment
string
    Choices:
  • disable
  • enable
Maximum number of range segments in HTTP range line.
max-url-param
string
    Choices:
  • disable
  • enable
Maximum number of parameters in URL.
method
string
    Choices:
  • disable
  • enable
Enable/disable HTTP method check.
param-length
string
    Choices:
  • disable
  • enable
Maximum length of parameter in URL, HTTP POST request or HTTP body.
pattern
string
URL pattern.
regex
string
    Choices:
  • disable
  • enable
Enable/disable regular expression based pattern match.
url-param-length
string
    Choices:
  • disable
  • enable
Maximum length of parameter in URL.
version
string
    Choices:
  • disable
  • enable
Enable/disable HTTP version check.
header-length
dictionary
no description
action
string
    Choices:
  • allow
  • block
Action.
length
integer
Length of HTTP header in bytes (0 to 2147483647).
log
string
    Choices:
  • disable
  • enable
Enable/disable logging.
severity
string
    Choices:
  • low
  • medium
  • high
Severity.
status
string
    Choices:
  • disable
  • enable
Enable/disable the constraint.
hostname
dictionary
no description
action
string
    Choices:
  • allow
  • block
Action.
log
string
    Choices:
  • disable
  • enable
Enable/disable logging.
severity
string
    Choices:
  • low
  • medium
  • high
Severity.
status
string
    Choices:
  • disable
  • enable
Enable/disable the constraint.
line-length
dictionary
no description
action
string
    Choices:
  • allow
  • block
Action.
length
integer
Length of HTTP line in bytes (0 to 2147483647).
log
string
    Choices:
  • disable
  • enable
Enable/disable logging.
severity
string
    Choices:
  • low
  • medium
  • high
Severity.
status
string
    Choices:
  • disable
  • enable
Enable/disable the constraint.
malformed
dictionary
no description
action
string
    Choices:
  • allow
  • block
Action.
log
string
    Choices:
  • disable
  • enable
Enable/disable logging.
severity
string
    Choices:
  • low
  • medium
  • high
Severity.
status
string
    Choices:
  • disable
  • enable
Enable/disable the constraint.
max-cookie
dictionary
no description
action
string
    Choices:
  • allow
  • block
Action.
log
string
    Choices:
  • disable
  • enable
Enable/disable logging.
max-cookie
integer
Maximum number of cookies in HTTP request (0 to 2147483647).
severity
string
    Choices:
  • low
  • medium
  • high
Severity.
status
string
    Choices:
  • disable
  • enable
Enable/disable the constraint.
max-header-line
dictionary
no description
action
string
    Choices:
  • allow
  • block
Action.
log
string
    Choices:
  • disable
  • enable
Enable/disable logging.
max-header-line
integer
Maximum number HTTP header lines (0 to 2147483647).
severity
string
    Choices:
  • low
  • medium
  • high
Severity.
status
string
    Choices:
  • disable
  • enable
Enable/disable the constraint.
max-range-segment
dictionary
no description
action
string
    Choices:
  • allow
  • block
Action.
log
string
    Choices:
  • disable
  • enable
Enable/disable logging.
max-range-segment
integer
Maximum number of range segments in HTTP range line (0 to 2147483647).
severity
string
    Choices:
  • low
  • medium
  • high
Severity.
status
string
    Choices:
  • disable
  • enable
Enable/disable the constraint.
max-url-param
dictionary
no description
action
string
    Choices:
  • allow
  • block
Action.
log
string
    Choices:
  • disable
  • enable
Enable/disable logging.
max-url-param
integer
Maximum number of parameters in URL (0 to 2147483647).
severity
string
    Choices:
  • low
  • medium
  • high
Severity.
status
string
    Choices:
  • disable
  • enable
Enable/disable the constraint.
method
dictionary
no description
action
string
    Choices:
  • allow
  • block
Action.
log
string
    Choices:
  • disable
  • enable
Enable/disable logging.
severity
string
    Choices:
  • low
  • medium
  • high
Severity.
status
string
    Choices:
  • disable
  • enable
Enable/disable the constraint.
param-length
dictionary
no description
action
string
    Choices:
  • allow
  • block
Action.
length
integer
Maximum length of parameter in URL, HTTP POST request or HTTP body in bytes (0 to 2147483647).
log
string
    Choices:
  • disable
  • enable
Enable/disable logging.
severity
string
    Choices:
  • low
  • medium
  • high
Severity.
status
string
    Choices:
  • disable
  • enable
Enable/disable the constraint.
url-param-length
dictionary
no description
action
string
    Choices:
  • allow
  • block
Action.
length
integer
Maximum length of URL parameter in bytes (0 to 2147483647).
log
string
    Choices:
  • disable
  • enable
Enable/disable logging.
severity
string
    Choices:
  • low
  • medium
  • high
Severity.
status
string
    Choices:
  • disable
  • enable
Enable/disable the constraint.
version
dictionary
no description
action
string
    Choices:
  • allow
  • block
Action.
log
string
    Choices:
  • disable
  • enable
Enable/disable logging.
severity
string
    Choices:
  • low
  • medium
  • high
Severity.
status
string
    Choices:
  • disable
  • enable
Enable/disable the constraint.
extended-log
string
    Choices:
  • disable
  • enable
Enable/disable extended logging.
external
string
    Choices:
  • disable
  • enable
Disable/Enable external HTTP Inspection.
method
dictionary
no description
default-allowed-methods
list / elements=string
    Choices:
  • delete
  • get
  • head
  • options
  • post
  • put
  • trace
  • others
  • connect
Methods.
log
string
    Choices:
  • disable
  • enable
Enable/disable logging.
method-policy
list / elements=string
Method-Policy.
address
string
Host address.
allowed-methods
list / elements=string
    Choices:
  • delete
  • get
  • head
  • options
  • post
  • put
  • trace
  • others
  • connect
Allowed Methods.
id
integer
HTTP method policy ID.
pattern
string
URL pattern.
regex
string
    Choices:
  • disable
  • enable
Enable/disable regular expression based pattern match.
severity
string
    Choices:
  • low
  • medium
  • high
Severity.
status
string
    Choices:
  • disable
  • enable
Status.
name
string
WAF Profile name.
signature
dictionary
no description
credit-card-detection-threshold
integer
The minimum number of Credit cards to detect violation.
custom-signature
list / elements=string
Custom-Signature.
action
string
    Choices:
  • allow
  • block
  • erase
Action.
case-sensitivity
string
    Choices:
  • disable
  • enable
Case sensitivity in pattern.
direction
string
    Choices:
  • request
  • response
Traffic direction.
log
string
    Choices:
  • disable
  • enable
Enable/disable logging.
name
string
Signature name.
pattern
string
Match pattern.
severity
string
    Choices:
  • low
  • medium
  • high
Severity.
status
string
    Choices:
  • disable
  • enable
Status.
target
list / elements=string
    Choices:
  • 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
Match HTTP target.
disabled-signature
string
Disabled signatures
disabled-sub-class
string
Disabled signature subclasses.
main-class
dictionary
no description
action
string
    Choices:
  • allow
  • block
  • erase
Action.
id
integer
Main signature class ID.
log
string
    Choices:
  • disable
  • enable
Enable/disable logging.
severity
string
    Choices:
  • low
  • medium
  • high
Severity.
status
string
    Choices:
  • disable
  • enable
Status.
url-access
list / elements=string
Url-Access.
access-pattern
list / elements=string
Access-Pattern.
id
integer
URL access pattern ID.
negate
string
    Choices:
  • disable
  • enable
Enable/disable match negation.
pattern
string
URL pattern.
regex
string
    Choices:
  • disable
  • enable
Enable/disable regular expression based pattern match.
srcaddr
string
Source address.
action
string
    Choices:
  • bypass
  • permit
  • block
Action.
address
string
Host address.
id
integer
URL access ID.
log
string
    Choices:
  • disable
  • enable
Enable/disable logging.
severity
string
    Choices:
  • low
  • medium
  • high
Severity.
workspace_locking_adom
string
the adom to lock for FortiManager running in workspace mode, the value can be global and others including root
workspace_locking_timeout
integer
Default:
300
the maximum time in seconds to wait for other user to release the workspace lock

Notes

Note

  • Running in workspace locking mode is supported in this FortiManager module, the top level parameters workspace_locking_adom and workspace_locking_timeout help do the work.

  • To create or update an object, use state present directive.

  • To delete an object, use state absent directive.

  • Normally, running one module can fail when a non-zero rc is returned. you can also override the conditions to fail or succeed with parameters rc_failed and rc_succeeded

Examples

- hosts: fortimanager-inventory
  collections:
    - fortinet.fortimanager
  connection: httpapi
  vars:
     ansible_httpapi_use_ssl: True
     ansible_httpapi_validate_certs: False
     ansible_httpapi_port: 443
  tasks:
   - name: Web application firewall configuration.
     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: <value in [present, absent]>
        waf_profile:
           comment: <value of string>
           extended-log: <value in [disable, enable]>
           external: <value in [disable, enable]>
           name: <value of string>
           url-access:
             -
                 access-pattern:
                   -
                       id: <value of integer>
                       negate: <value in [disable, enable]>
                       pattern: <value of string>
                       regex: <value in [disable, enable]>
                       srcaddr: <value of string>
                 action: <value in [bypass, permit, block]>
                 address: <value of string>
                 id: <value of integer>
                 log: <value in [disable, enable]>
                 severity: <value in [low, medium, high]>
           address-list:
              blocked-address: <value of string>
              blocked-log: <value in [disable, enable]>
              severity: <value in [low, medium, high]>
              status: <value in [disable, enable]>
              trusted-address: <value of string>
           constraint:
              content-length:
                 action: <value in [allow, block]>
                 length: <value of integer>
                 log: <value in [disable, enable]>
                 severity: <value in [low, medium, high]>
                 status: <value in [disable, enable]>
              exception:
                -
                    address: <value of string>
                    content-length: <value in [disable, enable]>
                    header-length: <value in [disable, enable]>
                    hostname: <value in [disable, enable]>
                    id: <value of 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: <value of 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: <value of 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: <value of 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: <value of 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: <value of 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: <value of 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: <value of 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: <value of 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: <value of 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: <value of string>
                    allowed-methods:
                      - delete
                      - get
                      - head
                      - options
                      - post
                      - put
                      - trace
                      - others
                      - connect
                    id: <value of integer>
                    pattern: <value of string>
                    regex: <value in [disable, enable]>
              severity: <value in [low, medium, high]>
              status: <value in [disable, enable]>
           signature:
              credit-card-detection-threshold: <value of 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: <value of string>
                    pattern: <value of 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: <value of string>
              disabled-sub-class: <value of string>
              main-class:
                 action: <value in [allow, block, erase]>
                 id: <value of integer>
                 log: <value in [disable, enable]>
                 severity: <value in [low, medium, high]>
                 status: <value in [disable, enable]>

Return Values

Common return values are documented here, the following are the fields unique to this module:

Key Returned Description
request_url
string
always
The full url requested

Sample:
/sys/login/user
response_code
integer
always
The status of api request

response_message
string
always
The descriptive message of the api response

Sample:
OK.


Authors

  • Link Zheng (@chillancezen)

  • Jie Xue (@JieX19)

  • Frank Shen (@fshen01)

  • Hongbin Lu (@fgtdev-hblu)