Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
知っているようで知らないPAMのお話
株式会社サーバーワークス
法人営業課 久保智夫
自己紹介
• 法人営業課(@大阪オフィス)の器用貧乏
• セールス〜PM〜一部構築も
• まだ試用期間中
• そして今日が本社最後の勤務日
• 職歴
• 主にISPでSI/NI事業の技術職・PMなど ←社会人人生の半分以上
• 後は省略(書きき...
配属の経緯
本題
今日のテーマ
認証その1: PAM編
認証ってなんだろう
• 単語自体は毎日何度も耳にしますよね
• パスワード認証、生体認証、Kerberos認
証、LDAP認証、認証VLAN、ISMS認証、
第三者認証・・・・
• 意味は何となくわかるけど、厳密に定義
せよと言われると結構悩む...
先生に聞いてみた
トドのつまりこういうことのようです。
もう少し掘り下げると
• ITサービスの世界では、何らかの資源やサービス、シス
テムにアクセスする際に、アクセスしようとする者が本
人であるか(=正当性)を確認するプロセス
“は○たいら”っぽい髪型をした誰か
本物の“は○たいら”
-リソース
...
今日は、自分でもあまり得意ではない認証のうち、UNIX
環境でメジャーな存在であるPAMについてお話しします。
UNIX上での認証の用途の例
• Squid や apache での BASIC 認証
• Dovecot での IMAP ユーザ認証
• SSH でのログイン認証
• UNIX パスワード認証
• などなど他にも
• 上記は全て、システムを利...
独自認証乱立の弊害
• UNIX上で様々なアプリケーションがそれぞれ独自の認証
機能・認証用DBを持つと効率が悪い
squid apache dovecot
❌ ❌
各DB同士の互換性は無い
認証
機能 独自
DB
認証
機能
認証
機能独自
...
認証機能統合の利便性
• 認証処理を一箇所にまとめ、認証機能を API 化して各ア
プリケーションが利用することで、
• “アプリケーションには認証機能を実装せず
API を利用するだけで認証を行える”
• というメリットが生まれる。
squi...
PAMとは
• Pluggable Authentication Module
• 認証処理を実行するプログラム群
• 外部から利用するためのAPI群
• 下位レベルにある認証スキームを入れ替えることで、様々な認証
バックエンドを利用できる(プ...
モジュールインタフェースの種類
• PAMは大きく分けて以下4つのモジュールインタフェース(処理と読み替えて支障無
い)から構成される。これらのスタックを1行ずつ実行していくことで認証〜アカウン
ティング〜セッションオープン/クローズという一連...
[モジュールインタフェース] [制御フラグ] [モジュールパス] [モジュール引数]
PAM設定ファイルの書式
※モジュール引数は無いこともある
制御フラグ
• 制御フラグには以下のような種類がある(もっとややこしい表記方
法もあるが、割愛)
フラグ 意味
required このフラグが立ったモジュールが成功しないと認証が失敗。ただ
し次のモジュールがある場合は続けてそちらを参照する。
...
PAM設定ファイルの中身
02: 外部ファイル(system-auth)を読み込んで認証処理を行う
※system-auth自体は環境変数セット、/etc/passwd & /etc/shadowを基に認証を行う
03: 外部ファイル(syst...
いくつかモジュール紹介
• pam_unix.so
• 従来通りのUNIXパスワード認証(/etc/passwd & /etc/shadow)
• pam_ldap.so
• LDAPサーバを認証バックエンドに使うためのモジュール
• pam_...
まとめ:PAMを使うメリット
• アプリケーション側で認証処理を実装せず、PAMに丸投
げすることができる
• 認証バックエンドを置き替えたいときは、PAMのモ
ジュールを入れ替えればアプリケーションに意識されず
に置き換えることができる
• ...
最後に
• 明日から関西に帰ります。本社の皆さんお世話になりま
した&これからもお世話になります
• 関西ってとにかく食べ物が美味しくて海山近くて観光名
所多くて最高なので、みんな転勤&移住してくればいい
と思うのです
• 最近Twitter始...
ご静聴ありがとうございました
Upcoming SlideShare
Loading in …5
×

知っているようで知らないPAMのお話

AWSに関するお問い合わせ:https://www.serverworks.co.jp/contact/
サーバーワークスエンジニアブログ:http://blog.serverworks.co.jp/tech/


LT大会第2戦

  • Login to see the comments

知っているようで知らないPAMのお話

  1. 1. 知っているようで知らないPAMのお話 株式会社サーバーワークス 法人営業課 久保智夫
  2. 2. 自己紹介 • 法人営業課(@大阪オフィス)の器用貧乏 • セールス〜PM〜一部構築も • まだ試用期間中 • そして今日が本社最後の勤務日 • 職歴 • 主にISPでSI/NI事業の技術職・PMなど ←社会人人生の半分以上 • 後は省略(書ききれないので) • 自称サーバーワークスのレイヤー低い(OSI的に)系 • 好物
  3. 3. 配属の経緯
  4. 4. 本題
  5. 5. 今日のテーマ 認証その1: PAM編
  6. 6. 認証ってなんだろう • 単語自体は毎日何度も耳にしますよね • パスワード認証、生体認証、Kerberos認 証、LDAP認証、認証VLAN、ISMS認証、 第三者認証・・・・ • 意味は何となくわかるけど、厳密に定義 せよと言われると結構悩む • そもそも何だ??
  7. 7. 先生に聞いてみた トドのつまりこういうことのようです。
  8. 8. もう少し掘り下げると • ITサービスの世界では、何らかの資源やサービス、シス テムにアクセスする際に、アクセスしようとする者が本 人であるか(=正当性)を確認するプロセス “は○たいら”っぽい髪型をした誰か 本物の“は○たいら” -リソース -情報 -サービス -システム …etc 本人であるかを確認 ❌ ⭕️
  9. 9. 今日は、自分でもあまり得意ではない認証のうち、UNIX 環境でメジャーな存在であるPAMについてお話しします。
  10. 10. UNIX上での認証の用途の例 • Squid や apache での BASIC 認証 • Dovecot での IMAP ユーザ認証 • SSH でのログイン認証 • UNIX パスワード認証 • などなど他にも • 上記は全て、システムを利用する人の正当性を確認するもの
  11. 11. 独自認証乱立の弊害 • UNIX上で様々なアプリケーションがそれぞれ独自の認証 機能・認証用DBを持つと効率が悪い squid apache dovecot ❌ ❌ 各DB同士の互換性は無い 認証 機能 独自 DB 認証 機能 認証 機能独自 DB 独自 DB
  12. 12. 認証機能統合の利便性 • 認証処理を一箇所にまとめ、認証機能を API 化して各ア プリケーションが利用することで、 • “アプリケーションには認証機能を実装せず API を利用するだけで認証を行える” • というメリットが生まれる。 squid apache dovecot 独自 DB 独自 DB 独自 DB❌ ❌❌ DB 認証API
  13. 13. PAMとは • Pluggable Authentication Module • 認証処理を実行するプログラム群 • 外部から利用するためのAPI群 • 下位レベルにある認証スキームを入れ替えることで、様々な認証 バックエンドを利用できる(プログラムでは意識不要) • UNIXやLinuxの各種ディストリビューションで古くから実装 プログラムA プログラムB プログラムC PAMライブラリ 設定ファイル (/etc/pam.d) 下位レベルの認証スキーム
  14. 14. モジュールインタフェースの種類 • PAMは大きく分けて以下4つのモジュールインタフェース(処理と読み替えて支障無 い)から構成される。これらのスタックを1行ずつ実行していくことで認証〜アカウン ティング〜セッションオープン/クローズという一連の流れを管理している。 • 主に認証方法などを管理するモジュール 認証モジュール(auth) • アカウントの有効期限切れやパスワードポリシーなどに関連する処 理を管理するモジュール アカウント管理モジュール(account) • パスワードの変更や更新などを管理するモジュール パスワード管理モジュール(password) • 利用者が認証後に使用するセッションを管理するモジュール セッション管理モジュール(session)
  15. 15. [モジュールインタフェース] [制御フラグ] [モジュールパス] [モジュール引数] PAM設定ファイルの書式 ※モジュール引数は無いこともある
  16. 16. 制御フラグ • 制御フラグには以下のような種類がある(もっとややこしい表記方 法もあるが、割愛) フラグ 意味 required このフラグが立ったモジュールが成功しないと認証が失敗。ただ し次のモジュールがある場合は続けてそちらを参照する。 requisite このフラグが立ったモジュールが成功しないと認証が失敗。以降 のモジュールが存在しても参照されずにエラーとなる。先に requiredで失敗していた場合、requiredエラーとして扱われる。 sufficient このフラグが立ったモジュールが成功し、かつ先のモジュールが 全て成功していた場合、以降のモジュールが存在しても参照され ずに認証され、次のインタフェースに進む。 optional 他に参照するモジュールがない場合、このフラグが立ったモ ジューが成功すると認証される。 include 引数で指定したファイルを読み込み、記述に従って処理する。 substack 引数で指定したファイルを読み込、記述に従って処理する。 Includeと違い、認証の成否がファイル内で完結する
  17. 17. PAM設定ファイルの中身 02: 外部ファイル(system-auth)を読み込んで認証処理を行う ※system-auth自体は環境変数セット、/etc/passwd & /etc/shadowを基に認証を行う 03: 外部ファイル(system-auth)を読み込んでアカウント確認を行う ※system-authではpasswd & shadowでのアカウント有効性確認を行う 04: 外部ファイル(system-auth)を読み込んでパスワードの確認を行う ※system-authではpam_cracklibによるパスワードポリシ確認、/etc/shadowの書き換え を行 う。 05: (su実行元プロセスの)セッションキーリングが存在する場合、revokeされる 06: /etc/security/limits.confや/etc/security/limits.d/*で定義された内容に基づいてリソー スの制限を行う #%PAM-1.0 auth include system-auth account include system-auth password include system-auth session optional pam_keyinit.so revoke session required pam_limits.so 01: 02: 03: 04: 05: 06: 例)Amazon Linux(3.14.48-33.39.amzn1.x86_64)の/etc/pam.d/sudo
  18. 18. いくつかモジュール紹介 • pam_unix.so • 従来通りのUNIXパスワード認証(/etc/passwd & /etc/shadow) • pam_ldap.so • LDAPサーバを認証バックエンドに使うためのモジュール • pam_google_autheticator • Google Authenticatorを利用した二要素認証を実現するモジュール
  19. 19. まとめ:PAMを使うメリット • アプリケーション側で認証処理を実装せず、PAMに丸投 げすることができる • 認証バックエンドを置き替えたいときは、PAMのモ ジュールを入れ替えればアプリケーションに意識されず に置き換えることができる • スタックを組めば、認証・パスワードチェック・アカウ ントチェック・リソース割り当てを自由に制御すること ができる
  20. 20. 最後に • 明日から関西に帰ります。本社の皆さんお世話になりま した&これからもお世話になります • 関西ってとにかく食べ物が美味しくて海山近くて観光名 所多くて最高なので、みんな転勤&移住してくればいい と思うのです • 最近Twitter始めましたが正直よくわかってない • @bokucurry
  21. 21. ご静聴ありがとうございました

×