新しいサーバー設定の一部として、許可されたsshログインのユーザー/グループおよびsrcIPアドレスを使用して/etc/security/access.conf
をプロビジョニングします。これには、pam_access
ファイルと/etc/pam.d/login
ファイルで/etc/pam.d/sshd
を有効にする必要があります(とにかくUbuntuで)
それ そうです Ansibleにはこれらのルールのいくつかを変更するためのモジュールがありますが、私はそれを機能させることができません。モジュールの規定は次のとおりです。 "PAMルールを変更するには、タイプ、コントロール、およびmodule_pathが既存のルールと一致する必要があります。"つまり、ルールがコメントアウトされている場合、pamd
モジュールはその行を有効にするために機能しませんか?
これは私の現在のプレイブックです。タスクのwith_items
行を削除し、name:
パラメーターにlogin
を使用しようとしましたが、それも機能しないようです。
---
- 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
そして、これはそれを実行した結果です。それは私に続けることをあまり与えません:
$ 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
結局lineinfile
になりました。誰かがより良い解決策を持っているなら、それを見たいです。
---
- 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
-vvvvオプションを指定して実行し、失敗した理由を確認します。 sshdファイルとログインファイルで、すでに存在するルールを見つけてから、stateパラメーターを使用して、既存のルールの前または後に新しいルールを挿入するように指示します。例えば:
次の形式を試して、新しいルールを作成してください。
- name: modify pam_access in /etc/pam.d for sshd and login
pamd:
name: '{{ item }}'
#Existing type, control, and module_path in sshd and login
type: account
control: required
module_path: pam_nologin.so
#New rule you want to add
new_type: account
new_control: required
new_module_path: pam_access.so
module_arguments: insert new args here, if applicable. Remove if none.
#Inserts rule before existing rule - can use after as well
state: before
#loops through both files - if existing module exists in both.
loop:
- login
- sshd
または、既存のルールを見つけて、モジュール/コントロールを変更することもできます。
- name: Update pam_pwquality.so Rule Control
pamd:
name: '{{ item }}'
type: account
control: required
module_path: pam_nologin.so
new_module_path: pam_pwquality.so
loop:
- login
- sshd