Pluggable Authentication Modules
Pluggable Authentication Modules (PAM)とは、 ユーザ認証のためのモジュールです。 FreeBSD や Linux で利用されています。
読み方
- Pluggable Authentication Modules
- ぷらがぶる おーせんてぃけーしょん もじゅーるず
- PAM
- ぱむ
目次
概要
Pluggable Authentication Modules (PAM)とは、 ユーザ認証のためのモジュールです。
PAMには、いろいろなモジュールが用意されています。 各モジュールは、auth, account, password, session の4つの(もしくはその一部)のタイプのメソッドを提供します。
- auth
- パスワードなどの認証を行い、本人を確認します。
- account
- パスワードの有効期限など、ユーザーアカウントの有効性を確認します。
- password
- パスワードを変更します。
- session
- ユーザー認証に付随するタスクを実行します。
sshd, passwd, sudo, su などは、PAMを利用するように実装されています。
PAM の設定ファイル
/etc/pam.d に設定ファイルを設置します。 sshdであれば、/etc/pam.d/sshd がsshd用の設定ファイルになります。
対応する設定ファイルを持たないプログラム用に、 /etc/pam.d/others が用意されています。デフォルトでは、すべての認証処理が失敗するように設定されています。
設定ファイルの書式
設定ファイルは、以下の書式です。
タイプ コントロールフラグ モジュール名 オプション
タイプには、以下の1つを指定します。
- auth
- account
- password
- session
コントロールフラグは、以下の1つを指定します。
- required
- sufficient
- sufficient フラグが指定されたモジュールが成功した場合、その後のモジュールは実行されません。
- requisite
- requisite フラグが指定されたモジュールが失敗した場合、その後のモジュールは実行されません。
- optional
- include
requisite 以外のフラグのモジュールは、失敗した場合でも、後続のモジュールの処理は実行されます。 include は、指定された設定ファイルを読み、設定ファイルに記載されたモジュールを実行します。
コントロールフラグ
- sufficient
- sufficientの指定されたモジュールが失敗した場合、最終的な結果が成功になるには、すべての required と requisite 指定のモジュールが成功しなければなりません。
- sufficientの指定されたモジュールが成功した場合、最終的な結果が成功になるには、それ以前のすべての requiredとrequisite 指定のモジュールが成功しなければなりません。
- optional
- optional指定のモジュールは、実行されるだけで、最終的な結果に影響はありません。判定結果に関係しないタスクを実行する場合に利用されます。
同一パスワードの再利用を禁止する
過去3回(現在のパスワードを含め、直近4回)までに使用したパスワードの再利用を禁止する例です。rememberを使用します。remember=0で無効になります。
password sufficient pam_unix.so md5 shadow nullok try_first_pass use_authtok remember=3
パスワードの最低文字数
パスワードで利用する文字数や文字の種類を設定します。 pam_cracklib.so を使用します。
- minlen=n
- パスワードの最低文字数をn文字にします。
- dcredit
- 数字
- ucredit
- 大文字
- lcredit
- 小文字
- ocredit
- その他の記号
dcredit, ucredit, lcredit, ocredit は、以下条件になります。
- N>=のとき、該当の文字1文字につき、最低文字数制限を1文字減らします。
- N<0のとき、該当文字が必ず -N 文字含まれる必要があります。
この例では、パスワードは、最低12文字で、数字と大文字がそれぞれ2文字以上含まれている必要があります。
pam_cracklib.so try_first_pass retry=3 minlen=12 dcredit=-2 ucredit=-2 lcredit=0 ocredit=0
ログイン試行の失敗回数を記録する
pam_tally.soを使用して、ユーザーごとのログイン試行の失敗回数を記録し、指定回数を超えたら、ログインを拒否できます。
pam_unix.so より前に設定します。
- deny=n
- ログイン試行の失敗回数がnに達したら、ログインを拒否します。
- per_user
- ログイン試行の失敗回数がユーザーごとに設定した回数に達するとログインを拒否します。
- no_reset
- デフォルトでは、ログインに成功すると失敗回数はリセットされます。no_resetを指定した場合、リセットされなくなります。
- even_deny_root_account
- rootユーザーへのログインも拒否します。デフォルトでは、rootユーザーへのログインを拒否しません。
auth required pam_tally.so deny=3
詳細については、以下を参考にしてください。
PAMモジュール
- pam_security.so
- /etc/securetty に記載されたコンソールのみ root ユーザーのログインを許可します。
- pam_nologin.so
- /etc/nologin ファイルが存在する場合、一般ユーザーのログインを禁止します。システムメンテナンス中など、一時的に一般ユーザーのログインを禁止するときに、 /etc/nologin ファイルを作成します。
- pam_limits.so
- /etc/security/limits.conf に従い、ユーザーの ulimit を設定します。
- pam_ldap.so
- LDAP 認証用のモジュールです。
インストール
- PAM を使ったプログラミングをするには、Linux では、pam-devel が必要です。
ソースコード
- http://svnweb.freebsd.org/base/stable/9/lib/libpam/
- https://git.fedorahosted.org/cgit/linux-pam.git/
使い方
関連項目
ツイート