「Pluggable Authentication Modules」の版間の差分
(ページの作成:「<!-- vim: filetype=mediawiki --> [[{{PAGENAME}}]] (PAM)とは、 ユーザ認証のためのモジュールです。 FreeBSD や Linux で利用されていま...」) |
|||
行1: | 行1: | ||
− | + | [[Pluggable Authentication Modules]] (PAM)とは、 ユーザ認証のためのモジュールです。 | |
− | + | ||
− | + | ||
− | [[ | + | |
[[FreeBSD]] や [[Linux]] で利用されています。 | [[FreeBSD]] や [[Linux]] で利用されています。 | ||
'''読み方''' | '''読み方''' | ||
− | ;[[ | + | ;[[Pluggable Authentication Modules]]: ぷらがぶる おーせんてぃけーしょん もじゅーるず |
;PAM:ぱむ | ;PAM:ぱむ | ||
__TOC__ | __TOC__ | ||
== 概要 == | == 概要 == | ||
+ | [[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 が用意されています。デフォルトでは、すべての認証処理が失敗するように設定されています。 | ||
+ | |||
+ | == 設定ファイルの書式 == | ||
+ | 設定ファイルは、以下の書式です。 | ||
+ | |||
+ | <code> | ||
+ | タイプ コントロールフラグ モジュール名 オプション | ||
+ | </code> | ||
+ | |||
+ | タイプには、以下の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で無効になります。 | ||
+ | <syntaxhighlight lang="bash"> | ||
+ | password sufficient pam_unix.so md5 shadow nullok try_first_pass use_authtok remember=3 | ||
+ | </syntaxhighlight> | ||
+ | |||
+ | == パスワードの最低文字数 == | ||
+ | パスワードで利用する文字数や文字の種類を設定します。 | ||
+ | pam_cracklib.so を使用します。 | ||
+ | |||
+ | ;minlen=n: パスワードの最低文字数をn文字にします。 | ||
+ | |||
+ | ;dcredit:数字 | ||
+ | ;ucredit:大文字 | ||
+ | ;lcredit:小文字 | ||
+ | ;ocredit:その他の記号 | ||
+ | |||
+ | dcredit, ucredit, lcredit, ocredit は、以下条件になります。 | ||
+ | * N>=のとき、該当の文字1文字につき、最低文字数制限を1文字減らします。 | ||
+ | * N<0のとき、該当文字が必ず -N 文字含まれる必要があります。 | ||
+ | |||
+ | この例では、パスワードは、最低12文字で、数字と大文字がそれぞれ2文字以上含まれている必要があります。 | ||
+ | <syntaxhighlight lang="bash"> | ||
+ | pam_cracklib.so try_first_pass retry=3 minlen=12 dcredit=-2 ucredit=-2 lcredit=0 ocredit=0 | ||
+ | </syntaxhighlight> | ||
+ | |||
+ | == ログイン試行の失敗回数を記録する == | ||
+ | pam_tally.soを使用して、ユーザーごとのログイン試行の失敗回数を記録し、指定回数を超えたら、ログインを拒否できます。 | ||
+ | |||
+ | pam_unix.so より前に設定します。 | ||
+ | |||
+ | ;deny=n: ログイン試行の失敗回数がnに達したら、ログインを拒否します。 | ||
+ | ;per_user:ログイン試行の失敗回数がユーザーごとに設定した回数に達するとログインを拒否します。 | ||
+ | ;no_reset:デフォルトでは、ログインに成功すると失敗回数はリセットされます。no_resetを指定した場合、リセットされなくなります。 | ||
+ | ;even_deny_root_account:[[root]]ユーザーへのログインも拒否します。デフォルトでは、[[root]]ユーザーへのログインを拒否しません。 | ||
+ | |||
+ | <syntaxhighlight lang="bash"> | ||
+ | auth required pam_tally.so deny=3 | ||
+ | </syntaxhighlight> | ||
+ | |||
+ | 詳細については、以下を参考にしてください。 | ||
+ | * [[faillog]] | ||
+ | * [[Linuxのログインに関連するログファイル]] | ||
+ | |||
+ | == 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 認証用のモジュールです。 | ||
== インストール == | == インストール == | ||
行29: | 行123: | ||
== 関連項目 == | == 関連項目 == | ||
− | |||
* [[pam-devel]] | * [[pam-devel]] | ||
+ | * [[Linuxのログインに関連するログファイル]] | ||
+ | * [[faillog]] | ||
+ | * [[tallylog]] | ||
+ | <!-- vim: filetype=mediawiki --> |
2013年12月21日 (土) 14:32時点における最新版
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/