f5networks.f5_modules.bigip_firewall_rule 模块 – 管理 AFM 防火墙规则

注意

此模块是 f5networks.f5_modules 集合(版本 1.32.1)的一部分。

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

要安装它,请使用:ansible-galaxy collection install f5networks.f5_modules

要在 playbook 中使用它,请指定:f5networks.f5_modules.bigip_firewall_rule

f5networks.f5_modules 1.0.0 中的新增功能

概要

  • 管理 AFM(高级防火墙管理器)防火墙策略中的防火墙规则。新规则将始终添加到策略的末尾。可以使用 bigip_security_policy 模块重新排序规则。也可以使用 bigip_security_policy 模块预先排序规则,然后稍后使用 bigip_firewall_rule 模块进行更新。

参数

参数

注释

action

字符串

指定防火墙规则的操作。

当为 accept 时,允许具有指定源、目标和协议的数据包通过防火墙。匹配规则并被接受的数据包,会像防火墙不存在一样遍历系统。

当为 drop 时,会丢弃具有指定源、目标和协议的数据包。丢弃数据包是一种静默操作,不会通知源系统或目标系统。丢弃数据包会导致连接重试,直到达到重试阈值。

当为 reject 时,会拒绝具有指定源、目标和协议的数据包。当数据包被拒绝时,防火墙会向发送方发送目标不可达消息。

当为 accept-decisively 时,允许具有指定源、目标和协议的数据包通过防火墙,并且不需要任何其他防火墙的进一步处理。匹配规则并被接受的数据包,会像防火墙不存在一样遍历系统。如果规则列表应用于虚拟服务器、管理 IP 或自 IP 防火墙规则,则 Accept Decisively 等效于 Accept。

创建新规则时,如果未提供此参数,则默认值为 reject

选项

  • "accept"

  • "drop"

  • "reject"

  • "accept-decisively"

description

字符串

规则描述。

destination

列表 / 元素=字典

指定规则应用的数据包目标。

将此字段留空,则将规则应用于所有地址和所有端口。

您可以指定以下目标项。IPv4 或 IPv6 地址、IPv4 或 IPv6 地址范围、地理位置、VLAN、地址列表、端口、端口范围、端口列表或地址列表。

您可以为源地址指定不同类型的项的组合。

可以为目标项指定特殊值 any,以匹配相应项的任何值。

address

字符串

指定特定的 IP 地址。

address_list

字符串

指定现有的地址列表。

address_range

字符串

指定地址范围。

country

字符串

指定国家/地区代码。

port

字符串

指定单个数字端口。

此选项仅在 protocoltcp (6) 或 udp (17) 时有效。

port_list

字符串

指定现有的端口列表。

此选项仅在 protocoltcp (6) 或 udp (17) 时有效。

port_range

字符串

指定端口范围,即两个端口值,中间用连字符分隔。连字符左侧的端口应小于右侧的端口。

此选项仅在 protocoltcp (6) 或 udp (17) 时有效。

icmp_message

列表 / 元素=字典

指定规则使用的 Internet 控制消息协议 (ICMP) 或 ICMPv6 消息 typecode

仅当 protocolicmp (1) 或 icmpv6 (58) 时,此参数才相关。

code

字符串

指定为响应指定的 ICMP 消息类型而返回的代码。

您可以指定代码,每个代码都设置为与关联的类型相符,例如无代码 (0)(与回显应答 (0) 相关联)和主机不可达 (1)(与目标不可达 (3) 相关联),或者您可以指定 any 以指示系统对响应特定 ICMP 消息的所有代码应用该规则。

您还可以指定任意代码。

ICMP 协议包含现有消息代码和数字对的定义。

type

字符串

指定 ICMP 消息的类型。

您可以指定控制消息,例如回显应答 (0) 和目标不可达 (3),或者您可以指定 any 以指示系统对所有 ICMP 消息应用该规则。

您还可以指定任意 ICMP 消息。

ICMP 协议包含现有消息类型和数字对的定义。

irule

字符串

指定应用于防火墙规则的 iRule。

当防火墙规则匹配流量时,可以启动 iRule。

logging

布尔值

指定是否为防火墙规则启用或禁用日志记录。

创建新规则时,如果未指定此参数,则默认值为 false

选项

  • false

  • true

name

字符串 / 必填

指定规则的名称。

parent_policy

字符串

包含要管理的规则的策略。

必须指定 parent_policyparent_rule_list 中的一个。

parent_rule_list

字符串

包含要管理的规则的规则列表。

必须指定 parent_policyparent_rule_list 中的一个。

partition

字符串

用于管理资源的设备分区。

默认值: "Common"

protocol

字符串

指定规则应用的协议。

协议可以通过其名称或数字值指定。

可以指定特殊的协议值 any 以匹配任何协议。此协议的数字等效值为 255

provider

字典

在 f5networks.f5_modules 1.0.0 中添加

包含连接详细信息的字典对象。

auth_provider

字符串

配置身份验证提供程序以从远程设备获取身份验证令牌。

此选项主要在与 BIG-IQ 设备一起工作时使用。

no_f5_teem

布尔值

如果为 yes,则不会将 TEEM 遥测数据发送到 F5。

您可以通过设置环境变量 F5_TELEMETRY_OFF 来省略此选项。

之前使用的变量 F5_TEEM 已弃用,因为其名称容易引起混淆。

选项

  • false ← (默认)

  • true

password

别名: pass, pwd

字符串 / 必填

用于连接到 BIG-IP 或 BIG-IQ 的用户帐户的密码。

您可以通过设置环境变量 F5_PASSWORD 来省略此选项。

server

字符串 / 必填

BIG-IP 主机或 BIG-IQ 主机。

您可以通过设置环境变量 F5_SERVER 来省略此选项。

server_port

整数

BIG-IP 服务器端口。

您可以通过设置环境变量 F5_SERVER_PORT 来省略此选项。

默认值: 443

timeout

整数

指定与网络设备通信(用于连接或发送命令)的超时时间(以秒为单位)。 如果在操作完成之前超过超时时间,模块将报错。

transport

字符串

配置连接到远程设备时使用的传输连接。

选项

  • "rest" ← (默认)

user

字符串 / 必填

用于连接到 BIG-IP 或 BIG-IQ 的用户名。 此用户必须在设备上具有管理员权限。

您可以通过设置环境变量 F5_USER 来省略此选项。

validate_certs

布尔值

如果为 no,则不验证 SSL 证书。 仅在个人控制的使用自签名证书的站点上使用此选项。

您可以通过设置环境变量 F5_VALIDATE_CERTS 来省略此选项。

选项

  • false

  • true ← (默认)

rule_list

字符串

指定要在规则中使用的现有规则列表。

此参数与许多其他单独的规则特定设置互斥。 这包括 loggingactionsourcedestinationirule'protocollogging

仅当指定了 parent_policy 时才使用此参数,否则将被忽略。

schedule

字符串

指定防火墙规则的计划。

您可以配置计划以定义防火墙规则处于活动状态的日期和时间。

source

列表 / 元素=字典

指定规则适用的数据包源。

将此字段留空,则将规则应用于所有地址和所有端口。

您可以指定以下源项。 IPv4 或 IPv6 地址、IPv4 或 IPv6 地址范围、地理位置、VLAN、地址列表、端口、端口范围、端口列表或地址列表。

您可以为源地址指定不同类型的项的组合。

可以为所有源项指定特殊值 any,以匹配相应项的任何值。

address

字符串

指定特定的 IP 地址。

address_list

字符串

指定现有的地址列表。

address_range

字符串

指定地址范围。

country

字符串

指定国家/地区代码。

port

字符串

指定单个数字端口。

此选项仅在 protocoltcp (6) 或 udp (17) 时有效。

port_list

字符串

指定现有的端口列表。

此选项仅在 protocoltcp (6) 或 udp (17) 时有效。

port_range

字符串

指定端口范围,即两个端口值,中间用连字符分隔。连字符左侧的端口应小于右侧的端口。

此选项仅在 protocoltcp (6) 或 udp (17) 时有效。

vlan

字符串

指定规则适用的 VLAN。

VLAN 源是指数据包的源。

state

字符串

statepresent 时,确保规则存在。

stateabsent 时,确保删除规则。

选项

  • "present" ← (默认)

  • "absent"

status

字符串

指示规则或规则列表的活动状态。

disabled 时,指定规则或规则列表根本不适用。

enabled 时,指定系统将防火墙规则或规则列表应用于给定的上下文和地址。

scheduled 时,指定系统根据指定的计划应用规则或规则列表。

在创建新规则时,如果未提供此参数,则默认值为 enabled

选项

  • "enabled"

  • "disabled"

  • "scheduled"

注释

注意

  • 有关使用 Ansible 管理 F5 Networks 设备的更多信息,请参阅 https://ansible.org.cn/integrations/networks/f5

  • 需要 BIG-IP 软件版本 >= 12。

  • F5 模块仅操作 F5 产品的运行配置。 要确保 BIG-IP 特定配置持久保存到磁盘,请务必至少包含一个使用 f5networks.f5_modules.bigip_config 模块保存运行配置的任务。 有关如何正确使用该模块保存运行配置,请参阅该模块的文档。

示例

- name: Create a new rule in the foo firewall policy
  bigip_firewall_rule:
    name: foo
    parent_policy: policy1
    protocol: tcp
    source:
      - address: 1.2.3.4
      - address: "::1"
      - address_list: foo-list1
      - address_range: 1.1.1.1-2.2.2.2
      - vlan: vlan1
      - country: US
      - port: 22
      - port_list: port-list1
      - port_range: 80-443
    destination:
      - address: 1.2.3.4
      - address: "::1"
      - address_list: foo-list1
      - address_range: 1.1.1.1-2.2.2.2
      - country: US
      - port: 22
      - port_list: port-list1
      - port_range: 80-443
    irule: irule1
    action: accept
    logging: true
    provider:
      password: secret
      server: lb.mydomain.com
      user: admin
  delegate_to: localhost

- name: Create an ICMP specific rule
  bigip_firewall_rule:
    name: foo
    protocol: icmp
    icmp_message:
      type: 0
    source:
      - country: US
    action: drop
    logging: true
    provider:
      password: secret
      server: lb.mydomain.com
      user: admin
  delegate_to: localhost

- name: Add a new policy rule that uses an existing rule list
  bigip_firewall_rule:
    name: foo
    parent_policy: foo_policy
    rule_list: rule-list1
    provider:
      password: secret
      server: lb.mydomain.com
      user: admin
  delegate_to: localhost

返回值

通用返回值记录在 此处,以下是此模块特有的字段

Key

描述

action

字符串

防火墙规则的操作。

返回: changed

示例: "drop"

description

字符串

规则描述。

返回: changed

示例: "MyRule"

destination

complex

规则适用的数据包目标。

返回: changed

示例: "值的哈希/字典"

address

字符串

特定的 IP 地址。

返回: changed

示例: "192.168.1.1"

address_list

字符串

现有的地址列表。

返回: changed

示例: "foo-list1"

address_range

字符串

地址范围。

返回: changed

示例: "1.1.1.1-2.2.2.2"

country

字符串

国家/地区代码。

返回: changed

示例: "US"

port

字符串

单个数字端口。

返回: changed

示例: "8080"

port_list

字符串

现有的端口列表。

返回: changed

示例: "port-list1"

port_range

字符串

端口范围。

返回: changed

示例: "80-443"

icmp_message

complex

规则使用的(ICMP)或 ICMPv6 消息 typecode

返回: changed

示例: "值的哈希/字典"

code

字符串

响应指定的 ICMP 消息类型返回的代码。

返回: changed

示例: "1"

type

字符串

ICMP 消息的类型。

返回: changed

示例: "0"

irule

字符串

应用于防火墙规则的 iRule。

返回: changed

示例: "_sys_auth_radius"

logging

布尔值

启用或禁用防火墙规则的日志记录。

返回: changed

示例: true

name

字符串

规则的名称。

返回: changed

示例: "FooRule"

parent_policy

字符串

包含要管理的规则的策略。

返回: changed

示例: "FooPolicy"

parent_rule_list

字符串

包含要管理的规则的规则列表。

返回: changed

示例: "FooRuleList"

protocol

字符串

规则适用的协议。

返回: changed

示例: "any"

rule_list

字符串

在父策略中使用的现有规则列表。

返回: changed

示例: "rule-list-1"

schedule

字符串

防火墙规则的计划。

返回: changed

示例: "Foo_schedule"

source

complex

规则适用的数据包源。

返回: changed

示例: "值的哈希/字典"

address

字符串

特定的 IP 地址。

返回: changed

示例: "192.168.1.1"

address_list

字符串

现有的地址列表。

返回: changed

示例: "foo-list1"

address_range

字符串

地址范围。

返回: changed

示例: "1.1.1.1-2.2.2.2"

country

字符串

国家/地区代码。

返回: changed

示例: "US"

port

字符串

单个数字端口。

返回: changed

示例: "8080"

port_list

字符串

现有的端口列表。

返回: changed

示例: "port-list1"

port_range

字符串

端口范围。

返回: changed

示例: "80-443"

vlan

字符串

数据包的源 VLAN。

返回: changed

示例: "vlan1"

status

字符串

规则或规则列表的活动状态。

返回: changed

示例: "scheduled"

作者

  • Tim Rupp (@caphrim007)

  • Wojciech Wypior (@wojtek0806)