我正在尝试在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
对我而言,在应用reject
策略时,SSH会话似乎已终止。我该如何解决这个问题?我正在使用用户名/密码身份验证(即没有SSH密钥)登录,如果这有任何区别。
答案 0 :(得分:15)
向UFW添加规则的顺序并不重要。所以你可以改变规则的顺序。诀窍是在添加默认规则之前添加规则以允许当前连接,这将拒绝它(因此立即断开连接)。
- name: Allow SSH in UFW
ufw: rule=allow port=22 proto=tcp
- name: Set firewall default policy
ufw: state=enabled policy=reject
sudo: true
答案 1 :(得分:0)
这是对我有用的解决方案,来自 this article
client.read_input_registers address=395 count=10
您需要使用
在主机上安装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