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

要在剧本中使用它,请指定: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 防火墙规则,则“确定接受”等同于“接受”。

创建新规则时,如果未提供此参数,则默认为 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

列表 / 元素=字典

指定规则使用的互联网控制消息协议 (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

dictionary

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

integer

BIG-IP服务器端口。

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

默认值: 443

timeout

integer

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

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

示例: "hash/dictionary of values"

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

示例: "hash/dictionary of values"

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

示例: "hash/dictionary of values"

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)