Ansibleを使用してRaspberry PiまたはOracle Cloudの一部の構成を自動化したいと思います.
作業順序は次のとおりです。
- 現在/デフォルト/安全でないユーザー「ubuntu」を使用してスクリプトを実行する
ansible-playbook security.yml -u ubuntu
- プレイブックから新しいユーザーを作成します。
- name: create a new safe user
user:
name: "{{ safe_user }}"
state: present
groups: "sudo"
password: "{{ password }}"
comment: "Safe user"
shell: /bin/bash
update_password: on_create
プレイブックは、2番目のステップで作成されたセキュリティユーザーにauthenticate_keysファイルが存在することを確認します。
PlayBookは安全でないユーザー「ubuntu」を削除します
プレイブックは引き続きFail2ban、ufw設定、SSHポートの変更などを行いますが、今は「safe_user」を使用しています。
システムから削除されたUbuntuユーザーを使用してすべての後続の操作を続行しようとするため、手順4〜5で失敗します。
ステップ5で<safe_user>を使用して再接続を指定できますか?
私は現在、すべてのタスクを2つのファイルに分割していますが、1つだけが欲しいのです。
$ ansible-playbook security-1.yml -u ubuntu # will create safe_user
$ ansible-playbook security-2.yml -u safe_user # will delete ubuntu user
なぜUbuntuユーザーを削除するのですか?
- これは、悪役がubuntuまたはpiユーザーとしてログインするオプションがない場合は、より安全であると感じるためです。
- アンサーブルの限界をもっと深く理解したいです。
ベストアンサー1
実行中のプロセスを拒否、再所有、または他の方法で偽装するメカニズムがないため、これはまったく可能ではないと思います(ansibleだけでなく基本的に)。
古いユーザーの2番目のユーザー名を変更できますが、なぜ新しいユーザーを作成して他のユーザーを削除するのですか? ansibleではどうなるかわかりませんが、シェルコマンドは次のとおりです。
usermod -l safe_user ubuntu
それでもユーザーを削除するには、削除後にジョブがなくなるようにこのジョブを最後のステップに移動できます。または、追加のスクリプト(プレイブック)で残りのタスクを実行しますsu -c '...' safe_user
(ansibleがこの「ネスト」をサポートしているかどうかは不明です)。
別の変形は、ユーザー(usermod -L ubuntu
)またはそのログイン(usermod ubuntu -s /sbin/nologin
)を完全に削除するのではなく、無効またはロックすることです。