Home
Packages
Forums
Wiki
GitLab
Security
AUR
Download
コンテンツにスキップ
メインメニュー
メインメニュー
サイドバーに移動
非表示
案内
メインページ
目次
コミュニティに貢献
最近の出来事
おまかせ表示
特別ページ
交流
ヘルプ
貢献
最近の更新
最近の議論
新しいページ
統計
リクエスト
ArchWiki
検索
検索
表示
アカウント作成
ログイン
個人用ツール
アカウント作成
ログイン
LDAP 認証のソースを表示
ページ
議論
日本語
閲覧
ソースを閲覧
履歴を表示
ツール
ツール
サイドバーに移動
非表示
操作
閲覧
ソースを閲覧
履歴を表示
全般
リンク元
関連ページの更新状況
ページ情報
表示
サイドバーに移動
非表示
←
LDAP 認証
あなたには「このページの編集」を行う権限がありません。理由は以下の通りです:
この操作は、次のグループに属する利用者のみが実行できます:
登録利用者
。
このページのソースの閲覧やコピーができます。
[[Category:ネットワーク]] [[Category:認証]] [[en:LDAP authentication]] {{Related articles start}} {{Related|OpenLDAP}} {{Related|LDAP ホスト}} {{Related|アイデンティティ管理}} {{Related articles end}} == イントロダクションとコンセプト == このガイドでは LDAP ディレクトリから Arch Linux を認証できるように設定します。LDAP ディレクトリはローカル (同一のコンピュータにインストール) でもネットワーク (中央認証が必要なラボ環境など) でもかまいません。 ガイドは2つのパートに分かれています。最初のパートでは認証ディレクトリをホストする [[OpenLDAP]] サーバーをセットアップします。次のパートではクライアントコンピュータで認証を行うのに必要な NSS と PAM モジュールを設定します。既存の LDAP サーバーが存在して Arch の認証を設定したいだけの場合、[[#クライアントのセットアップ|2番目のパート]]までスキップしてください。 === NSS と PAM === NSS (Name Service Switch の略) は設定データベースの様々なソースを設定するシステム機構です。例えば、{{ic|/etc/passwd}} は {{ic|passwd}} データベースの {{ic|file}} タイプのソースです。 [[PAM]] (Pluggable Authentication Module の略) は様々なプラグインを使って認証スキームを拡張するために Linux (やその他の *nix) によって使われている機構です。 まとめると、NSS を設定して OpenLDAP サーバーを {{ic|passwd}} や {{ic|shadow}} などの設定データベースのソースとして使うようにして、それから設定したソースを使ってユーザーを認証するように PAM を設定することになります。 == LDAP サーバーのセットアップ == === インストール === インストールや基本的な設定については [[OpenLDAP]] の記事に書かれています。インストールが完了したら、このページに戻ってきて下さい。 === アクセス制御の設定 === LDAP サーバーから (暗号化された) パスワードに誰もアクセスできないように、そしてユーザーだけが自分のパスワードを編集できるようにするため、以下を {{ic|/etc/openldap/slapd.conf}} に追加して {{ic|slapd.service}} を再起動してください: {{hc|slapd.conf|2= access to attrs=userPassword by self write by anonymous auth by dn.base="cn=Manager,dc=example,dc=org" write by * none access to * by self write by dn.base="cn=Manager,dc=example,dc=org" write by * read }} 上記の行だけで OpenLDAP サーバーをテストすることはできますが、ACL の書き込み権限が与えられるため、uidNumber や gidNumber などのシステム属性の値をユーザーが変更できてしまいます。書き込み権限を userPassword と個人情報に関連する属性だけに留めるほうが良いでしょう。上よりもセキュアな設定は以下のようになります: {{hc|slapd.conf|2= access to attrs=userPassword,givenName,sn,photo by self write by anonymous auth by dn.base="cn=Manager,dc=example,dc=org" write by * none access to * by self read by dn.base="cn=Manager,dc=example,dc=org" write by * read }} === ベースデータで LDAP ツリーを作成 === 以下の内容で {{ic|base.ldif}} という名前の一時ファイルを作成してください。 {{note|ドメイン名の "example" や "org" は適宜置き換えてください。}} {{hc|base.ldif|<nowiki> # example.org dn: dc=example,dc=org dc: example o: Example Organization objectClass: dcObject objectClass: organization # Manager, example.org dn: cn=Manager,dc=example,dc=org cn: Manager description: LDAP administrator objectClass: organizationalRole objectClass: top roleOccupant: dc=example,dc=org # People, example.org dn: ou=People,dc=example,dc=org ou: People objectClass: top objectClass: organizationalUnit # Groups, example.org dn: ou=Group,dc=example,dc=org ou: Group objectClass: top objectClass: organizationalUnit </nowiki>}} OpenLDAP ツリーに追加: $ ldapadd -D "cn=Manager,dc=example,dc=org" -W -f base.ldif データがインポートされたことをテスト: $ ldapsearch -x -b 'dc=example,dc=org' '(objectclass=*)' === ユーザーの追加 === ユーザーを手動で追加するには、以下のような {{ic|.ldif}} ファイルを作成: {{hc|user_joe.ldif|<nowiki> dn: uid=johndoe,ou=People,dc=example,dc=org objectClass: top objectClass: person objectClass: organizationalPerson objectClass: inetOrgPerson objectClass: posixAccount objectClass: shadowAccount uid: johndoe cn: John Doe sn: Doe givenName: John title: Guinea Pig telephoneNumber: +0 000 000 0000 mobile: +0 000 000 0000 postalAddress: AddressLine1$AddressLine2$AddressLine3 userPassword: {CRYPT}xxxxxxxxxx labeledURI: https://archlinux.org/ loginShell: /bin/bash uidNumber: 9999 gidNumber: 9999 homeDirectory: /home/johndoe/ description: This is an example user </nowiki>}} {{ic|userPassword}} エントリの {{ic|xxxxxxxxxx}} は {{ic|/etc/shadow}} 内の値で置き換えるか {{ic|slappasswd}} コマンドを使って下さい。そしてユーザーを追加: $ ldapadd -D "cn=Manager,dc=example,dc=org" -W -f user_joe.ldif {{Note|PADL Software の [http://www.padl.com/OSS/MigrationTools.html Migration Tools] を使うことでローカルアカウント (とグループなど) を全て自動的に LDAP ディレクトリに移行できます。}} == クライアントのセットアップ == [[OpenLDAP]] に書かれているようにして OpenLDAP クライアントをインストールしてください。{{ic|ldapsearch}} でサーバーにクエリが送信できることを確認してください。 次に、[[公式リポジトリ]]から {{pkg|nss-pam-ldapd}} を[[インストール]]します。 === オンライン認証 === ==== NSS の設定 ==== NSS は様々なソースを設定データベースとして管理するシステムファリシティです。例えば、{{ic|/etc/passwd}} は {{ic|passwd}} データベースの {{ic|file}} タイプのソースであり、ユーザーアカウントが保存されます。 NSS のメインの設定ファイルである {{ic|/etc/nsswitch.conf}} を編集してください。システムデータベースとしてどのソースを使うのか NSS を設定します。{{ic|ldap}} ディレクティブを {{ic|passwd}}, {{ic|group}}, {{ic|shadow}} データベースに追加してください。ファイルは以下のようになります: passwd: files ldap group: files ldap shadow: files ldap {{ic|/etc/nslcd.conf}} を編集して {{ic|base}} と {{ic|uri}} 行をあなたの ldap サーバーの設定にあわせて変更してください。 systemd を使って {{ic|nslcd.service}} を起動します。 これでクライアント側で {{ic|getent passwd}} を実行すると LDAP ユーザーが確認できるはずです。 ==== PAM の設定 ==== PAM の設定は大まかに言って {{ic|pam_unix.so}} が書かれているところ全てに {{ic|pam_ldap.so}} も記述するだけです。Arch は {{pkg|pambase}} に移行しているため、編集が必要な箇所は減っています。pam の設定に関する詳細は [https://access.redhat.com/site/documentation/en-US/Red_Hat_Enterprise_Linux/6/html/Managing_Smart_Cards/PAM_Configuration_Files.html RedHat のドキュメント] によくまとまっています。[http://arthurdejong.org/nss-pam-ldapd nss-pam-ldapd] の上流のドキュメントも読むと良いでしょう。 {{Tip|システムのローカルユーザーの UID が衝突しないようにしたい場合、{{ic|pam_ldap.so}} 行の末尾に {{ic|minimum_uid=10000}} などと記述します。LDAP サーバーによって返ってくる uidNumber を確認してください。}} {{Note|Each facility (auth, session, password, account) forms a separate chain and the order matters. Sufficient lines will sometimes "short circuit" and skip the rest of the section, so the rule of thumb for ''auth'', ''password'', and ''account'' is ''sufficient'' lines before ''required'', but after required lines for the ''session'' section; ''optional'' can almost always go at the end. When adding your {{ic|pam_ldap.so}} lines, do not change the relative order of the other lines without good reason! Simply insert LDAP within the chain.}} まず {{ic|/etc/pam.d/system-auth}} を編集してください。このファイルは {{ic|pam.d}} 内の他のファイルからも大抵インクルードされているので、{{ic|/etc/pam.d/system-auth}} に変更を加えることで、ほとんどのファイルに変更を適用できます。{{pkg|pambase}} をアップデートすると {{ic|/etc/pam.d/system-auth}} は変化することがあります。 各セクションの一番上に sufficient の {{ic|pam_ldap.so}} を追加してください。ただし ''session'' セクションだけは例外で、optional にしておきます。 {{hc|/etc/pam.d/system-auth| '''auth sufficient pam_ldap.so''' auth required pam_unix.so try_first_pass nullok auth optional pam_permit.so auth required pam_env.so '''account sufficient pam_ldap.so''' account required pam_unix.so account optional pam_permit.so account required pam_time.so '''password sufficient pam_ldap.so''' password required pam_unix.so try_first_pass nullok sha512 shadow password optional pam_permit.so session required pam_limits.so session required pam_unix.so '''session optional pam_ldap.so''' session optional pam_permit.so }} 次に {{ic|/etc/pam.d/su}} と {{ic|/etc/pam.d/su-l}} を同じように編集してください。{{ic|su-l}} ファイルはユーザーが {{ic|su --login}} を実行したときに使われます。 各セクションの一番上に sufficient の {{ic|pam_ldap.so}} を追加して、''auth'' セクションの {{ic|pam_unix}} に {{ic|use_first_pass}} を追加してください。 {{hc|/etc/pam.d/su| #%PAM-1.0 '''auth sufficient pam_ldap.so''' 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 required pam_unix.so '''use_first_pass''' '''account sufficient pam_ldap.so''' account required pam_unix.so '''session sufficient pam_ldap.so''' session required pam_unix.so }} ユーザーが自分のパスワードを編集できるように、{{ic|/etc/pam.d/passwd}} を編集: {{hc|/etc/pam.d/passwd|2= #%PAM-1.0 '''password sufficient pam_ldap.so''' #password required pam_cracklib.so difok=2 minlen=8 dcredit=2 ocredit=2 retry=3 #password required pam_unix.so sha512 shadow use_authtok password required pam_unix.so sha512 shadow nullok }} ===== ログイン時にホームフォルダを作成 ===== ログイン時にホームフォルダを作成したい場合 (例: ホームフォルダを共有するのに NFS を使わない場合)、{{ic|/etc/pam.d/system-login}} を編集して {{ic|pam_mkhomedir.so}} を ''session'' セクションの "sufficient" アイテムの上に追加してください。ssh, xdm, kdm, gdm などから tty にログインしたときにホームフォルダが作成されるようになります。同じように {{ic|/etc/pam.d/su}} や {{ic|/etc/pam.d/su-l}} などのファイルも編集することで、{{ic|su}} や {{ic|su --login}} でもホームフォルダの作成を有効にできます。ssh ログインの場合はホームフォルダを作成して欲しくないときは {{ic|system-login}} などのかわりに {{ic|system-local-login}} を編集してください。 {{hc|/etc/pam.d/system-login| ...top of file not shown... session optional pam_loginuid.so session include system-auth session optional pam_motd.so motd=/etc/motd session optional pam_mail.so dir=/var/spool/mail standard quiet -session optional pam_systemd.so session required pam_env.so '''session required pam_mkhomedir.so skel=/etc/skel umask=0022''' }} {{hc|/etc/pam.d/su-l| ...top of file not shown... '''session required pam_mkhomedir.so skel=/etc/skel umask=0022''' session sufficient pam_ldap.so session required pam_unix.so }} ===== sudo の有効化 ===== LDAP ユーザーから sudo を使うようにするには、{{ic|/etc/pam.d/sudo}} を編集します。sudoers もあわせて編集する必要があります。 {{hc|/etc/pam.d/sudo| #%PAM-1.0 '''auth sufficient pam_ldap.so''' auth required pam_unix.so '''try_first_pass''' auth required pam_nologin.so }} また、{{ic|/etc/openldap/ldap.conf}} に以下を追加してください: {{hc|/etc/openldap/ldap.conf|2= sudoers_base ou=sudoers,dc=AFOLA }} === SSSD によるオンライン・オフライン認証 === SSSD はシステムデーモンです。主な機能は共通フレームワークを通してリモートのリソースを識別・認証できるようにすることで、システムのキャッシュやオフラインのサポートを提供します。PAM や NSS モジュールも含まれており、将来的には D-BUS ベースのインタフェースによって拡張ユーザー情報も含める予定です。拡張ユーザーデータだけでなくローカルユーザーを保存するデータベースとしても使えます。 {{pkg|sssd}} パッケージは[[公式リポジトリ]]からインストールできます。 ==== SSSD の設定 ==== {{ic|/etc/sssd/sssd.conf}} が存在しない場合は作成してください: {{hc|/etc/sssd/sssd.conf|2= [sssd] config_file_version = 2 services = nss, pam domains = LDAP [domain/LDAP] cache_credentials = true id_provider = ldap auth_provider = ldap ldap_uri = ldap://server1.example.org, ldap://server2.example.org ldap_search_base = dc=example,dc=org ldap_id_use_start_tls = true ldap_tls_reqcert = demand ldap_tls_cacert = /etc/openldap/certs/cacerts.pem chpass_provider = ldap ldap_chpass_uri = ldap://server1.example.org entry_cache_timeout = 600 ldap_network_timeout = 2 ldap_group_member = uniquemember }} 上記はあくまで例です。詳しくは {{ic|man sssd.conf}} を見てください。 最後に {{ic|chmod 600 /etc/sssd/sssd.conf}} でパーミッションを設定してください。そうしないと sssd は起動しません。 ==== NSCD の設定 ==== sssd のキャッシュに干渉するので {{ic|/etc/nscd.conf}} で passwd と group エントリのキャッシュを無効化します。 ==== NSS の設定 ==== 以下のように {{ic|/etc/nsswitch.conf}} を編集してください: {{hc|/etc/nsswitch.conf| # Begin /etc/nsswitch.conf passwd: files sss group: files sss shadow: files sss sudoers: files sss publickey: files hosts: files dns myhostname networks: files protocols: files services: files ethers: files rpc: files netgroup: files # End /etc/nsswitch.conf }} ==== PAM の設定 ==== まず {{ic|/etc/pam.d/system-auth}} を以下のように編集: {{hc|/etc/pam.d/system-auth|2= #%PAM-1.0 auth sufficient pam_sss.so forward_pass auth required pam_unix.so try_first_pass nullok auth optional pam_permit.so auth required pam_env.so account [default=bad success=ok user_unknown=ignore authinfo_unavail=ignore] pam_sss.so account required pam_unix.so account optional pam_permit.so account required pam_time.so password sufficient pam_sss.so use_authtok password required pam_unix.so try_first_pass nullok sha512 shadow password optional pam_permit.so session required pam_mkhomedir.so skel=/etc/skel/ umask=0077 session required pam_limits.so session required pam_unix.so session optional pam_sss.so session optional pam_permit.so }} ===== sudo の設定 ===== {{ic|/etc/pam.d/sudo}} を以下のように編集: {{hc|/etc/pam.d/sudo| #%PAM-1.0 auth sufficient pam_sss.so auth required pam_unix.so try_first_pass auth required pam_nologin.so }} ===== パスワード管理 ===== ユーザーが {{ic|passwd}} を使って自分のパスワードを変えられるように {{ic|/etc/pam.d/passwd}} を以下のように編集: {{hc|/etc/pam.d/passwd|2= #%PAM-1.0 password sufficient pam_sss.so #password required pam_cracklib.so difok=2 minlen=8 dcredit=2 ocredit=2 retry=3 #password required pam_unix.so sha512 shadow use_authtok password required pam_unix.so sha512 shadow nullok }} {{ic|systemctl start sssd}} で sssd を起動して {{ic|systemctl enable sssd}} で有効化してください。 これで {{ic|getent passwd <username>}} や {{ic|id <username>}} で ldap ユーザーの詳細情報が確認できるはずです。 ユーザーを使ってログインすると、ログイン情報がキャッシュされ、ldap サーバーがオフラインだったり利用できない状態であってもキャッシュされた情報を使ってログインすることができるようになります。 == 参照 == * [http://arthurdejong.org/nss-pam-ldapd/setup nss-pam-ldapd パケットの公式ページ] * Debian Wiki の PAM と NSS のページ: [https://wiki.debian.org/LDAP/NSS 1] [https://wiki.debian.org/LDAP/PAM 2] * [https://www.fatofthelan.com/technical/using-ldap-for-single-authentication/ Using LDAP for single authentication] * [http://www.cs.dixie.edu/ldap/ Heterogeneous Network Authentication Introduction] * [http://readlist.com/lists/suse.com/suse-linux-e/36/182642.html Discussion on suse's mailing lists about nss-pam-ldapd] * [https://docs.fedoraproject.org/en-US/Fedora/15/html/Deployment_Guide/chap-SSSD_User_Guide-Introduction.html Fedora's SSSD User Guide]
このページで使用されているテンプレート:
テンプレート:Hc
(
ソースを閲覧
)
テンプレート:Ic
(
ソースを閲覧
)
テンプレート:META Related articles start
(
ソースを閲覧
)
テンプレート:Note
(
ソースを閲覧
)
テンプレート:Pkg
(
ソースを閲覧
)
テンプレート:Related
(
ソースを閲覧
)
テンプレート:Related articles end
(
ソースを閲覧
)
テンプレート:Related articles start
(
ソースを閲覧
)
テンプレート:Tip
(
ソースを閲覧
)
LDAP 認証
に戻る。
検索
検索
LDAP 認証のソースを表示
話題を追加