「Pluggable Authentication Modules」の版間の差分

提供: セキュリティ
移動: 案内検索
(ページの作成:「<!-- vim: filetype=mediawiki --> [[{{PAGENAME}}]] (PAM)とは、 ユーザ認証のためのモジュールです。 FreeBSDLinux で利用されていま...」)
 
 
行1: 行1:
<!--
+
[[Pluggable Authentication Modules]] (PAM)とは、 ユーザ認証のためのモジュールです。
vim: filetype=mediawiki
+
-->
+
[[{{PAGENAME}}]] (PAM)とは、 ユーザ認証のためのモジュールです。
+
 
[[FreeBSD]] や [[Linux]] で利用されています。
 
[[FreeBSD]] や [[Linux]] で利用されています。
  
 
'''読み方'''
 
'''読み方'''
;[[{{PAGENAME}}]]: ぷらがぶる おーせんてぃけーしょん もじゅーるず
+
;[[Pluggable Authentication Modules]]: ぷらがぶる おーせんてぃけーしょん もじゅーるず
 
;PAM:ぱむ
 
;PAM:ぱむ
 
__TOC__
 
__TOC__
  
 
== 概要 ==
 
== 概要 ==
 +
[[Pluggable Authentication Modules]] (PAM)とは、 ユーザ認証のためのモジュールです。
  
[[{{PAGENAME}}]] (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)とは、 ユーザ認証のためのモジュールです。 FreeBSDLinux で利用されています。

読み方

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 が必要です。

ソースコード

使い方

 

関連項目