Server

MIRACLE LINUX 8/9 で SSH 経由の root ログインを禁止する手順

サーバの初期ハードニング(セキュリティ強化)として SSH での root 直接ログイン禁止 は定番設定です。本記事では MIRACLE LINUX 8(el8)および 9(el9)での具体的な手順をまとめています。

この記事でわかること

  • root の SSH ログインを無効化する基本原理(PermitRootLogin no
  • el8 と el9 での設定ファイルの違い
  • 設定反映前に準備すべき「sudo 可能な一般ユーザー」
  • 設定テスト/反映/動作確認手順
  • カスタム conf ファイル(上書き)方式
  • 追加のセキュリティ強化アイデア(鍵認証・fail2ban)

(早見表)

OS系設定ファイル推奨設定備考
el8/etc/ssh/sshd_configPermitRootLogin no従来型単一ファイル。
el9/etc/ssh/sshd_config.d/01-permitrootlogin.conf または 10-custom.confPermitRootLogin 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 -tsystemctl restart sshd
  • 事前に sudo可能ユーザー を必ず用意。

-Server
-, ,