16

我正在尝试像这样在 Ansible 中配置 UFW:

- name: Set firewall default policy
  ufw: state=enabled policy=reject
  sudo: true

- name: Allow SSH in UFW
  ufw: rule=allow port=22 proto=tcp

问题是,一旦执行“设置防火墙默认策略”,ansible 就会断开与服务器的连接:

TASK: [Set firewall default policy] *******************************************
changed: [xxx]

TASK: [Allow SSH in UFW] ******************************************************
fatal: [xxx] => {'msg': 'FAILED: [Errno 61] Connection refused', 'failed': True}

FATAL: all hosts have already failed -- aborting

对我来说,应用该策略后,SSH 会话似乎已终止reject。我该如何解决这个问题?如果这有什么不同,我将使用用户名/密码身份验证(即没有 SSH 密钥)登录。

4

2 回答 2

18

向 UFW 添加规则的顺序并不重要。所以你可以颠倒规则的顺序。诀窍是在添加默认规则之前添加规则以允许您当前的连接,这将拒绝它(并因此立即断开连接)。

- name: Allow SSH in UFW
  ufw: rule=allow port=22 proto=tcp

- name: Set firewall default policy
  ufw: state=enabled policy=reject
  become: true
于 2015-08-28T17:10:19.577 回答
2

这是对我有用的解决方案,来自ansible github

- name: Configure the kernel to keep connections alive when enabling the firewall
  sysctl:
    name: net.netfilter.nf_conntrack_tcp_be_liberal
    value: 1
    state: present
    sysctl_set: yes
    reload: yes

- name: Enable ufw
  ufw: state=enabled

您需要在主机上安装ansible.posix

ansible-galaxy collection install ansible.posix
于 2021-08-11T23:23:29.113 回答