0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

AlmaLinuxにOpenLDAPクライアントをインストールした

Last updated at Posted at 2024-01-02

はじめに

ラズパイで389-ds環境を作った。

今回は、クライアント側を作っていく。
クライアント側のサーバは、AlmaLinux9.2

各種インストール

まずはパッケージインストール。

# dnf -y install openldap-clients sssd sssd-ldap oddjob-mkhomedir sssd-tools

インストールパッケージの確認

# dnf list --installed | grep -e openldap -e sssd
openldap.x86_64                          2.6.3-1.el9                  @baseos   
openldap-clients.x86_64                  2.6.3-1.el9                  @baseos   
openldap-compat.x86_64                   2.6.3-1.el9                  @baseos   
sssd.x86_64                              2.9.1-4.el9_3.1.alma.1       @baseos   
sssd-ad.x86_64                           2.9.1-4.el9_3.1.alma.1       @baseos   
sssd-client.x86_64                       2.9.1-4.el9_3.1.alma.1       @baseos   
sssd-common.x86_64                       2.9.1-4.el9_3.1.alma.1       @baseos   
sssd-common-pac.x86_64                   2.9.1-4.el9_3.1.alma.1       @baseos   
sssd-ipa.x86_64                          2.9.1-4.el9_3.1.alma.1       @baseos   
sssd-kcm.x86_64                          2.9.1-4.el9_3.1.alma.1       @baseos   
sssd-krb5.x86_64                         2.9.1-4.el9_3.1.alma.1       @baseos   
sssd-krb5-common.x86_64                  2.9.1-4.el9_3.1.alma.1       @baseos   
sssd-ldap.x86_64                         2.9.1-4.el9_3.1.alma.1       @baseos   
sssd-proxy.x86_64                        2.9.1-4.el9_3.1.alma.1       @baseos 

LDAP(Lightweight Directory Access Protocol)

ディレクトリサービスへ接続するためのプロトコル。
LDAPサーバー用のソフトウェアと、クライアント向けのパッケージがある。
今回使っているのはクライアント向けの方。

LDAP設定

初期設定ファイルはバックアップを取っておく。

# cp -p /etc/openldap/ldap.conf /etc/openldap/ldap.conf.org

編集する。

# vi /etc/openldap/ldap.conf

編集後の差分比較。

# diff /etc/openldap/ldap.conf.org /etc/openldap/ldap.conf
8,9c8,9
< #BASE dc=example,dc=com
< #URI  ldap://ldap.example.com ldap://ldap-master.example.com:666
---
> BASE  ou=people,dc=example,dc=com
> URI   ldap://192.168.0.254/
13c13
< #DEREF                never
---
> DEREF         always
28a29
> TLS_REQCERT = never

DEREF

エイリアスの実名参照をどのように行うかを指定。

設定 説明
never 名参照しない。(デフォルト)
searching 検索で実名参照する。
finding 検索のためのベースオブジェクトを 探すときのみ実名参照する。
always 常に実名参照する。

TLS_REQCERT

TLS セッション開設時にサーバ認証をどうするかを指定。

設定 説明
never サーバ証明書を要求しないし、チェックもしない。
allow 証明書を要求するが、なければ正常に進む。証明書があって不正あっても無視して進める。
try 証明書を要求するが、なければ正常に進む。証明書があって不正があればセッションを終了する。
demand hard

接続テスト

# ldapsearch -H ldap://192.168.0.254 -x -w password -D cn=Manager -b ou=people,dc=example,dc=com -LLL
dn: dc=example,dc=com
objectClass: top
objectClass: organizationalunit
ou: people

dn: uid=app-user,ou=people,dc=example,dc=com
uid: app-user
cn: app-user
objectClass: account
objectClass: posixAccount
objectClass: top
loginShell: /bin/bash
uidNumber: 1000
gidNumber: 1000
homeDirectory: /home/app-user
userPassword:: e1BCS0RGMl9TSEEyNTZ9QUFBSUFQVjBNd002K1BESXIrTFpHdkdGaTc3cXN2NzN
 YbWczVE5FSG10YjFYUzA0T1JuL2EyMjZaVjVnVmNWM3psODlIVEdGQ1o4NlV3NERPQ1NtMGdjb3dS
 WnJRSGJWS1VQNGZHQVNmSngrYUdNS05GWXJvY3dEQkFCcTExdUw2ZVlheC9pRm8ydXBZNXp5ZzdlU
 jBpL2dqNlQvMUI5cGlpQ1piamxRRnlmM0lORTJPRnNqaGorWTEzTnQxVXZLTER3UDRLeS8vZzdOUn
 prYnRkTXE0R0lmWXUzT2k1V3JBd2g2a0VwQml5ZEtOcXVZODYyb2E0YlkvOUxsUGhWWTVSeExJTmF
 uV3VrdGl5K1A5K1JNdklOSjFHdE0vbkdrTWJYc2IvMlFxRWpvZzlUZmVwUHY1blkwTFBDUHpvVHFx
 REh4MExYTW5FeDh3UmwveWpjYisrUVV1aFBxZ0s1SzZNSlJsYys1SXpPUGxJWDBRckowL21uYVBTQ
 jFzbFNKZytQbGd2MGtUSThya0c1VzdQSGdqeHg4RXYzVlJiRHRibXVzdzFvVzU0TEZPKzNU

dn: cn=app-group,ou=people,dc=example,dc=com
objectClass: posixGroup
objectClass: top
cn: app-group
gidNumber: 1000

SSSD(System Security Services Daemon)

  • リモートディレクトリと認証メカニズムにアクセスするシステム・サービス。
  • ユーザー認証、アカウント管理、名前解決、ポリシー管理などのセキュリティ機能を提供する。
  • SSSDクライアントがリモートプロバイダーに接続して、ID・認証情報を取得、キャッシュを行う。ローカルシステムのユーザーはキャッシュされたアカウント情報を使用して認証を行う。オフラインでも使える。(キャッシュ有効の場合)
  • SSSDはローカルでユーザーアカウントを作成しない。ユーザーが初回ログインしたときに、クライアントはリモートプロバイダーに接続する。なので、ユーザーは最低でも1度はログインしていないといけない。
  • SSSDクライアントは、LDAP、IdM(Identity Manager)、AD(ActiveDirectory)、Kerberosレルムなどの外部IDおよび認証プロバイダーに接続ができる。

(参考)IdM(Identity Manager)

RHELに付属するID管理ソフトウェアで、LDAPおよびKerberosによる認証を行う。
WindowsでいうところのActiveDirectoryのようなもの。
アップストリームプロジェクトは、FreeIPA。

(参考)nslcd,nscd

一昔前は、LDAP接続を行うnslcd(Name Service LDAP Connection Daemon)と、キャッシュを行うnscd(Name Service Cache Daemon)を使っていたようだが、SSSDへの移行が推奨されているようである。

設定ファイル編集

IDおよび認証プロバイダーは、SSSD設定ファイル/etc/sssd/sssd.confで設定する。

# vi /etc/sssd/sssd.conf
/etc/sssd/sssd.conf
[domain/default]
id_provider = ldap
auth_provider = ldap
autofs_provider = ldap
chpass_provider = ldap
cache_credentials = True
ldap_uri = ldap://192.168.0.254/
ldap_id_use_start_tls = True
ldap_tls_cacertdir = /etc/openldap/certs
ldap_tls_reqcert = never
ldap_search_base = ou=people,dc=example,dc=com
ldap_search_timeout = 3
ldap_network_timeout = 3
ldap_deref = always
enumerate = True

[sssd]
services = nss, pam, autofs
domains = default

[nss]
homedir_substring = /home
設定 内容
id_provider 使用するデータバックエンドを指定
auth_provider 認証プロバイダーを指定(デフォルト値はid_providerの値)
cache_credentials キャッシュにユーザー認証情報を保存するかどうか(デフォルトはFalse)
chpass_provider パスワード変更要求をどのデータベースで処理するのかを指定
ldap_id_use_start_tls SSL/TLS通信を行うかどうか
ldap_tls_cacert 使用するルートCA証明書ファイルを指定
ldap_tls_cacertdir 使用するルートCA証明書ファイルが格納されたディレクトリを指定したいときは、ldap_tls_cacert の代わりにこちらを使用
ldap_tls_reqcert 証明書をどのように検証するか
neverは要求もチェックもしない
enumerate getent passwd(ユーザーやグループの一覧を表示するコマンド)に対応させる
services 使用するサービスを指定
domains SSSDではユーザ情報を保持するデータベースのことをdomainと呼ぶ
複数定義可能

(参考)
今回は、IDプロバイダーの設定をする。

  • IDプロバイダー(ユーザー情報を提供)
    [domain/name of the domain]セクションのid_providorオプションを使用して設定。

  • 認証プロバイダー(認証要求を処理)
    [domain/name of the domain]セクションのauth_providerオプションを使用して設定。

  • アクセス制御プロバイダー(認可要求を処理)
    [domain/name of the domain]セクションのaccess_providerオプションを使用して設定。

  • プロキシープロバイダー
    SSSDと、SSSDが使用できないリソースとの間で中間リレーとして機能。

パーミッション変更しておく。

# chmod 600 /etc/sssd/sssd.conf
# chown root:root /etc/sssd/sssd.conf

SSSD有効化

一昔前は、authconfigとやらで設定していたようだが、今は非推奨になっているらしい。
その代わり、authselectを使って設定する。

# authselect select sssd with-mkhomedir
バックアップは /var/lib/authselect/backups/2024-01-01-10-14-15.1x1fd2 に保存されました
プロファイル "sssd" が設定されました。
以下の nsswitch マップはプロファイルで上書きされます:
- passwd
- group
- netgroup
- automount
- services

Make sure that SSSD service is configured and enabled. See SSSD documentation for more information.
 
- with-mkhomedir is selected, make sure pam_oddjob_mkhomedir module
  is present and oddjobd service is enabled and active
  - systemctl enable --now oddjobd.service

oddjobデーモン起動&自動起動設定

oddjobは、LDAP認証したユーザのホームディレクトリを自動生成するサービス。

# systemctl start oddjobd
# systemctl enable oddjobd

SSSD起動

起動もしくは再起動させる。

# systemctl srart sssd
# systemctl resrart sssd

LDAPサーバーとの接続確認

sssctlは、sssd-toolsに含まれる。
Online statusがOnlineなら正常。

# sssctl domain-status default
Online status: Online

Active servers:
LDAP: not connected

Discovered LDAP servers:
- 192.168.0.254

うまく起動しなかったらログ読んで調べるといいと思う。

# less /var/log/sssd/sssd_default.log

idコマンドでユーザーを引けるかどうか確認

idコマンドでユーザーを引けるかどうか確認する。
匿名バインドを無効化してるとうまく引けない気がする。

# id demo_user
uid=99998(demo_user) gid=99998 groups=99998
# getent passwd | grep demo_user
demo_user:*:99998:99998:Demo User:/var/empty:/bin/false

参考にしたサイト

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?