ansible playbook 实战案例roles | 实现基于firewalld添加端口

文章目录

免费个人运维知识库,欢迎您的订阅:literator_ray.flowus.cn

一、核心功能描述

这个 Ansible Role (firewalld) 的核心功能是:动态地、安全地配置 firewalld,实现基于指定 IPSet 的白名单规则,精确控制特定 TCP 端口的访问权限。

关键特性与可变性:​​

  1. ​灵活的端口控制:​​

    • 核心任务是管理一个特定的 TCP 端口。

    • 端口号(如示例中的 19100)是完全可配置的变量。Role 可以通过变量轻松应用于管理任何 TCP 端口。

  2. ​动态的 IP/IP 段管理 (基于 IPSet):​​

    • 访问控制的核心是使用 ipset。

    • ​IPSet 名称 ​(如示例中的 test)是可配置的。

    • ​允许访问的 IP 地址或网段 ​(如示例中的 192.141.254.0/24, 192.142.254.0/24)是可变且可扩展的列表 。Role 可以通过修改 loop 列表轻松添加、删除或更改允许的源 IP 范围。

  3. ​基于 IPSet 的精细化访问规则:​​

    • 创建一个 firewalld ​富规则 (rich rule)​。

    • 该规则利用配置好的 ​IPSet 名称 ​ 作为源 (source ipset=...)。

    • 该规则针对配置好的 ​TCP 端口 ​ (port protocol=tcp port=...)。

    • 规则动作是明确允许符合条件(匹配 IPSet 来源且访问目标端口)的流量 (accept)。

  4. ​安全的变更过程:​​

    • 在添加新规则前,​总是先删除目标端口上可能存在的旧规则 ​(通过 del_rule.yml)。这确保了:

      • 避免规则冲突或重复。

      • 提供幂等性(多次运行结果一致)。

      • 为新的、基于 IPSet 的规则提供一个干净的状态起点。

    • 配置采用 permanent: yes 确保规则持久化。

    • 执行重载 (reloaded) 使所有变更(IPSet 创建/更新、规则添加/删除)​立即生效。

可以根据自己的实际需求修改脚本

二、roles内容

2.1 文件结构

Plain 复制代码
firewalld/
`-- tasks
    |-- add_rule.yml
    |-- del_rule.yml
    `-- main.yml

1 directory, 3 files

2.2 主配置文件

Plain 复制代码
---
- hosts: 192.141.106.24
  remote_user: root
  serial: 5
  roles:
    - firewalld

2.3 tasks文件内容

  • main.yml
Plain 复制代码
- include: del_rule.yml
- include: add_rule.yml
  • include: del_rule.yml
Plain 复制代码
- name: del ports rule 19100
  firewalld: port=19100/tcp zone=public permanent=yes immediate=yes state=disabled
  • include: add_rule.yml
Plain 复制代码
- name: add ipsets
  shell: firewall-cmd --permanent --new-ipset=test --type=hash:ip;firewall-cmd --permanent --ipset=test --add-entry={{ item }}
  loop:
    - 192.141.254.0/24
    - 192.142.254.0/24  

- name: add port rule 19100
  firewalld:
    permanent: yes
    zone: public
    rich_rule: rule family=ipv4 source ipset=test port protocol=tcp port=19100 accept
    state: enabled

- name: firewalld reload
  service: name=firewalld state=reloaded

如果你不请什么是ansible中的角色,动动你的小手,跳转过去看看呗"roles角色"

请不要以此视为定论,这只是我的个人经验

相关推荐
垚垚学技术_聚焦云原生6 天前
Ansible Vault 安全实践:敏感密码、密钥加密存储方案
安全·elasticsearch·ansible
Linux运维技术栈8 天前
WAF部署在防火墙后面,获取不到真实IP怎么办?
服务器·网络·tcp/ip·安全·防火墙·waf
广目软件8 天前
HA分布式架构采集节点变更操作手册20261029
运维·服务器·ansible·zabbix·prometheus
启博网络9 天前
下一代防火墙是什么意思?下一代防火墙可以抵御哪些网络攻击?
网络·防火墙
Moshow郑锴9 天前
Ansible 批量部署 Node.js 服务:ZIP 直解与共享目录分发两种方案对比
node.js·ansible
躺柒9 天前
读数据安全架构设计与实践17安全架构案例(下)
数据库·安全·零信任·安全架构·防火墙·无边界
垚垚学技术_聚焦云原生9 天前
Ansible Playbook 进阶:when 条件、loop 循环、handlers 触发器落地
linux·ansible·自动化运维·devops
Moshow郑锴9 天前
GCP MIG 重建后 Ansible 初始化实战:PowerShell + NSSM 挂载 Windows 服务
windows·ansible
躺柒10 天前
读数据安全架构设计与实践16安全架构案例(上)
安全·php·零信任·安全架构·防火墙·无边界
承渊政道11 天前
新增一台服务器时还要重新装Nginx?Ansible只改hosts目标列表,同一份Playbook继续执行
运维·nginx·ansible·内网穿透·cpolar