サーバの初期ハードニング(セキュリティ強化)として SSH での root 直接ログイン禁止 は定番設定です。本記事では MIRACLE LINUX 8(el8)および 9(el9)での具体的な手順をまとめています。
この記事でわかること
- root の SSH ログインを無効化する基本原理(
PermitRootLogin no
) - el8 と el9 での設定ファイルの違い
- 設定反映前に準備すべき「sudo 可能な一般ユーザー」
- 設定テスト/反映/動作確認手順
- カスタム conf ファイル(上書き)方式
- 追加のセキュリティ強化アイデア(鍵認証・fail2ban)
(早見表)
OS系 | 設定ファイル | 推奨設定 | 備考 |
---|---|---|---|
el8 | /etc/ssh/sshd_config | PermitRootLogin no | 従来型単一ファイル。 |
el9 | /etc/ssh/sshd_config.d/01-permitrootlogin.conf または 10-custom.conf | PermitRootLogin no | 分割 conf 式。後勝ち(後から読み込まれるファイルが有効)。 |
重要: 設定後は
sudo sshd -t
で構文チェックし、sudo systemctl restart sshd
で反映してください。
前提チェック:sudo できる一般ユーザーの確保
root ログインを禁止すると、以後 root で直接 SSH 接続できません。必ず sudo 権限を持つ一般ユーザー でログインできる状態を先に作成・確認してください。
ユーザー作成例
sudo useradd -m youruser
sudo passwd youruser
sudo usermod -aG wheel youruser
sudo 動作確認
su - youruser
sudo -v # パスワード入力後、エラーがなければOK
el8 の設定手順
MIRACLE LINUX 8(RHEL8系)は従来どおり 単一ファイル /etc/ssh/sshd_config
を編集します。
1. 設定ファイルを開く
sudo vi /etc/ssh/sshd_config
2. PermitRootLogin
行を設定
以下のいずれかの状態になっていれば OK です。
PermitRootLogin no
行頭に
#
でコメントされている場合はコメントを外し、no
に変更してください。
3. 設定チェック & 反映
sudo sshd -t # 文法チェック(無応答=エラーなし)
sudo systemctl restart sshd
4. 動作確認
別端末から root でログインを試み、拒否されることを確認します。
el9 の設定手順
MIRACLE LINUX 9(RHEL9系)は 分割設定ディレクトリ /etc/ssh/sshd_config.d/
が導入されています。/etc/ssh/sshd_config
の末尾で Include
指定が行われ、複数の conf ファイルが順に読み込まれます。後から読み込まれた設定が同一ディレクティブを上書きします。
パターンA:既存ファイルを編集(簡単)
既に存在する 01-permitrootlogin.conf
を編集します。
sudo vi /etc/ssh/sshd_config.d/01-permitrootlogin.conf
設定例:
PermitRootLogin no
パターンB:カスタムファイルで上書き(推奨/構成管理向け)
ディストリビューション提供のファイルを変更したくない場合は、より後に読み込まれる番号(例:10-
以降)でカスタムファイルを追加します。
echo "PermitRootLogin no" | sudo tee /etc/ssh/sshd_config.d/10-custom.conf
命名規則は任意ですが、読み込み順制御のため数値プレフィックスを付与するとわかりやすいです。
チェック & 再起動
sudo sshd -t
sudo systemctl restart sshd
設定が効いているか確認する方法
1. 実際に root ログインを試す
別ホストから:
ssh root@server.example.com
Permission denied
などで拒否されれば OK。
2. 動的設定確認(sshd -T
)
OpenSSH は実効設定をダンプできます(root権限)。
sudo sshd -T | grep permitrootlogin
permitrootlogin no
が返れば設定反映済みです。
よくあるトラブルと対処
症状 | 原因 | 対策 |
---|---|---|
設定を変えたはずなのに root ログインできる | 別ファイルが後から上書き | /etc/ssh/sshd_config.d/ の読み込み順と内容を確認。sshd -T で実効値チェック。 |
再起動していない | 設定反映していない | systemctl restart sshd を忘れず実行。 |
追加のセキュリティ強化(任意)
パスワード認証の無効化(鍵認証化)
# /etc/ssh/sshd_config または対応する *.conf
PasswordAuthentication no
PubkeyAuthentication yes
fail2ban によるブルートフォース対策
sshd
jail を有効化- ban 時間やリトライ回数を調整
- Prometheus / Grafana 連携で可視化(過去記事参照)
まとめ
- root ログイン禁止は
PermitRootLogin no
。 - el8:
/etc/ssh/sshd_config
を編集。 - el9: 分割設定ディレクトリで
01-permitrootlogin.conf
を修正、または10-custom.conf
を追加(上書き)。 - 変更後は
sshd -t
→systemctl restart sshd
。 - 事前に sudo可能ユーザー を必ず用意。