Ansible `firewalld` 模块

Ansible firewalld 模块

一、简介

  • 功能firewalld 模块用于管理 Linux 系统上的 firewalld 防火墙服务。firewalld 是一种动态管理防火墙的工具,它提供了对网络流量的更细粒度控制,支持区域(zones)和丰富的规则管理。
  • 使用场景:适用于需要动态管理防火墙规则的场景,如开放或关闭特定服务端口、添加或移除防火墙规则、配置防火墙区域等。

二、基本用法

2.1 语法

使用 firewalld 模块的基本命令格式:

ansible <pattern> -m firewalld -a "zone=<zone> service=<service> state=<state> permanent=<yes/no>"
  • <pattern>: 指定要操作的主机或主机组,例如 allwebservers
  • -m firewalld: 指定使用 firewalld 模块。
  • -a "...": 提供模块的参数,如区域、服务、状态、是否永久生效等。

2.2 示例

  • 在特定区域开放 HTTP 服务端口

    ansible all -m firewalld -a "zone=public service=http state=enabled permanent=yes"
    
    • 解释:在所有主机的 public 区域内永久启用 HTTP 服务(80端口)。
  • 在特定区域关闭 SSH 服务端口

    ansible all -m firewalld -a "zone=public service=ssh state=disabled permanent=yes"
    
    • 解释:在所有主机的 public 区域内永久禁用 SSH 服务(22端口)。
  • 添加自定义端口规则

    ansible all -m firewalld -a "zone=public port=8080/tcp state=enabled permanent=yes"
    
    • 解释:在所有主机的 public 区域内永久开放 TCP 8080 端口。

三、输出结果

执行 firewalld 模块后的典型输出示例:

localhost | CHANGED => {
    "changed": true,
    "msg": "Service 'http' added to zone 'public'"
}
  • CHANGED:表示防火墙规则发生了变化。
  • changed: 为 true 表示操作成功并且规则被修改。
  • msg:显示执行的具体操作和结果。

如果没有变化(例如规则已经存在或要删除的规则不存在),输出将类似于:

localhost | SUCCESS => {
    "changed": false,
    "msg": "Service 'http' is already in zone 'public'"
}
  • SUCCESS: 表示操作成功。
  • changed: 为 false 表示规则未被修改。

四、常见选项

4.1 zone

  • 功能:指定防火墙区域(zone)。firewalld 使用区域来定义不同网络接口的安全策略。常用的区域包括 publicprivateinternalexternal 等。

  • 用法

    ansible all -m firewalld -a "zone=public service=http state=enabled permanent=yes"
    
    • 解释:在所有主机的 public 区域内启用 HTTP 服务。

4.2 service

  • 功能:指定要管理的服务(service)。可以是预定义的服务名,如 httpsshdns 等。

  • 用法

    ansible all -m firewalld -a "zone=public service=dns state=enabled permanent=yes"
    
    • 解释:在所有主机的 public 区域内启用 DNS 服务。

4.3 port

  • 功能:指定要管理的端口及协议(如 80/tcp443/tcp)。

  • 用法

    ansible all -m firewalld -a "zone=public port=443/tcp state=enabled permanent=yes"
    
    • 解释:在所有主机的 public 区域内启用 TCP 443 端口(HTTPS)。

4.4 state

  • 功能:指定规则的状态。可以是 enabled(启用规则)或 disabled(禁用规则)。

  • 用法

    ansible all -m firewalld -a "zone=public service=ftp state=disabled permanent=yes"
    
    • 解释:在所有主机的 public 区域内禁用 FTP 服务。

4.5 permanent

  • 功能:指定规则是否永久生效。如果设置为 yes,规则将在系统重启后继续生效。默认为 no

  • 用法

    ansible all -m firewalld -a "zone=public port=3306/tcp state=enabled permanent=yes"
    
    • 解释:在所有主机的 public 区域内永久启用 TCP 3306 端口(MySQL)。

五、注意事项

  • 权限要求:更改防火墙规则需要具有适当的权限(通常是 root 权限),确保 Ansible 用户具备相应的 sudo 权限。
  • 服务重启:当使用 permanent=yes 时,需要重载 firewalld 服务才能使规则生效。可以使用 firewalld 模块中的 immediate=yes 选项自动重载防火墙配置。
  • 区域管理:不同的网络接口可以分配到不同的区域,确保将规则应用到正确的区域,以免影响网络流量的控制。
  • 服务或端口冲突:在添加或移除规则时,注意检查是否存在冲突的规则或端口,以免导致网络通信问题。
  • 13
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

悟生啊

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值