PAMを理解する
【連載コラム:Linuxを学ぼう(13)】
サーバーを扱う上で必須と言える技術が「Linux」。今回はLinuxのユーザー認証に関する仕組みである「PAM」について解説します。
PAMはLinuxのユーザー認証に関する仕組みです。セキュリティ対策の基本でもあるので、しっかりと理解しましょう。
PAMとは
PAM(Pluggable Authentication 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サーバーをインストールする
第17回:ネットワークの状態確認を理解する
第15回:ファイルのアクセス権を理解する
第14回:パッケージをアップデートする dnf編
第13回:PAMを理解する
第12回:グループとは何かを理解する
第11回:sudoコマンドについて理解する
第10回:suコマンドで特権ユーザーになる
第9回:ユーザー権限を理解する
第8回:SSHによるリモートログイン
第6回:Linuxイストールの実際
第5回:Linuxインストールの準備
第3回:学習環境を用意する
第2回:Linuxをどう学ぶのか
第1回:Linuxを学ぼう