*

PAMについて調べたことまとめ

公開日: : 最終更新日:2014/07/19 PAM

PAMについて調べたことをまとめ

概要

 PAM(Pluggable Authentication Modules : プラグ可能モジュール)は、プラグインモジュールを使って拡張することができる認証の仕組みアプリケーションサービスから認証部分を分離することで、認証関連の設定管理を一元化する。PAMのモジュールは通常、/lib/security ディレクトリ以下に配置されている。

  1. PAMの設定の概要
  2. モジュールタイプ
  3. コントロール
  4. PAM モジュール名
  5. 設定内容例

PAMの設定の概要

キーワード
  • /etc/pam.d ディレクトリ
  • /etc/pam.conf
概要

 PAMの設定は、/etc/pam.conf ファイルに記述するか、/etc/pam.d ディレクトリ以下にサービスごとのファイルを用意する。
 ただし/etc/pam.d ディレクトリがある場合は、/etc/pam.conf ファイルは参照されない。両方存在する場合は、/etc/pam.conf は無視される。(ほとんどのディストリビューションでは/etc/pam.conf は存在しない)ユーザーの要求は、PAMモジュールの出力に応じて許可されたり拒否されたりする。
 ●/etc/pam.d ディレクトリ以下の設定ファイルの書式は以下のとおり。

<モジュールタイプ> <コントロール> <モジュール名> [引数]
 []は省略可能、<>内は必須。

 ●/etc/pam.conf ファイルの書式は以下のとおり。

<モジュールタイプ> <コントロール> <モジュール名> [引数]
 []は省略可能、<>内は必須。

モジュールタイプ

 何をするときに使うモジュールなのかを指定する。
auth:
 パスワード認証などでユーザーを認証する
account:
 正当なユーザであるか、その行為が許可されているかどうかなどのチェックを行う
session:
 ログの記録など接続に関する管理を行う。ユーザー認証完了後に、サービスの制限やファイルパーミッションの設定などのタスクを処理する
password:
 パスワードの更新を行う。このとき、パスワードの強度チェックなどを行う

コントロール

 PAMの設定ファイルでは、同一のモジュールタイプが複数設定されていることがある。そのときそれぞれのエントリの評価結果による動作を制御するのがコントロールである。include は別のテキストファイルからルールをインクルードするコントロール。
required:
 認証に必須となるモジュールに指定する。失敗した場合、PAMのAPIは”falure”をかえすものの、同じスタック内のモジュールの実行は継続される
requisite:
 処理を継続するには、requiredモジュールが”success”を返さなければならない。このモジュールが失敗すると、PAMライブラリは”failure”を返し、スタック内のほかのモジュールはそれ以上実行されない。ユーザーはどの段階で失敗したのかがわかる
optional:
 モジュールの評価が成功でも失敗でも評価を続ける
sufficient:
 上のrequiredモジュールでの認証がすべて成功であれば、その時点で認証は成功とみなし、それ以降の評価は行われない失敗の場合は引き続き評価を行う

PAM モジュール名

pam_unix.so:
 /etc/passwdファイルなどを利用し、ユーザー名とパスワードでの認証を行う。/etc/shadowファイルで認証を行うには、引数に「shadow」を指定する。NISサーバで認証を行うには、引数に「nis」を指定する
pam_cracklib.so:
 パスワードに制限をかけてセキュリティを向上させる。

  1. 指定されたminilenパラメータに基づき、短すぎるパスワードを拒否する
  2. 依然使われていたパスワード、それに類似したパスワードを禁止する
  3. 以前のパスワードの大文字と小文字の割り当てを変えただけのものを禁止する
  4. 新しいパスワードに英字の大文字、英字以外の記号、または数字を含めることをユーザに要求する

「/etc/pam.d/passwd」の“password”スタックを以下のように編集して上の機能を利用するpasswdの補足

password  required pam_cracklib.so retry=3 minlen=6 dcredit=-2 ucredit=-1 ocredit=-1 lcredit=0

pam_nologin.so:
 /etc/nologin ファイルがあれば一般ユーザーはログインできない

pam_securetty.so:
 /etc/securetty に記述されている端末のみ、rootログインが許可される

pam_ldap.so:
 PAMからLDAPを利用する

pam_deny.so:
 認証に対して常に失敗を返す

pam_wheel.so:
 suコマンドによるroot権限のアクセスをwheelグループに所属するユーザーに制限する

pam_limits.so:
 /etc/security/limits.confでのシステムリソースの制限を適用する

pam_listfile.so:
 外部ファイルのリストをアクセス制御に利用する

pam_access.so:
 /etc/security/access.conf の中に事前定義されたルールに基づいて、ログイン名とドメイン名を使ってログ・デーモン・スタイルのログイン・アクセス制御を行う

#
# User "root" should be allowed to get access via cron .. tty5 tty6.
#+ : root : cron crond :0 tty1 tty2 tty3 tty4 tty5 tty6
#
# User "root" should be allowed to get access from hosts with ip addresses.
#+ : root : 192.168.200.1 192.168.200.4 192.168.200.9
#+ : root : 127.0.0.1
#
# User "root" should get access from network 192.168.201.
# This term will be evaluated by string matching.
# comment: It might be better to use network/netmask instead.
#          The same is 192.168.201.0/24 or 192.168.201.0/255.255.255.0
#+ : root : 192.168.201.
#
# User "root" should be able to have access from domain.
# Uses string matching also.
#+ : root : .foo.bar.org
#
# User "root" should be denied to get access from all other sources.
#- : root : ALL
#
# User "foo" and members of netgroup "nis_group" should be
# allowed to get access from all sources.
# This will only work if netgroup service is available.
#+ : @nis_group foo : ALL

設定内容例

デフォルトの設定:other

 デフォルトの設定については、”other“という名の特別なサービスが存在し、特定の設定ファイルを持たないアプリケーションには、そのルールが自動的に適用される。

 cat other
#%PAM-1.0
auth     required       pam_deny.so
account  required       pam_deny.so
password required       pam_deny.so
session  required       pam_deny.so

 この設定で、pam_deny.so の代わりにpam_unix.so を使えば、標準の認証方法が適用される。またpam_permit.so を使うとすべての要求が許される。

su

/etc/pam.d/su を見るとauth(認証)は”wheel”グループのユーザであることが必要となっている

 cat /etc/pam.d/su
#%PAM-1.0
auth            sufficient      pam_rootok.so
# 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
auth            include         system-auth
account         sufficient      pam_succeed_if.so uid = 0 use_uid quiet
account         include         system-auth
password        include         system-auth
session         include         system-auth
session         optional        pam_xauth.so

/etc/group を編集し
グループwheel にtestuser01を加えてから、su コマンドを実行した場合と
グループwheel に加えていないtestuser02でsu コマンドを実行した場合の実行例

[testuser01@centserv ~]$ su
パスワード:
[root@centserv ~]#

[testuser02@centserv ~]$ su
パスワード:
su: パスワードが違います
passwdの補足
 passwd testuser
ユーザー testuser のパスワードを変更。
新しいパスワード:
よくないパスワード: 短かすぎます
よくないパスワード: 簡単すぎます
新しいパスワードを再入力してください:
パスワードが一致しません。
新しいパスワード:
よくないパスワード: 単純/系統的すぎます
よくないパスワード: 簡単すぎます
/etc/pam.d/ 内のファイル
 ls /etc/pam.d/
authconfig           gdm                passwd            runuser-l          sudo
authconfig-gtk       gdm-autologin      password-auth     setup              sudo-i
authconfig-tui       gdm-fingerprint    password-auth-ac  smartcard-auth     system-auth
chfn                 gdm-password       polkit-1          smartcard-auth-ac  system-auth-ac
chsh                 gnome-screensaver  poweroff          smtp               system-config-authentication
config-util          halt               ppp               smtp.postfix       system-config-date
crond                ksu                reboot            ssh-keycat         system-config-keyboard
cups                 login              remote            sshd               system-config-users
fingerprint-auth     newrole            run_init          su                 xserver
fingerprint-auth-ac  other              runuser           su-l
参考

徹底攻略LPI問題集Level2[Ver 4.0]対応 (2014/04/11) インプレスジャパン
http://sourceforge.jp/magazine/08/10/16/0127258
http://www.geocities.jp/gronlijus/skill/linux/redhat-su-restrinction.html
http://www.atmarkit.co.jp/ait/articles/0108/18/news003_3.html

admax_area



関連記事

記事はありませんでした

admax_area



Message

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA


日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)

admax_area



PAGE TOP ↑