SSHでrootのログインを拒否する方法

サーバーをリモートで操作するにはSSHで接続する方法がありますが、rootでログインできる状態はセキュリティ上なんだか不安。

rootでのSSHのログインを拒否し、ログイン用のユーザーを作成して”su”コマンドでrootに切り替えできるような環境に設定してみます。

ログイン用ユーザーの作成

まずはログイン用ユーザーの作成から始めます。

rootでログインし、wheelグループをサブグループに持つユーザー「admin_user」を作成します。

# useradd admin_user -d /home/admin_user -G wheel
# passwd admin_user パスワードを確認も含めて2回入力

wheelグループとはUNIX系システムroot権限を得ることができるグループのことです。
ではwheelグループに追加されていないユーザーはroot権限を得ることができないかと言うと、そういうわけではありません。sawara.meの環境(CentOS 6.3)ではデフォルトで一般ユーザーが”su”コマンドでroot権限を得ることができてしまいました。

$ su –
Password: rootのパスワードを入力
# ← root切り替えできてしまった

ということで「/etc/login.defs」に下記行を追加してsuコマンドの制限を有効にします。

SU_WHEEL_ONLY yes

次に「/etc/pam.d/su」を下記のように変更し、suコマンド実行可能なグループを指定します。

#auth required pam_wheel.so use_uid
この行のコメントアウトを外す
auth required pam_wheel.so use_uid

設定を反映させるためにサーバーを再起動します。

# shutdown -r now

再起動後、一般ユーザーでログインし、suコマンドでrootに切り替わらないことを確認します。

$ su –
Password: rootのパスワードを入力
su: incorrect password
$ ← root切り替えに失敗した

パスワードの入力確認は出てきますが、パスワードを入力してもパスワードが違うというエラーで切り替わりません。

次に先ほど発行した「admin_user」でログインし、suコマンドでrootに切り替わるか確認してみます。

$ su –
Password: rootのパスワードを入力
#

rootのコマンドラインが戻ってきたら成功です。

SSHでrootのログイン禁止設定

最後にSSHでrootのログイン禁止設定を行います。sshdデーモンの設定ファイル「/etc/ssh/sshd_config」を下記のように変更します。

#PermitRootLogin yes
この行を以下のように変更
PermitRootLogin no

変更後sshデーモンを再起動し、設定を反映させます。

/etc/init.d/sshd restart

以上でSSHの設定は完了です。一度ログアウトし、rootでログインできなくなっていることを確認します。

これでrootでSSHからログインすることはできなくなりました。今後はログイン用ユーザーでログインして運用をしていこうと思います。

sudoコマンドなんかで運用する方法もあるかと思いますが、設定方法はまたの機会にまとめてみることにします。

コメントを残す