ansibleguy.linux_ufw
已弃用
在自动化中使用 UFW 作为中间件没有真正的意义。
这会给单规则的更改带来不必要的复杂性!
在我看来,它不是为自动化设计的工具。
我实际上推荐使用 NFTables: ansibleguy.infra_nftables
Ansible 角色 - 简单防火墙 (UFW)
Ansible 角色用于在基于 Debian 的 Linux 服务器上部署/配置软件防火墙 'UFW'。
测试过:
- Debian 11
安装
# 最新版本
ansible-galaxy role install git+https://github.com/ansibleguy/linux_ufw
# 从 galaxy 安装
ansible-galaxy install ansibleguy.linux_ufw
# 或指定自定义角色路径
ansible-galaxy install ansibleguy.linux_ufw --roles-path ./roles
# 安装依赖
ansible-galaxy install -r requirements.yml
功能
此 Ansible 角色将执行:
软件包安装
- UFW
配置
使用 两种模式之一 设置规则
- 有状态 的方式 (默认)
- 保留现有规则并使用规则状态添加/删除规则
- 无状态 的方式
- 每次重置 ufw 状态和规则
- 然后应用新规则
- 有状态 的方式 (默认)
验证 ssh 规则是否存在
信息
注意: 此角色的大部分功能可以选择启用或禁用。
有关所有可用选项,请查看 主默认文件 中的默认配置!
注意: 此角色目前仅支持基于 Debian 的系统
警告: 并非您提供的每个设置/变量都会检查其有效性。错误的配置可能会导致角色失效!
用法
你想要一个简单的 Ansible GUI 吗?查看我的 Ansible WebUI
配置
只需根据需要定义 'ufw_rules' 字典:
ufw_rules:
ruleShortName:
rule: 'allow' # 如果为空则为默认值
port: 80
proto: 'tcp'
log: 'no' # 如果为空则为默认值
from_ip: 'any' # 如果为空则为默认值
to_ip: 'any' # 如果为空则为默认值
direction: 'in' # 如果为空则为默认值
present: true # 如果为空则为默认值 => 将用于有状态规则检查 (别名 = 状态: present)
position: 2 # 您可以定义规则在规则集中的位置 (别名 = 插入)
comment: '您可以覆盖默认注释'
或简洁的方式:
ufw_rules: {
ruleShortName: {rule: 'allow', port: 80, proto: 'tcp', log: 'no', from_ip: 'any', to_ip: 'any', direction: 'in', state: 'present', position: 2, comment: '您可以覆盖默认注释'}
}
执行
运行剧本:
ansible-playbook -K -D -i inventory/hosts.yml playbook.yml
UFW 任务本身是 'community.general.ufw'
示例
执行前状态:
guy@ansible:~$ sudo ufw status numbered
状态:活动
目标 动作 来源
-- ------ ----
[ 1] 7424/tcp 允许进入 任何地方 # Ansible 管理 - confusedService
[ 2] 7429/tcp 允许进入 任何地方 (日志) # Ansible 管理 - nothingImportant
配置
ufw_rules:
# 入站流量限制
SecShöl:
port: 22
proto: 'tcp'
log: true
rule: 'limit'
RandomWebServer:
port: 8482
proto: 'tcp'
SecureLink:
port: 54038:54085
proto: 'udp'
log: true
from_ip: '192.168.194.0/28'
ipsecESP:
proto: 'esp'
from_ip: '10.10.10.1'
to_ip: '10.10.20.254'
ipsecIKE:
port: 500,4500
proto: 'udp'
from_ip: '10.10.10.1'
to_ip: '10.10.20.254'
# 出站流量限制
denyNtpOutgoing:
port: 123
proto: 'udp'
rule: 'deny'
direction: 'out'
# 删除这些规则:
confusedService:
port: 7424
proto: 'tcp'
state: 'absent'
nothingImportant:
port: 7429
proto: 'tcp'
log: true
present: false
结果:
guy@ansible:~$ sudo ufw status numbered
状态:活动
目标 动作 来源
-- ------ ----
[ 1] 22/tcp 限制进入 任何地方 (日志) # Ansible 管理 - SecShöl
[ 2] 8482/tcp 允许进入 任何地方 # Ansible 管理 - RandomWebServer
[ 3] 54038:54085/udp 允许进入 192.168.194.0/28 (日志) # Ansible 管理 - SecureLink
[ 4] 10.10.20.254/esp 允许进入 10.10.10.1/esp # Ansible 管理 - ipsecESP
[ 5] 10.10.20.254 500,4500/udp 允许进入 10.10.10.1 # Ansible 管理 - ipsecIKE
[ 6] 123/udp 拒绝出口 任何地方 (出口) # Ansible 管理 - denyNtpOutgoing
安装
ansible-galaxy install ansibleguy.linux_ufw
许可证
gpl-3.0
下载
2.5k
拥有者
[email protected] | GPG: https://badges.ansibleguy.net/public.gpg