fortinet.fortios.fortios_vpn_ssl_settings 模块 – 配置 Fortinet 的 FortiOS 和 FortiGate 中的 SSL-VPN。

注意

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

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

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

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

fortinet.fortios 2.0.0 中的新增功能

概要

  • 此模块能够通过允许用户设置和修改 vpn_ssl 功能和设置类别来配置 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"

vdom

字符串

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

默认值: "root"

vpn_ssl_settings

字典

配置 SSL-VPN。

algorithm

字符串

强制 SSL-VPN 安全级别。高仅允许高。中允许中和高。低允许任何。

选项

  • "high"

  • "medium"

  • "default"

  • "low"

auth_session_check_source_ip

字符串

启用/禁用检查身份验证会话的源 IP。

选项

  • "enable"

  • "disable"

auth_timeout

整数

SSL-VPN 身份验证超时 (1 - 259200 秒(3 天),0 表示无超时)。

authentication_rule

列表 / 元素=字典

SSL-VPN 的身份验证规则。

auth

字符串

SSL-VPN 身份验证方法限制。

选项

  • "any"

  • "local"

  • "radius"

  • "tacacs+"

  • "ldap"

  • "peer"

cipher

字符串

SSL-VPN 密码强度。

选项

  • "any"

  • "high"

  • "medium"

client_cert

字符串

启用/禁用 SSL-VPN 客户端证书限制。

选项

  • "enable"

  • "disable"

groups

列表 / 元素=字典

用户组。

name

字符串 / 必需

组名。来源 user.group.name。

id

整数 / 必需

ID (0 - 4294967295)。请参见 备注

portal

字符串

SSL-VPN 门户。来源 vpn.ssl.web.portal.name。

realm

字符串

SSL-VPN 领域。来源 vpn.ssl.web.realm.url-path。

source_address

列表 / 元素=字典

传入流量的源地址。

name

字符串 / 必需

地址名称。来源 firewall.address.name firewall.addrgrp.name system.external-resource.name。

source_address6

列表 / 元素=字典

传入流量的 IPv6 源地址。

name

字符串 / 必需

IPv6 地址名称。来源 firewall.address6.name firewall.addrgrp6.name system.external-resource.name。

source_address6_negate

字符串

启用/禁用否定的源 IPv6 地址匹配。

选项

  • "enable"

  • "disable"

source_address_negate

字符串

启用/禁用否定的源地址匹配。

选项

  • "enable"

  • "disable"

source_interface

列表 / 元素=字典

传入流量的 SSL-VPN 源接口。

name

字符串 / 必需

接口名称。来源 system.interface.name system.zone.name。

user_peer

字符串

用户对等体的名称。来源 user.peer.name。

users

列表 / 元素=字典

用户名。

name

字符串 / 必需

用户名。来源 user.local.name。

auto_tunnel_static_route

字符串

启用/禁用为 SSL-VPN 隧道 IP 地址自动创建静态路由。

选项

  • "enable"

  • "disable"

banned_cipher

列表 / 元素=字符串

选择在 SSL-VPN 协商中不能使用的一个或多个密码技术。仅适用于 TLS 1.2 及以下版本。

选项

  • "RSA"

  • "DHE"

  • "ECDHE"

  • "DSS"

  • "ECDSA"

  • "AES"

  • "AESGCM"

  • "CAMELLIA"

  • "3DES"

  • "SHA1"

  • "SHA256"

  • "SHA384"

  • "STATIC"

  • "CHACHA20"

  • "ARIA"

  • "AESCCM"

  • "DH"

  • "ECDH"

browser_language_detection

字符串

启用/禁用根据浏览器的首选语言覆盖已配置的系统语言。

选项

  • "enable"

  • "disable"

check_referer

字符串

启用/禁用验证 HTTP 请求标头中的 Referer 字段。

选项

  • "enable"

  • "disable"

ciphersuite

列表 / 元素=字符串

选择一个或多个要启用的 TLS 1.3 密码套件。不影响 TLS 1.2 及以下版本的密码。必须至少启用一个。要禁用所有密码,请将 ssl-max-proto-ver 设置为 tls1-2 或以下版本。

选项

  • "TLS-AES-128-GCM-SHA256"

  • "TLS-AES-256-GCM-SHA384"

  • "TLS-CHACHA20-POLY1305-SHA256"

  • "TLS-AES-128-CCM-SHA256"

  • "TLS-AES-128-CCM-8-SHA256"

client_sigalgs

字符串

设置与客户端身份验证相关的签名算法。仅影响 TLS 版本 <= 1.2。

选项

  • "no-rsa-pss"

  • "all"

default_portal

字符串

默认 SSL-VPN 门户。来源 vpn.ssl.web.portal.name。

deflate_compression_level

整数

压缩级别 (0~9)。

deflate_min_data_size

整数

触发压缩的最小数据量 (200 - 65535 字节)。

dns_server1

字符串

DNS 服务器 1。

dns_server2

字符串

DNS 服务器 2。

dns_suffix

字符串

用于 SSL-VPN 客户端的 DNS 后缀。

dtls_heartbeat_fail_count

整数

在连接被认为已断开之前,丢失的心跳次数。

dtls_heartbeat_idle_timeout

整数

发送 DTLS 心跳之前的空闲超时。

dtls_heartbeat_interval

整数

DTLS 心跳之间的间隔。

dtls_hello_timeout

整数

SSLVPN 最大 DTLS hello 超时 (10 - 60 秒)。

dtls_max_proto_ver

字符串

DTLS 最大协议版本。

选项

  • "dtls1-0"

  • "dtls1-2"

dtls_min_proto_ver

字符串

DTLS 最小协议版本。

选项

  • "dtls1-0"

  • "dtls1-2"

dtls_tunnel

字符串

启用/禁用 DTLS 以防止窃听、篡改或消息伪造。

选项

  • "enable"

  • "disable"

dual_stack_mode

字符串

隧道模式:启用并行 IPv4 和 IPv6 隧道。Web 模式:支持门户中的 IPv4 和 IPv6 书签。

选项

  • "enable"

  • "disable"

encode_2f_sequence

字符串

将 2F 序列编码为 URL 中的正斜杠。

选项

  • "enable"

  • "disable"

encrypt_and_store_password

字符串

加密并存储 SSL-VPN Web 会话的用户名密码。

选项

  • "enable"

  • "disable"

force_two_factor_auth

字符串

启用/禁用仅使用双因素身份验证的PKI用户用于SSL-VPN。

选项

  • "enable"

  • "disable"

header_x_forwarded_for

字符串

转发、添加或删除HTTP标头。

选项

  • “pass”

  • “add”

  • “remove”

hsts_include_subdomains

字符串

添加HSTS includeSubDomains响应标头。

选项

  • "enable"

  • "disable"

http_compression

字符串

启用/禁用允许通过SSL-VPN隧道进行HTTP压缩。

选项

  • "enable"

  • "disable"

字符串

启用/禁用对HttpOnly Cookie的SSL-VPN支持。

选项

  • "enable"

  • "disable"

http_request_body_timeout

整数

如果在规定时间内(1-60秒)未收到HTTP请求正文,则SSL-VPN会话将断开连接。

http_request_header_timeout

整数

如果在规定时间内(1-60秒)未收到HTTP请求标头,则SSL-VPN会话将断开连接。

https_redirect

字符串

启用/禁用将80端口重定向到SSL-VPN端口。

选项

  • "enable"

  • "disable"

idle_timeout

整数

如果空闲时间达到指定秒数,SSL-VPN将断开连接。

ipv6_dns_server1

字符串

IPv6 DNS服务器1。

ipv6_dns_server2

字符串

IPv6 DNS服务器2。

ipv6_wins_server1

字符串

IPv6 WINS服务器1。

ipv6_wins_server2

字符串

IPv6 WINS服务器2。

login_attempt_limit

整数

SSL-VPN在阻止之前允许的最大登录尝试次数(0-10)。

login_block_time

整数

多次登录失败后,用户被阻止登录的时间(0-86400秒)。

login_timeout

整数

SSLVPN最大登录超时时间(10-180秒)。

port

整数

SSL-VPN访问端口(1-65535)。

port_precedence

字符串

启用/禁用,启用表示如果在接口上允许SSL-VPN连接,则在该接口上阻止admin GUI连接。

选项

  • "enable"

  • "disable"

reqclientcert

字符串

启用/禁用要求所有SSL-VPN用户提供客户端证书。

选项

  • "enable"

  • "disable"

route_source_interface

字符串

启用后,允许SSL-VPN会话绕过路由并绑定到传入接口。

选项

  • "enable"

  • "disable"

saml_redirect_port

整数

运行FortiClient的机器上的SAML本地重定向端口(0-65535)。0表示禁用FGT侧的重定向。

server_hostname

字符串

HTTPS服务器主机名。设置后,将用于任何重定向的SSL VPN Web代理主机标头。

servercert

字符串

用于SSL-VPN的服务器证书名称。来源vpn.certificate.local.name。

source_address

列表 / 元素=字典

传入流量的源地址。

name

字符串 / 必需

地址名称。来源 firewall.address.name firewall.addrgrp.name system.external-resource.name。

source_address6

列表 / 元素=字典

传入流量的 IPv6 源地址。

name

字符串 / 必需

IPv6 地址名称。来源 firewall.address6.name firewall.addrgrp6.name system.external-resource.name。

source_address6_negate

字符串

启用/禁用否定的源 IPv6 地址匹配。

选项

  • "enable"

  • "disable"

source_address_negate

字符串

启用/禁用否定的源地址匹配。

选项

  • "enable"

  • "disable"

source_interface

列表 / 元素=字典

传入流量的 SSL-VPN 源接口。

name

字符串 / 必需

接口名称。来源 system.interface.name system.zone.name。

ssl_client_renegotiation

字符串

启用/禁用允许服务器在隧道断开时进行客户端重新协商。

选项

  • "disable"

  • "enable"

ssl_insert_empty_fragment

字符串

启用/禁用插入空片段。

选项

  • "enable"

  • "disable"

ssl_max_proto_ver

字符串

SSL最大协议版本。

选项

  • “tls1-0”

  • “tls1-1”

  • “tls1-2”

  • “tls1-3”

ssl_min_proto_ver

字符串

SSL最小协议版本。

选项

  • “tls1-0”

  • “tls1-1”

  • “tls1-2”

  • “tls1-3”

status

字符串

启用/禁用SSL-VPN。

选项

  • "enable"

  • "disable"

tlsv1_0

字符串

tlsv1-0

选项

  • "enable"

  • "disable"

tlsv1_1

字符串

tlsv1-1

选项

  • "enable"

  • "disable"

tlsv1_2

字符串

tlsv1-2

选项

  • "enable"

  • "disable"

tlsv1_3

字符串

tlsv1-3

选项

  • "enable"

  • "disable"

transform_backward_slashes

字符串

将URL中的反斜杠转换为正斜杠。

选项

  • "enable"

  • "disable"

tunnel_addr_assigned_method

字符串

用于分配隧道地址的方法。

选项

  • “first-available”

  • “round-robin”

tunnel_connect_without_reauth

字符串

如果之前的连接断开,则启用/禁用无需重新授权即可进行隧道连接。

选项

  • "enable"

  • "disable"

tunnel_ip_pools

列表 / 元素=字典

定义为远程客户端保留的IP地址的IPv4 IP池防火墙对象的名称。

name

字符串 / 必需

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

tunnel_ipv6_pools

列表 / 元素=字典

定义为远程客户端保留的IP地址的IPv6 IP池防火墙对象的名称。

name

字符串 / 必需

地址名称。来源firewall.address6.name firewall.addrgrp6.name。

tunnel_user_session_timeout

整数

隧道连接断开后清理用户会话的秒数(1-86400)。

unsafe_legacy_renegotiation

字符串

启用/禁用不安全的旧版重新协商。

选项

  • "enable"

  • "disable"

url_obscuration

字符串

启用/禁用模糊Web浏览器显示的URL的主机名。

选项

  • "enable"

  • "disable"

user_peer

字符串

用户对等体的名称。来源 user.peer.name。

web_mode_snat

字符串

启用/禁用在使用Web模式时使用防火墙策略中定义的IP池。

选项

  • "enable"

  • "disable"

wins_server1

字符串

WINS服务器1。

wins_server2

字符串

WINS服务器2。

x_content_type_options

字符串

添加HTTP X-Content-Type-Options标头。

选项

  • "enable"

  • "disable"

ztna_trusted_client

字符串

启用/禁用对SSLVPN ZTNA会话的设备证书的验证。

选项

  • "enable"

  • "disable"

注释

注意

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

示例

- name: Configure SSL-VPN.
  fortinet.fortios.fortios_vpn_ssl_settings:
      vdom: "{{ vdom }}"
      vpn_ssl_settings:
          algorithm: "high"
          auth_session_check_source_ip: "enable"
          auth_timeout: "28800"
          authentication_rule:
              -
                  auth: "any"
                  cipher: "any"
                  client_cert: "enable"
                  groups:
                      -
                          name: "default_name_11 (source user.group.name)"
                  id: "12"
                  portal: "<your_own_value> (source vpn.ssl.web.portal.name)"
                  realm: "<your_own_value> (source vpn.ssl.web.realm.url-path)"
                  source_address:
                      -
                          name: "default_name_16 (source firewall.address.name firewall.addrgrp.name system.external-resource.name)"
                  source_address_negate: "enable"
                  source_address6:
                      -
                          name: "default_name_19 (source firewall.address6.name firewall.addrgrp6.name system.external-resource.name)"
                  source_address6_negate: "enable"
                  source_interface:
                      -
                          name: "default_name_22 (source system.interface.name system.zone.name)"
                  user_peer: "<your_own_value> (source user.peer.name)"
                  users:
                      -
                          name: "default_name_25 (source user.local.name)"
          auto_tunnel_static_route: "enable"
          banned_cipher: "RSA"
          browser_language_detection: "enable"
          check_referer: "enable"
          ciphersuite: "TLS-AES-128-GCM-SHA256"
          client_sigalgs: "no-rsa-pss"
          default_portal: "<your_own_value> (source vpn.ssl.web.portal.name)"
          deflate_compression_level: "6"
          deflate_min_data_size: "300"
          dns_server1: "<your_own_value>"
          dns_server2: "<your_own_value>"
          dns_suffix: "<your_own_value>"
          dtls_heartbeat_fail_count: "3"
          dtls_heartbeat_idle_timeout: "3"
          dtls_heartbeat_interval: "3"
          dtls_hello_timeout: "10"
          dtls_max_proto_ver: "dtls1-0"
          dtls_min_proto_ver: "dtls1-0"
          dtls_tunnel: "enable"
          dual_stack_mode: "enable"
          encode_2f_sequence: "enable"
          encrypt_and_store_password: "enable"
          force_two_factor_auth: "enable"
          header_x_forwarded_for: "pass"
          hsts_include_subdomains: "enable"
          http_compression: "enable"
          http_only_cookie: "enable"
          http_request_body_timeout: "30"
          http_request_header_timeout: "20"
          https_redirect: "enable"
          idle_timeout: "300"
          ipv6_dns_server1: "<your_own_value>"
          ipv6_dns_server2: "<your_own_value>"
          ipv6_wins_server1: "<your_own_value>"
          ipv6_wins_server2: "<your_own_value>"
          login_attempt_limit: "2"
          login_block_time: "60"
          login_timeout: "30"
          port: "10443"
          port_precedence: "enable"
          reqclientcert: "enable"
          route_source_interface: "enable"
          saml_redirect_port: "8020"
          server_hostname: "myhostname"
          servercert: "<your_own_value> (source vpn.certificate.local.name)"
          source_address:
              -
                  name: "default_name_72 (source firewall.address.name firewall.addrgrp.name system.external-resource.name)"
          source_address_negate: "enable"
          source_address6:
              -
                  name: "default_name_75 (source firewall.address6.name firewall.addrgrp6.name system.external-resource.name)"
          source_address6_negate: "enable"
          source_interface:
              -
                  name: "default_name_78 (source system.interface.name system.zone.name)"
          ssl_client_renegotiation: "disable"
          ssl_insert_empty_fragment: "enable"
          ssl_max_proto_ver: "tls1-0"
          ssl_min_proto_ver: "tls1-0"
          status: "enable"
          tlsv1_0: "enable"
          tlsv1_1: "enable"
          tlsv1_2: "enable"
          tlsv1_3: "enable"
          transform_backward_slashes: "enable"
          tunnel_addr_assigned_method: "first-available"
          tunnel_connect_without_reauth: "enable"
          tunnel_ip_pools:
              -
                  name: "default_name_92 (source firewall.address.name firewall.addrgrp.name)"
          tunnel_ipv6_pools:
              -
                  name: "default_name_94 (source firewall.address6.name firewall.addrgrp6.name)"
          tunnel_user_session_timeout: "30"
          unsafe_legacy_renegotiation: "enable"
          url_obscuration: "enable"
          user_peer: "<your_own_value> (source user.peer.name)"
          web_mode_snat: "enable"
          wins_server1: "<your_own_value>"
          wins_server2: "<your_own_value>"
          x_content_type_options: "enable"
          ztna_trusted_client: "enable"

返回值

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

描述

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)