Ale*_*502 5 ansible ufw ansible-2.x
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
Run Code Online (Sandbox Code Playgroud)
但是,我还想删除所有旧条目或错误到达的条目。
例如,如果旧版本有192.168.8.8,我想删除它。或者如果有人手动添加它。
有什么合理的方法可以做到这一点吗?我想如果服务器仅由ansible配置,并且当我从列表中删除IP地址时,我添加一个条目来删除它,我就不会遇到这个问题。
在尝试使用 Ansible v2.9 标准化服务器的 UFW 时,我遇到了类似的问题,因为每台服务器都有不同的规则。
方法是使用resetUFW,它删除所有现有规则,并创建我想要的规则,非常小心不要将我锁定在服务器之外。
代码:
- 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
Run Code Online (Sandbox Code Playgroud)
一步步解释
注意block: always:参数。您将在内部设置几乎所有操作block:并保留always:为安全阀,这样万一发生任何故障,您确信您仍然可以通过 SSH 访问您的服务器。
ignore_errors: yes这也可以在块级别完成,但我从文档中发现这不是“最安全”的选项。
Allow outgoing并Disallow ingoing定义一般行为。
然后,您可以添加任意数量的规则,并以always允许的 SSH 关闭,并启用您的防火墙,制定安全的剧本。
推荐
我强烈建议您不要在服务器中测试您的 UFW 剧本,如果出现问题您将会错过。
在已设置一两个 SSH 连接的单个测试服务器中测试您的 UFW playbook,因此,如果您规则拒绝所有 SSH 连接,您仍然可以在其中ufw allow 22
问:“旧版本有 192.168.8.8,我想删除它。”
A:参见参数delete。例如
- name: delete rule
ufw:
delete: true
rule: allow
port: 22
src: 192.168.8.8
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3042 次 |
| 最近记录: |