SSH サーバーを安全に運用するには、いくつかのベストプラクティスがあります。
ここでは、root ユーザーでの SSH 接続を拒否 (PermitRootLogin no
) する設定例を紹介します。
この Ansible Playbook では、次のようなことを行っています。
lineinfile
モジュールで/etc/ssh/sshd_config
の内容を修正するPermitRootLogin
で始まる行が見つからない場合は、ファイルの末尾にPermitRootLogin no
を追加するPermitRootLogin
で始まる行が見つかった場合は、PermitRootLogin no
に置換する(ただし、最初からその設定が記述されていたら何もしない)
service
モジュール で SSH デーモンに設定をリロードさせる
この設定を行うと、root ユーザーでの SSH 接続ができなくなるので注意してください。 必ず、root ユーザー以外で SSH 接続できることを確認してから実行してください。
関連記事
- Ansible タスク例: APT パッケージをインストールする (ansible.builtin.apt)
- Ansible タスク例: UFW でファイアウォールを設定する (community.general.ufw)
- Ansible タスク例: Web からファイルをダウンロードする (ansible.builtin.get_url)
- Ansible タスク例: when による Playbook の条件分岐
- Ansible の SSH 接続で使用するユーザーと秘密鍵を指定する
- Docker コンテナで Ansible のテストベッド環境を用意する
- SSH キーの管理: SSH の接続先ごとにキーを使い分ける (~/.ssh/config)