PAM認証の設定

カテゴリ:PAM

CentOS対応

PAMは認証をOS側で一元化するための仕組みです。

設定ファイルの場所

PAMの設定ファイルは/etc/pam.d/配下に各アプリケーションごとにフォルダ分けされて格納されています。
※/etc/pam.d/ディレクトリが存在しない場合のみ/etc/pam.confを参照します。

# ls -la /etc/pam.d
合計 108
drwxr-xr-x.  2 root root 4096  7月 21 01:00 2014 .
drwxr-xr-x. 64 root root 4096  7月 27 11:48 2014 ..
-rw-r--r--.  1 root root  192  2月 22 14:02 2013 chfn
-rw-r--r--.  1 root root  192  2月 22 14:02 2013 chsh
-rw-r--r--.  1 root root  232  2月 22 09:16 2013 config-util
-rw-r--r--.  1 root root  293  7月 19 13:55 2011 crond
-rw-r--r--.  1 root root  167  7月 21 01:00 2014 dovecot
lrwxrwxrwx.  1 root root   19  7月 19 23:25 2014 fingerprint-auth -> fingerprint-auth-ac
-rw-r--r--.  1 root root  659  7月 19 23:25 2014 fingerprint-auth-ac
-rw-r--r--.  1 root root  728  2月 22 14:02 2013 login
-rw-r--r--.  1 root root  172  2月 22 14:38 2013 newrole
-rw-r--r--.  1 root root  154  2月 22 09:16 2013 other
-rw-r--r--.  1 root root  146  2月 22 20:48 2012 passwd
lrwxrwxrwx.  1 root root   16  7月 19 23:25 2014 password-auth -> password-auth-ac
-rw-r--r--.  1 root root  896  7月 19 23:25 2014 password-auth-ac
-rw-r--r--.  1 root root  613  2月 22 14:02 2013 remote
-rw-r--r--.  1 root root  167  2月 22 14:38 2013 run_init
-rw-r--r--.  1 root root  143  4月 17 22:03 2012 runuser
-rw-r--r--.  1 root root  105  4月 17 22:03 2012 runuser-l
lrwxrwxrwx.  1 root root   17  7月 19 23:25 2014 smartcard-auth -> smartcard-auth-ac
-rw-r--r--.  1 root root  711  7月 19 23:25 2014 smartcard-auth-ac
lrwxrwxrwx.  1 root root   25  7月 20 21:27 2014 smtp -> /etc/alternatives/mta-pam
-rw-r--r--.  1 root root    0  7月 28 09:24 2014 smtp.postfix
-rw-r--r--.  1 root root  341  2月 22 12:51 2013 ssh-keycat
-rw-r--r--.  1 root root  575  2月 22 12:51 2013 sshd
-rw-r--r--.  1 root root  487  4月 17 22:03 2012 su
-rw-r--r--.  1 root root  137  4月 17 22:03 2012 su-l
-rw-r--r--.  1 root root  202  2月 22 15:26 2013 sudo
-rw-r--r--.  1 root root  187  2月 22 15:26 2013 sudo-i
lrwxrwxrwx.  1 root root   14  7月 19 23:25 2014 system-auth -> system-auth-ac
-rw-r--r--.  1 root root  896  7月 19 23:25 2014 system-auth-ac
-rw-r--r--.  1 root root  335  3月  1 19:16 2013 vsftpd
-rw-r--r--.  1 root root  101  5月 21 13:51 2014 webmin
# cat /etc/pam.d/sshd
#%PAM-1.0
auth       required     pam_sepermit.so
auth       include      password-auth
account    required     pam_nologin.so
account    include      password-auth
password   include      password-auth
# pam_selinux.so close should be the first session rule
session    required     pam_selinux.so close
session    required     pam_loginuid.so
# pam_selinux.so open should only be followed by sessions to be executed in the user context
session    required     pam_selinux.so open env_params
session    optional     pam_keyinit.so force revoke
session    include      password-auth

モジュールタイプ

モジュールタイプは認証の型を示します。
モジュールタイプには以下の4つがあります。

auth

ユーザー認証を実施するモジュールです。

account

そのユーザーがユーザー認証が行えるかをチェックするモジュールです。
例えばユーザーのアクセス許可やパスワードの有効期限切れなどを確認します。

password

パスワードの変更など、パスワード関連の設定を実施するモジュールです。

session

ユーザー認証後の処理を定義するモジュールです。

コントロール

コントロールは認証の結果、どうするかを定義します。
コントロールには以下の4つがあります。

requisite

モジュールの処理に失敗した場合に、直ちに認証を拒否します。

required

モジュールの処理に失敗してもすぐに拒否せずに、同じモジュールタイプの認証がすべて終了してから拒否します。

sufficient

モジュールの処理に成功した場合、且つそれまでにモジュールの処理が1つも失敗していなければ、直ちに認証を許可します。

optional

モジュールの結果を無視します。

外部ファイルの読み込み

includeを指定して外部ファイルを読み込む事もできます。

auth        include   sales-account

主なモジュール

実際にどのような認証を実施するかは指定するモジュールで決まります。
主なモジュールは以下となります。

pam_unix.so

通常のパスワード認証を実施します。

pam_securetty.so

/etc/securettyに記載されている端末のみを許可します。

pam_nologin.so

/etc/nologinがある場合にroot以外を拒否します。

pam_cracklib.so

パスワードのチェックを実施します。
以下の場合、パスワードが空の場合、パスワードを設定する場合に、大文字、小文字、数字、記号がそれぞれ2文字以上含まれていなければならない。またパスワードを3回間違えると認証失敗を返します。

password requisite pam_cracklib.so try_first_pass retry=3 type=ucredit=-2 lcredit=-2 dcredit=-2 ocredit=-2

※try_first_passは認証方式を複数指定している場合に指定すると、パスワード認証のプロンプトを1回だけ表示するようにします。

pam_deny.so

認証に対して常に失敗を返します。
つまりホワイトリスト方式の場合に使用するモジュールとなり、通常sufficientコントロールと組み合わせて使用します。
例えば以下の設定の場合、パスワード認証に成功しなかったユーザーはすべて明示的に拒否します。

...
auth        sufficient    pam_unix.so
auth        required      pam_deny.so

※sufficientは成功すれば直ちに認証許可となるため、pam_deny.soは実行されません。

pam_permit.so

認証に対して常に成功を返します。
認証に関してはあまりブラックリスト方式は使用しないため、あまり使う機会は無いと思います。

公開日時:2014年07月28日 09:43:25
最終更新日時:2024年03月23日 13:56:57

なお、VPS選びで迷ったらこちらの記事で主要VPSのメモリ容量ごとの月額、年額料金を比較していますので、是非参考にしてみてください。

PAMに戻る

このページのトップに戻る