文章目錄
- 一、核心功能描述
- 二、roles內容
- 2.1 文件結構
- 2.2 主配置文件
- 2.3 tasks文件內容
免費個人運維知識庫,歡迎您的訂閱:literator_ray.flowus.cn
一、核心功能描述
這個 Ansible Role (firewalld
) 的核心功能是:動態地、安全地配置 firewalld
,實現基于指定 IPSet 的白名單規則,精確控制特定 TCP 端口的訪問權限。
關鍵特性與可變性:??
-
?靈活的端口控制:??
-
核心任務是管理一個特定的 TCP 端口。
-
端口號(如示例中的
19100
)是完全可配置的變量。Role 可以通過變量輕松應用于管理任何 TCP 端口。
-
-
?動態的 IP/IP 段管理 (基于 IPSet):??
-
訪問控制的核心是使用
ipset
。 -
?IPSet 名稱?(如示例中的
test
)是可配置的。 -
?允許訪問的 IP 地址或網段?(如示例中的
192.141.254.0/24
,192.142.254.0/24
)是可變且可擴展的列表。Role 可以通過修改loop
列表輕松添加、刪除或更改允許的源 IP 范圍。
-
-
?基于 IPSet 的精細化訪問規則:??
-
創建一個
firewalld
?富規則 (rich rule)?。 -
該規則利用配置好的 ?IPSet 名稱? 作為源 (
source ipset=...
)。 -
該規則針對配置好的 ?TCP 端口? (
port protocol=tcp port=...
)。 -
規則動作是明確允許符合條件(匹配 IPSet 來源且訪問目標端口)的流量 (
accept
)。
-
-
?安全的變更過程:??
-
在添加新規則前,?總是先刪除目標端口上可能存在的舊規則?(通過
del_rule.yml
)。這確保了:-
避免規則沖突或重復。
-
提供冪等性(多次運行結果一致)。
-
為新的、基于 IPSet 的規則提供一個干凈的狀態起點。
-
-
配置采用
permanent: yes
確保規則持久化。 -
執行重載 (
reloaded
) 使所有變更(IPSet 創建/更新、規則添加/刪除)?立即生效。
-
可以根據自己的實際需求修改腳本
二、roles內容
2.1 文件結構
firewalld/
`-- tasks|-- add_rule.yml|-- del_rule.yml`-- main.yml1 directory, 3 files
2.2 主配置文件
---
- hosts: 192.141.106.24remote_user: rootserial: 5roles:- firewalld
2.3 tasks文件內容
- main.yml
- include: del_rule.yml
- include: add_rule.yml
- include: del_rule.yml
- name: del ports rule 19100firewalld: port=19100/tcp zone=public permanent=yes immediate=yes state=disabled
- include: add_rule.yml
- name: add ipsetsshell: 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 19100firewalld:permanent: yeszone: publicrich_rule: rule family=ipv4 source ipset=test port protocol=tcp port=19100 acceptstate: enabled- name: firewalld reloadservice: name=firewalld state=reloaded
如果你不請什么是ansible中的角色,動動你的小手,跳轉過去看看唄“roles角色”
請不要以此視為定論,這只是我的個人經驗