Modificando pam com Ansible

2

Como parte de uma nova configuração de servidor, provisiono /etc/security/access.conf com os endereços IP de usuário / grupo e src de logins ssh permitidos. Isso requer a ativação de pam_access nos arquivos /etc/pam.d/login e /etc/pam.d/sshd (no Ubuntu de qualquer maneira)

parece O Ansible tem um módulo para modificar algumas dessas regras, mas não posso faça funcionar. Uma estipulação dos módulos é: "Para que uma regra do PAM seja modificada, o tipo, controle e module_path devem corresponder a uma regra existente." Isso significa que se uma regra tiver sido comentada, a pamd module não funcionará para habilitar essa linha?

Este é o meu manual atual. Eu tentei remover a linha with_items na tarefa e usar login para o parâmetro name: , mas isso parece não funcionar:

---
- hosts: all
  gather_facts: False
  tasks:
    - name: modify pam_access in /etc/pam.d for sshd and login
      pamd:
        name   : "{{ item }}"
        type   : account
        control: required
        module_path: pam_access.so
      with_items:
        - login
        - sshd

E este é o resultado de executá-lo. Não me dá muito para continuar:

$ ansible-playbook tests/pam-access.yml -i 192.168.24.66,                                                             
SUDO password: 

PLAY [all] ***********************************************************************************************************

TASK [modify pam_access in /etc/pam.d for sshd and login] ************************************************************
ok: [192.168.24.66] => (item=login)
failed: [192.168.24.66] (item=sshd) => {"changed": false, "item": "sshd", "module_stderr": "Shared connection to 192.168.24.66 closed.\r\n", "module_stdout": "\r\nTraceback (most recent call last):\r\n  File \"/tmp/ansible_vzO7tZ/ansible_module_pamd.py\", line 691, in <module>\r\n    main()\r\n  File \"/tmp/ansible_vzO7tZ/ansible_module_pamd.py\", line 645, in main\r\n    pamd.load_rules_from_file()\r\n  File \"/tmp/ansible_vzO7tZ/ansible_module_pamd.py\", line 361, in load_rules_from_file\r\n    self.load_rules_from_string(stringline.replace(\"\\\n\", \"\"))\r\n  File \"/tmp/ansible_vzO7tZ/ansible_module_pamd.py\", line 380, in load_rules_from_string\r\n    self.rules.append(PamdRule.rulefromstring(stringline))\r\n  File \"/tmp/ansible_vzO7tZ/ansible_module_pamd.py\", line 312, in rulefromstring\r\n    rule_type = result.group(1)\r\nAttributeError: 'NoneType' object has no attribute 'group'\r\n", "msg": "MODULE FAILURE", "rc": 1}

PLAY RECAP ***********************************************************************************************************
192.168.24.66              : ok=0    changed=0    unreachable=0    failed=1   
    
por Server Fault 22.05.2018 / 22:02

1 resposta

1

Acabou indo com lineinfile . Se alguém tiver uma solução melhor, adoraria ver.

   ---
    - hosts: all
      gather_facts: False
      tasks:
        - name: un-comment or add pam_access in /etc/pam.d files
          lineinfile:
            path   : "{{ item }}"
            regexp : "#.*account.*required.*pam_access.so"
            line   : "account   required   pam_access.so"
            insertafter : ".*include.*common-auth"
            state  : present
          with_items:
            - /etc/pam.d/login
            - /etc/pam.d/sshd
    
por 24.05.2018 / 19:02