PAMを理解する

【連載コラム:Linuxを学ぼう(13)】
サーバーを扱う上で必須と言える技術が「Linux」。今回はLinuxのユーザー認証に関する仕組みである「PAM」について解説します。

最終更新日:2023年10月05日

PAMはLinuxのユーザー認証に関する仕組みです。セキュリティ対策の基本でもあるので、しっかりと理解しましょう。


PAMとは

PAM(Pluggable Authenticaton Modules)は、Linuxのユーザー認証に関する仕組みです。/etc/pam.dディレクトリ配下に設定ファイルが配置されており、設定を変更することで認証の動作を変更することができます。

[root@localhost ~]# ls /etc/pam.d
atd               gdm-autologin           password-auth     su
axtsn_register    gdm-fingerprint         polkit-1          su-l
chfn              gdm-launch-environment  postlogin         sudo
chsh              gdm-password            remote            sudo-i
cockpit           gdm-pin                 runuser           system-auth
config-util       gdm-smartcard           runuser-l         systemd-user
crond             login                   smartcard-auth    vlock
cups              other                   sshd              vmtoolsd
fingerprint-auth  passwd                  sssd-shadowutils  xserver

suコマンドの認証を変更してみる

例としてsuコマンドの認証を変更してみましょう。通常の動作であれば、suコマンドを実行するとユーザーrootのパスワードが要求されます。

[linuc@localhost ~]$ su -
パスワード:
[root@localhost ~]#

suコマンドのPAMの設定は/etc/pam.d/suで行います。このファイルに、以下のような4行が記述されています。

# 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

上の2行は、wheelグループに所属しているユーザーは信頼する、という設定です。
下の2行は、ユーザーはwheelグループに所属している必要がある、という設定です。

それぞれ、試してみましょう。

上の設定のみ有効にする

まず、上の行の設定のみ有効にした状態です。PAMの設定ファイルは変更後即時有効になるので、一度一般ユーザーに戻った後、再度suコマンドを実行してみます。

[linuc@localhost ~]$ su -
パスワード: ※この段階ではパスワードが要求される
[root@localhost ~]# vi /etc/pam.d/su ※上の行の設定のみコメントアウト
[root@localhost ~]# exit
ログアウト
[linuc@localhost ~]$ su - ※再度suコマンドを実行
[root@localhost ~]#

このように、設定変更後はwheelグループに所属しているユーザーはパスワード無しでsuコマンドを実行してユーザーrootになることができました。rootのパスワードを入力させることは、たとえばキーロガーのようなものを仕込まれている端末であったり、手元を覗き込まれたりすることを考えるとセキュリティの問題になることが考えられます。逆にパスワードを入力させないことでセキュリティを高めたい場合に設定することがあります。

下の設定も有効にする

次に下の設定も有効にしてみます。検証のためにwheelグループに所属していないユーザーを追加してみます。

[root@localhost ~]# vi /etc/pam.d/su
[root@localhost ~]# useradd nowheel
[root@localhost ~]# su - nowheel
[nowheel@localhost ~]$ su -
パスワード: ※正しいrootのパスワードを入力
su: 拒否されたパーミッション
[nowheel@localhost ~]$ exit
ログアウト
[root@localhost ~]# su - linuc
[linuc@localhost ~]$ su -

このように、wheelグループに所属していないユーザーはsuコマンドの実行自体が拒否されます。このように、特定のユーザーにのみsuコマンドを実行させることで、rootのパスワードが漏洩したとしてもroot権限を取得できないようにすることができます。

認証の設定はセキュリティの基本です。サーバー導入後に最初の段階で行うよう事前にどう設定するのか準備しておきましょう。


筆者紹介
宮原 徹 氏

宮原 徹 氏

株式会社びぎねっと

Linux標準教科書、Linuxサーバー構築標準教科書などの監修者。LinuCレベル1/レベル2 Version10.0の改訂作業にも協力。また、幅広いOSSに関する情報提供の場として「オープンソースカンファレンス(OSC)」の企画運営も。

バックナンバー

第21回:外部からWebサーバーにアクセスする

第20回:Webサーバーを動かす

第19回:Webサーバーをインストールする

第18回:典型的なネットワークトラブルについて理解する

第17回:ネットワークの状態確認を理解する

第16回:アクセス権に関わる様々なことについて理解を深める

第15回:ファイルのアクセス権を理解する

第14回:パッケージをアップデートする dnf編

第13回:PAMを理解する

第12回:グループとは何かを理解する

第11回:sudoコマンドについて理解する

第10回:suコマンドで特権ユーザーになる

第9回:ユーザー権限を理解する

第8回:SSHによるリモートログイン

第7回:Linuxインストール後にやること

第6回:Linuxイストールの実際

第5回:Linuxインストールの準備

第4回:Linux学習のためのネットワーク環境

第3回:学習環境を用意する

第2回:Linuxをどう学ぶのか

第1回:Linuxを学ぼう

ページトップへ