gpt4 book ai didi

ansible - 如何使用 ansible 清除不在列表中的任何 ufw 条目

转载 作者:行者123 更新时间:2023-12-04 14:12:29 28 4
gpt4 key购买 nike

https://docs.ansible.com/ansible/latest/modules/ufw_module.html
我已经将 Ansible 2 配置为允许一堆带有 ufw 的 ip 地址,其中包含如下条目:

  - name: allow from this one computer
ufw:
rule: allow
port: 22
src: 192.168.5.5
但是,我还想删除任何旧条目或错误到达的条目。
例如,如果旧版本有 192.168.8.8,我想删除它。或者如果有人手动添加它。
有什么合理的方法可以做到这一点吗?我想如果服务器只由 ansible 配置,当我从列表中删除一个 ip 地址时,我添加一个条目来删除它,我不会有这个问题。

最佳答案

在尝试使用 Ansible v2.9 标准化我的服务器的 UFW 时,我遇到了类似的问题,因为每个服务器都有不同的规则。
方法是对 UFW 进行 reset,它删除所有现有规则,并创建我想要的规则,非常注意 不会将我锁定在服务器 之外。
编码:


- name: Setup admin production UFW
hosts: my_hosts
gather_facts: no
tasks:
- block:
- name: Reset UFW
ufw:
state: reset

- name: Allow outgoing
ufw:
default: allow
direction: outgoing

- name: Disallow ingoing
ufw:
default: deny
direction: incoming

- name: Establish regular admin rules
ufw:
rule: allow
direction: in
port: '5432'
proto: tcp
from_ip: '{{ item }}'
loop:
- 123.456.789/32
- 987.654.321/32

always:
- name: Grant ssh access
ufw:
rule: allow
direction: in
port: '22'
proto: tcp
from_ip: 321.456.987/32

- name: Enable Firewall
ufw:
state: enabled

一步一步解释
注意 block: always: 参数。您将在 block: 中设置几乎所有操作,并将 always: 作为安全阀,以便万一出现任何故障,您可以确定您仍然可以通过 SSH 访问您的服务器。
这也可以在块级别使用 ignore_errors: yes 来完成,但我从 documentation 中看出这不是“最安全”的选项。 Allow outgoingDisallow ingoing 定义一般行为。
然后,添加尽可能多的规则,并关闭 always 允许 SSH,并启用防火墙,拥有一个安全的剧本。
推荐
我强烈建议您 不要 在服务器中测试您的 UFW 剧本,如果出现问题,您会错过这些剧本。
在已经建立了一个或两个 SSH 连接的单个测试服务器中测试您的 UFW 剧本,因此如果您规则拒绝所有 SSH 连接,您仍然在里面并且可以 ufw allow 22

关于ansible - 如何使用 ansible 清除不在列表中的任何 ufw 条目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63141432/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com