pam wheelを使って 管理者のログインを 制限してみた

Pocket

pam wheelを使って 管理者のログインを 制限してみた
pam wheelを使って管理者のログインを制限してみた

はい。

UNIXの管理者といえば、root。

そして、古来のUNIXでパスワードさえわかれば、ログインできるのがroot。

これはかなりセキュリティ的に問題がありました。

パスワードさえわかれば、簡単にrootになれるからです。

そこで考えられたのが、「root(管理者)にログインできるユーザーを制限しよう。rootにログインできるユーザーをグループで管理しよう。」という結論です。

そのrootとしてログインできるユーザーの属しているグループが「wheel」です。

—-[ 追記 ]—–

なぜ、「wheel(車輪)」かというと、推測ですが、「管理者を管理しよう」という発想そのものが、「コロンブスの卵」「車輪の再発明」だったわけです。

当時、ビジネスで、社長などの管理者についてマネジメント革命が起こってました。

ドラッカーのせいです。

それに触発されて、root(管理者)を管理しよう、管理するためのグループを作ろう。

ということで、そのグループ名が「wheel(車輪)」となったと思われます。

——————

試しにwheelのユーザーを作ってみましょう。

まずはグループを作ります。

$ groupadd wheel
$ grep wheel /etc/group
wheel:x:10:

次に、管理者になれるユーザーを作成します。

$ useradd kaba

次に、そのユーザーの第2グループをwheelにします。

ユーザーの第1グループは、セキュリティの関係上、ユーザー名と同じグループ名のグループで他のユーザーはこのグループにはなれません。

ユーザーの第1グループをユーザー名と同じグループ名のグループにすると、パーミッションでうっかりグループパーミッションを許可してしまっても、他のユーザーはそのグループではないので、読み取りも書き込みも実行もできず、セキュリティ上安全になる、というのが歴史上の理由です。

それでは、ユーザーの第2グループをwheelにしてみましょう。

$ usermod -G wheel kaba

これでユーザーがwheelグループに加わりました。

確認してみましょう。

$ grep wheel /etc/group
wheel:x:10:kaba

最後に、pamというログイン時の認証モジュールで、「rootにログインできるユーザーを、wheelグループのユーザーに制限する」という設定を行います。

$ cd /etc/pam.d/
$ emacs su

suというのは、「switch user」の略称で、ユーザーから別のユーザーにログインし直す(ユーザーをスイッチする)という意味です。

実際に「su」コマンドを実行するとパスワードを入力すれば、別のユーザーとしてログインできます。

/etc/pam.d/suの設定内容は以下の通りです。

#%PAM-1.0
auth            sufficient      pam_rootok.so
# Uncomment the following line to implicitly trust users in the "wheel" group.
#auth           sufficient      pam_wheel.so trust use_uid
# Uncomment the following line to require a user to be in the "wheel" group.
# ↓この行が始めはコメントアウトされているので、コメントアウトを解除する。
auth            required        pam_wheel.so use_uid
auth            substack        system-auth
auth            include         postlogin
account         sufficient      pam_succeed_if.so uid = 0 use_uid quiet
account         include         system-auth
password        include         system-auth
session         include         system-auth
session         include         postlogin
session         optional        pam_xauth.so

以上のように、

auth            required        pam_wheel.so use_uid

がコメントアウトされてpam wheelが無効化されているので、このコメントアウトを解除し、pam wheelを有効化します。

最後に、以下のように「su」コマンドを実行して、rootにsuできるか確認します。

$ su -

「-」は、「ログイン先の環境変数を使用する」という意味です。

要は、ログイン先のユーザーのPATHの設定を有効にし、完全にそのユーザーとしてログインし直すという意味です。

「-」を省いて「su」のみ実行した場合は、環境変数はログイン元のユーザーのものになります。

その場合、たとえばrootへログインしても、元の一般ユーザーの環境変数のままで、たとえばPATHに/sbinなどが含まれない状態になります。

そのため、通常は「su -」と実行します。

これで、晴れてrootにログインできるユーザーになりました。

他のユーザーはrootには絶対になれません。

なかなか便利な機能なので、ぜひ利用してみてください。

なお、/etc/pam.d/suの設定内容はCentOS7のものです。