【问题标题】:How to configure UFW reject policy in ansible without being disconnected?如何在不断开连接的情况下在ansible中配置UFW拒绝策略?
【发布时间】:2015-08-28 15:13:25
【问题描述】:

我正在尝试像这样在 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 密钥)登录。

【问题讨论】:

    标签: ansible ufw


    【解决方案1】:

    向 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
    

    【讨论】:

    • 我很困惑。您说“顺序不重要”,但您的解决方案是更改顺序?是哪个?
    • 顺序并不重要,因为您最终会得到独立于规则顺序的相同策略。但从某种意义上说,如果您添加一条阻止您当前连接的规则,您将无法添加一条允许您当前连接的规则?‍♂️
    • 我尝试将默认策略设置在开头和结尾(在允许 ssh 端口之后)。它在两种安排中都成功了,也失败了。
    【解决方案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
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-07-16
      • 1970-01-01
      • 1970-01-01
      • 2014-12-13
      • 2014-12-20
      • 2017-11-18
      • 2015-11-25
      相关资源
      最近更新 更多