SSSDをActive Directory環境に統合する方法
このドキュメント (00100031) の最後に記載の 免責条項 に基づき提供されています。
環境
SUSE Linux Enterprise 12
概要
SSSD(System Security Services Daemon)をAD(Active Directory)環境に統合する方法について知りたい。
解決策
下記設定例では、以下のことを前提としています。
前提
- Windows Server (AD/DNSインストール済み)
ADサーバ名: winad.sample.com (192.168.124.80)
テスト用ユーザ: user1が存在
- LDAPクライアント
サーバ名: ldapclient.sample.com (192.168.124.123)
パッケージ: sssd-ad、krb5-client、samba-clientがインストール済み
設定例
- 認証クライアント(LDAPクライアント)
1) 設定準備
# vi /etc/hosts
...
192.168.124.123 ldapclient.sample.com ldapclient <-- ドメインあり/なしの両方を設定
192.168.124.80 winad.sample.com winad <--ドメインあり/なしの両方を設定
# hostname -f
ldapclient.sample.com <-- FQDNも表示されることを確認
# vi /etc/resolv.conf
nameserver 192.168.124.80 <-- ADサーバのIPアドレスを指定
2) Kerberosの設定
# vi /etc/krb5.conf
[libdefaults]
default_realm = SAMPLE.COM
dns_lookup_realm = true
dns_lookup_kdc = true
ticket_lifetime = 24h
renew_lifetime = 7d
forwardable = true
[realms]
SAMPLE.COM = {
kdc = winad.sample.com
admin_server = winad.sample.com
}
[logging]
kdc = FILE:/var/log/krb5/krb5kdc.log
admin_server = FILE:/var/log/krb5/kadmind.log
default = SYSLOG:NOTICE:DAEMON
3) sambaの設定
# vi /etc/samba/smb.conf
[global]
workgroup = SAMPLE
client signing = yes
client use spnego = yes
kerberos method = secrets and keytab
log file = /var/log/samba/%m.log
realm = SAMPLE.COM
security = ads
[homes]
comment = Home Directories
:
4) kerberos初期化
# kinit Administrator
Password for Administrator@SAMPLE.COM:
5) ドメインに参加
# net ads join -U Administrator
Enter Administrator's password:
Using short domain name -- SAMPLE
Joined '<hostname>' to dns domain 'sample.com'
6) sssdの設定
# vi /etc/nsswitch.conf
...
passwd: compat sss
group: compat sss
# vi /etc/sssd/sssd.conf
[sssd]
config_file_version = 2
services = nss, pam
domains = sample.com
[domain/sample.com]
override_homedir = /home/%d/%u
id_provider = ad
enumerate = true
ad_server = xxx.sample.com
ldap_id_mapping = true
cache_credentials = false
[nss]
filter_users = root
filter_groups = root
[pam]
...
7) 次のコマンドを実行
# pam-config --add --sss
# pam-config --add --mkhomedir
# systemctl stop nscd.service
# systemctl disable nscd.service
# systemctl restart sssd
# systemctl enable sssd
# getent passwd
※AD上のユーザuser1が表示されることを確認
- ログイン確認
例
1) LDAPクライアント上でsuコマンドを実行
# su - user1
2) 他サーバからログイン可能か確認
# ssh user1@ldapclient.sample.com
上記設定例では、getent passwdコマンドでユーザ情報を確認するために、/etc/sssd/sssd.confのenumerateは"true"を設定しています。 この設定の場合、ユーザアクセスに関係なく、AD上のユーザ情報が全てローカル上にキャッシュされますが、AD上のユーザデータが大量にあると、それに起因して、SSSD プロセスが CPU を占有する事例が報告されております(事例では約4500 ユーザ)。
そのため、本番環境のご利用では、enumerate = falseに設定されることをお勧めいたします。この設定により、ユーザアクセスがある場合のみローカル上にユーザ情報がキャッシュされるようになります。
免責条項
このサポート ナレッジベースは、NetIQ/Novell/SUSE顧客、および弊社製品およびそのソリューションに関心のあるパーティへ、情報やアイデアの取得およびそれらの知識を得る為の有効なツールを提供します。 本文書の商品性、および特定目的への適合性について、いかなる黙示の保証も否認し、排除します。
- ドキュメント ID:00100031
- 作成年月日:18-FEB-16
- 修正年月日:06-OCT-17
-
- SUSESUSE Linux Enterprise 12
このドキュメントはあなたの問題を解決しましたか? フィードバックを送る