如何在不断开连接的情况下在ansible中配置UFW拒绝策略?
How to configure UFW reject policy in ansible without being disconnected?
我正在尝试像这样在 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
问题是一旦执行 "Set firewall default policy" 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
对我来说,应用 reject
策略后 SSH 会话似乎终止了。我该如何解决这个问题?我正在使用 username/password 身份验证(即没有 SSH 密钥)登录,如果有任何区别的话。
向 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
这是对我有用的解决方案,来自 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
我正在尝试像这样在 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
问题是一旦执行 "Set firewall default policy" 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
对我来说,应用 reject
策略后 SSH 会话似乎终止了。我该如何解决这个问题?我正在使用 username/password 身份验证(即没有 SSH 密钥)登录,如果有任何区别的话。
向 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
这是对我有用的解决方案,来自 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.posixansible-galaxy collection install ansible.posix