Ansible/初心者向けAnsible入門講座/SSH環境の整備
現状特に何も設定していなければ、rootでのパスワードログインには特に制限がかかっていないはずです。
これではセキュリティ上よろしくないので制限をかけたいと思います。
制限内容は
- rootでのパスワードログイン不可
- rootでの鍵有りログインは許可するが、アクセス元を限定する
- 一般ユーザーはどこからでもパスワードでも鍵でもログインできる
です。
個人的にはこれが利便性とセキュリティ両方にバランスが取れていると思っています。
rootログインは一切禁止してsudoなどを推奨する向きもありますが、sudoは一般ユーザーのパスワードが分かってしまうとroot権限でのコマンド実行ができてしまいますし、コマンドを制限するなどの方法もとったところでそれはそれで運用が面倒になってしまいます。
まあ、このへんは要求次第では一概に優劣をつけられないところでもあるので、今回は自分のやり方で説明していきます。
さて、上記の制限を行うには、具体的には /etc/ssh/sshd_config を編集し、以下の内容にします。
- PermitRootLoginをwithout-passwordにする
- AllowUsersにアクセス元制限付き「root@192.168.0.1」と制限無しの一般ユーザー「commonuser」を設定する
ansibleには様々な処理を行うモジュールがあり、今回は lineinfile というモジュールを使います。
これは、ファイルの行の内容を制御するためのモジュールです。
それと、設定ファイルを編集したらnotifyを使ってsshdをリロードします。
今回のplaybookは /etc/ansible/sshd_config.yml として以下のように作りました。
- hosts: all tasks: - name: Set PermitRootLogin lineinfile: dest=/etc/ssh/sshd_config regexp='^#?PermitRootLogin .*' line='PermitRootLogin without-password' notify: - Reload SSHD - name: Set AllowUsers lineinfile: dest=/etc/ssh/sshd_config regexp='^AllowUsers .*' line='AllowUsers root@192.168.0.1 commonuser' notify: - Reload SSHD handlers: - name: Reload SSHD service: name=sshd state=reloaded
lineinfileで正規表現にヒットした行を書き換え、書き換えが発生したらnotifyによってsshdをreloadさせます。
そしてこれを実行するには以下のコマンドです。
# ansible-playbook /etc/ansible/sshd_config.yml
実行すると結果が表示されますが、最初なので念のためファイルが書き換えられているか直接確認してみて下さい。
また、sshdが再起動されているかログを確認してみて下さい。
ansibleには本当に様々なモジュールがあっていろいろなことができるので、困った時には公式ドキュメントを確認してみることを忘れないようにして下さい。
- 最終更新:2016-07-19 18:38:42