# fortios_firewall_proxy_policy – Configure proxy policies in Fortinet’s FortiOS and FortiGate

New in version 2.8.

- Synopsis
- Requirements
- Parameters
- Notes
- Examples
- Return Values
- Status

## Synopsis

- This module is able to configure a FortiGate or FortiOS (FOS) device by allowing the user to set and modify firewall feature and proxy_policy category. Examples include all parameters and values need to be adjusted to datasources before usage. Tested with FOS v6.0.5

## Requirements

The below requirements are needed on the host that executes this module.

- fortiosapi>=0.9.8

## Parameters

Parameter | Choices/Defaults | Comments
--- | --- | ---
firewall_proxy_policy dictionary | Default: null | Configure proxy policies.

action
string

Choices:
- accept
- deny
- redirect

Accept or deny traffic matching the policy parameters.

| application_list string |  | Name of an existing Application list. Source application.list.name.
| av_profile string |  | Name of an existing Antivirus profile. Source antivirus.profile.name.
| comments string |  | Optional comments.

disclaimer
string

Choices:
- disable
- domain
- policy
- user

Web proxy disclaimer setting: by domain, policy, or user.

| dlp_sensor string |  | Name of an existing DLP sensor. Source dlp.sensor.name.
| dstaddr list |  | Destination address objects.
|  | name string / required |  | Address name. Source firewall.address.name firewall.addrgrp.name firewall.proxy-address.name firewall.proxy-addrgrp.name firewall.vip.name firewall.vipgrp.name firewall.vip46.name firewall.vipgrp46.name system.external-resource.name.
| dstaddr6 list |  | IPv6 destination address objects.
|  | name string / required |  | Address name. Source firewall.address6.name firewall.addrgrp6.name firewall.vip6.name firewall.vipgrp6.name firewall.vip64.name firewall.vipgrp64.name system.external-resource.name.

dstaddr_negate
string

Choices:
- enable
- disable

When enabled, destination addresses match against any address EXCEPT the specified destination addresses.

| dstintf list |  | Destination interface names.
|  | name string / required |  | Interface name. Source system.interface.name system.zone.name.
| global_label string |  | Global web-based manager visible label.
| groups list |  | Names of group objects.
|  | name string / required |  | Group name. Source user.group.name.

http_tunnel_auth
string

Choices:
- enable
- disable

Enable/disable HTTP tunnel authentication.

| icap_profile string |  | Name of an existing ICAP profile. Source icap.profile.name.

internet_service
string

Choices:
- enable
- disable

Enable/disable use of Internet Services for this policy. If enabled, destination address and service are not used.

| internet_service_custom list |  | Custom Internet Service name.
|  | name string / required |  | Custom name. Source firewall.internet-service-custom.name.
| internet_service_id list |  | Internet Service ID.
|  | id integer / required |  | Internet Service ID. Source firewall.internet-service.id.

internet_service_negate
string

Choices:
- enable
- disable

When enabled, Internet Services match against any internet service EXCEPT the selected Internet Service.

| ips_sensor string |  | Name of an existing IPS sensor. Source ips.sensor.name.
| label string |  | VDOM-specific GUI visible label.

logtraffic
string

Choices:
- all
- utm
- disable

Enable/disable logging traffic through the policy.

logtraffic_start
string

Choices:
- enable
- disable

Enable/disable policy log traffic start.

| policyid integer / required |  | Policy ID.
| poolname list |  | Name of IP pool object.
|  | name string / required |  | IP pool name. Source firewall.ippool.name.
| profile_group string |  | Name of profile group. Source firewall.profile-group.name.
| profile_protocol_options string |  | Name of an existing Protocol options profile. Source firewall.profile-protocol-options.name.

profile_type
string

Choices:
- single
- group

Determine whether the firewall policy allows security profile groups or single profiles only.

proxy
string

Choices:
- explicit-web
- transparent-web
- ftp
- ssh
- ssh-tunnel
- wanopt

Type of explicit proxy.

| redirect_url string |  | Redirect URL for further explicit web proxy processing.
| replacemsg_override_group string |  | Authentication replacement message override group. Source system.replacemsg-group.name.

scan_botnet_connections
string

Choices:
- disable
- block
- monitor

Enable/disable scanning of connections to Botnet servers.

| schedule string |  | Name of schedule object. Source firewall.schedule.onetime.name firewall.schedule.recurring.name firewall.schedule.group.name.
| service list |  | Name of service objects.
|  | name string / required |  | Service name. Source firewall.service.custom.name firewall.service.group.name.

service_negate
string

Choices:
- enable
- disable

When enabled, services match against any service EXCEPT the specified destination services.

| session_ttl integer |  | TTL in seconds for sessions accepted by this policy (0 means use the system ).
| spamfilter_profile string |  | Name of an existing Spam filter profile. Source spamfilter.profile.name.
| srcaddr list |  | Source address objects.
|  | name string / required |  | Address name. Source firewall.address.name firewall.addrgrp.name firewall.proxy-address.name firewall.proxy-addrgrp.name system .external-resource.name.
| srcaddr6 list |  | IPv6 source address objects.
|  | name string / required |  | Address name. Source firewall.address6.name firewall.addrgrp6.name system.external-resource.name.

srcaddr_negate
string

Choices:
- enable
- disable

When enabled, source addresses match against any address EXCEPT the specified source addresses.

| srcintf list |  | Source interface names.
|  | name string / required |  | Interface name. Source system.interface.name system.zone.name.
| ssh_filter_profile string |  | Name of an existing SSH filter profile. Source ssh-filter.profile.name.
| ssl_ssh_profile string |  | Name of an existing SSL SSH profile. Source firewall.ssl-ssh-profile.name.

state
string

Choices:
- present
- absent

Deprecated
Starting with Ansible 2.9 we recommend using the top-level 'state' parameter.

Indicates whether to create or remove the object.

status
string

Choices:
- enable
- disable

Enable/disable the active status of the policy.

transparent
string

Choices:
- enable
- disable

Enable to use the IP address of the client to connect to the server.

| users list |  | Names of user objects.
|  | name string / required |  | Group name. Source user.local.name.

utm_status
string

Choices:
- enable
- disable

Enable the use of UTM profiles/sensors/lists.

| uuid string |  | Universally Unique Identifier (UUID; automatically assigned but can be manually reset).
| waf_profile string |  | Name of an existing Web application firewall profile. Source waf.profile.name.

webcache
string

Choices:
- enable
- disable

Enable/disable web caching.

webcache_https
string

Choices:
- disable
- enable

Enable/disable web caching for HTTPS (Requires deep-inspection enabled in ssl-ssh-profile).

| webfilter_profile string |  | Name of an existing Web filter profile. Source webfilter.profile.name.
| webproxy_forward_server string |  | Name of web proxy forward server. Source web-proxy.forward-server.name web-proxy.forward-server-group.name.
| webproxy_profile string |  | Name of web proxy profile. Source web-proxy.profile.name.
host string |  | FortiOS or FortiGate IP address.

https
boolean

Choices:
- no
- yes ←

Indicates if the requests towards FortiGate must use HTTPS protocol.

password string | Default: "" | FortiOS or FortiGate password.

ssl_verify
boolean
added in 2.9

Choices:
- no
- yes ←

Ensures FortiGate certificate must be verified by a proper CA.

state
string
added in 2.9

Choices:
- present
- absent

Indicates whether to create or remove the object. This attribute was present already in previous version in a deeper level. It has been moved out to this outer level.

username string |  | FortiOS or FortiGate username.
vdom string | Default: "root" | Virtual domain, among those defined previously. A vdom is a virtual instance of the FortiGate that can be configured and used as a different unit.

## Notes

Note

- Requires fortiosapi library developed by Fortinet
- Run as a local_action in your playbook

## Examples

    - hosts: localhost
      vars:
       host: "192.168.122.40"
       username: "admin"
       password: ""
       vdom: "root"
       ssl_verify: "False"
      tasks:
      - name: Configure proxy policies.
        fortios_firewall_proxy_policy:
          host:  "{{ host }}"
          username: "{{ username }}"
          password: "{{ password }}"
          vdom:  "{{ vdom }}"
          https: "False"
          state: "present"
          firewall_proxy_policy:
            action: "accept"
            application_list: "<your_own_value> (source application.list.name)"
            av_profile: "<your_own_value> (source antivirus.profile.name)"
            comments: "<your_own_value>"
            disclaimer: "disable"
            dlp_sensor: "<your_own_value> (source dlp.sensor.name)"
            dstaddr:
             -
                name: "default_name_10 (source firewall.address.name firewall.addrgrp.name firewall.proxy-address.name firewall.proxy-addrgrp.name firewall.vip
                  .name firewall.vipgrp.name firewall.vip46.name firewall.vipgrp46.name system.external-resource.name)"
            dstaddr_negate: "enable"
            dstaddr6:
             -
                name: "default_name_13 (source firewall.address6.name firewall.addrgrp6.name firewall.vip6.name firewall.vipgrp6.name firewall.vip64.name firewall
                  .vipgrp64.name system.external-resource.name)"
            dstintf:
             -
                name: "default_name_15 (source system.interface.name system.zone.name)"
            global_label: "<your_own_value>"
            groups:
             -
                name: "default_name_18 (source user.group.name)"
            http_tunnel_auth: "enable"
            icap_profile: "<your_own_value> (source icap.profile.name)"
            internet_service: "enable"
            internet_service_custom:
             -
                name: "default_name_23 (source firewall.internet-service-custom.name)"
            internet_service_id:
             -
                id:  "25 (source firewall.internet-service.id)"
            internet_service_negate: "enable"
            ips_sensor: "<your_own_value> (source ips.sensor.name)"
            label: "<your_own_value>"
            logtraffic: "all"
            logtraffic_start: "enable"
            policyid: "31"
            poolname:
             -
                name: "default_name_33 (source firewall.ippool.name)"
            profile_group: "<your_own_value> (source firewall.profile-group.name)"
            profile_protocol_options: "<your_own_value> (source firewall.profile-protocol-options.name)"
            profile_type: "single"
            proxy: "explicit-web"
            redirect_url: "<your_own_value>"
            replacemsg_override_group: "<your_own_value> (source system.replacemsg-group.name)"
            scan_botnet_connections: "disable"
            schedule: "<your_own_value> (source firewall.schedule.onetime.name firewall.schedule.recurring.name firewall.schedule.group.name)"
            service:
             -
                name: "default_name_43 (source firewall.service.custom.name firewall.service.group.name)"
            service_negate: "enable"
            session_ttl: "45"
            spamfilter_profile: "<your_own_value> (source spamfilter.profile.name)"
            srcaddr:
             -
                name: "default_name_48 (source firewall.address.name firewall.addrgrp.name firewall.proxy-address.name firewall.proxy-addrgrp.name system
                  .external-resource.name)"
            srcaddr_negate: "enable"
            srcaddr6:
             -
                name: "default_name_51 (source firewall.address6.name firewall.addrgrp6.name system.external-resource.name)"
            srcintf:
             -
                name: "default_name_53 (source system.interface.name system.zone.name)"
            ssh_filter_profile: "<your_own_value> (source ssh-filter.profile.name)"
            ssl_ssh_profile: "<your_own_value> (source firewall.ssl-ssh-profile.name)"
            status: "enable"
            transparent: "enable"
            users:
             -
                name: "default_name_59 (source user.local.name)"
            utm_status: "enable"
            uuid: "<your_own_value>"
            waf_profile: "<your_own_value> (source waf.profile.name)"
            webcache: "enable"
            webcache_https: "disable"
            webfilter_profile: "<your_own_value> (source webfilter.profile.name)"
            webproxy_forward_server: "<your_own_value> (source web-proxy.forward-server.name web-proxy.forward-server-group.name)"
            webproxy_profile: "<your_own_value> (source web-proxy.profile.name)"

## Return Values

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

Key | Returned | Description
--- | --- | ---
build string | always | Build number of the fortigate image Sample: 1547
http_method string | always | Last method used to provision the content into FortiGate Sample: PUT
http_status string | always | Last result given by FortiGate on last operation applied Sample: 200
mkey string | success | Master key (id) used in the last call to FortiGate Sample: id
name string | always | Name of the table used to fulfill the request Sample: urlfilter
path string | always | Path of the table used to fulfill the request Sample: webfilter
revision string | always | Internal revision number Sample: 17.0.2.10658
serial string | always | Serial number of the unit Sample: FGVMEVYYQT3AB5352
status string | always | Indication of the operation's result Sample: success
vdom string | always | Virtual domain used Sample: root
version string | always | Version of the FortiGate Sample: v5.6.3

## Status

- This module is not guaranteed to have a backwards compatible interface. [preview]
- This module is maintained by the Ansible Community. [community]

### Authors

- Miguel Angel Munoz (@mamunozgonzalez)
- Nicolas Thomas (@thomnico)

Hint

If you notice any issues in this documentation, you can edit this document to improve it.