Samba の Windows ドメイン 連 携 のすべて 日 本 Sambaユーザ 会 たかはしもとのぶ( 髙 橋 基 信 ) monyo@samba.gr.jp
Windows ドメイン 連 携 で 実 現 できること 要 は Windowsドメインに 参 加 できること Sambaサーバ 上 のユーザ 認 証 をWindowsドメインに 委 任 できる WindowsドメインのユーザやグループをSambaサー バ 上 で 使 える(Winbind 機 構 ) Samba 以 外 のプロダクトのログイン 認 証 にも 利 用 できる $ id 'W2K8AD1 samba01' 指 定 したユーザのuidとgidを 参 照 uid=10001(w2k8ad1 samba01) gid=10000(w2k8ad1 domain users) groups=10000(w2k8ad1 domain users) 基 本 的 には これ 以 上 でも 以 下 でもありません 2
ユーザ 認 証 をSambaサーバで 実 施 ユーザ 名 :user1 パスワード:passA(MS 暗 号 化 ) file1に アクセス Windows クライアント Sambaユーザ ユーザとして の 認 証 user1として 認 証 Linuxユーザ ユーザと 対 応 付 け( 通 常 同 じ 名 前 の ユーザと 対 応 ) UID1000でアクセス リソースへの へのアクセス user1:passa(ms 暗 号 化 ) user2:passb(ms 暗 号 化 ) /etc/smbpasswdファイル user1:pass1( 暗 号 化 ):1000 user2:pass2( 暗 号 化 ):1001 /etc/passwdファイル 認 証 情 報 は 使 わない パーミッションのチェック -rw-r--r user1 grp1 file1 -rw-r--r user2 grp2 file2 4 Sambaサーバ 3
ユーザ 認 証 をWindowsドメインで 実 施 ユーザ 名 :user1 パスワード:passA(MS 暗 号 化 ) file1に アクセス Windows クライアント user1:passa(ms 暗 号 化 ) user2:passb(ms 暗 号 化 ) 認 証 要 求 認 証 Sambaユーザ ユーザとして の 認 証 user1として 認 証 Linuxユーザ ユーザと 対 応 付 け( 通 常 同 じ 名 前 の ユーザと 対 応 ) UID1000でアクセス 対 応 付 けのために リソースへの へのアクセス /etc/passwdファイルは 依 然 として 必 要 パーミッションのチェック /etc/smbpasswd ファイル 不 要 user1:pass1( 暗 号 化 ):1000 user2:pass2( 暗 号 化 ):1001 /etc/passwdファイル 認 証 情 報 は 使 わない -rw-r--r user1 grp1 file1 -rw-r--r user2 grp2 file2 1 ドメイン コントローラ Sambaサーバ 4
Windowsドメインへの 参 加 機 能 Windowsとほぼ 同 等 の 機 能 を 実 装 Kerberosを 用 いたADへの 参 加 をサポート (NTドメインに 対 する 参 加 もサポート) NetBIOS 不 要 &DNS 必 須 IPv6 環 境 でもOK 任 意 のOUにコンピュータアカウントを 作 成 可 能 DNSの 動 的 更 新 もサポート net ads dns registerコマンド セキュリティ 機 能 のサポート セキュアチャネルの 暗 号 化 LDAP 署 名 client schannel / client ldap sasl wrapping コンピュータアカウントのパスワード 変 更 間 隔 の 制 御 machine password timeout 5
Sambaの 設 定 概 要 securityパラメータを 使 う security = domain Windows NTドメイン( 古 い!)に 対 する 参 加 方 法 Sambaドメインに 参 加 する 場 合 以 外 は 非 推 奨 必 要 な 設 定 NetBIOS 名 の 名 前 解 決 (ドメイン 名 <1B>など) smb.confの 設 定 変 更 security = ads Active Directoryドメインに 対 する 参 加 方 法 基 本 的 にはこちらを 使 うこと SambaとWindowsサーバの 組 み 合 わせにより 若 干 設 定 が 異 なる 場 合 も 6
ADSの 設 定 手 順 (1) security = adsで 必 要 な 設 定 DNSサーバをADのDCに 設 定 参 加 先 ドメインのSRVレコードが 解 決 できることを 確 認 $ host -t SRV _ldap._tcp.pdc._msdcs.w2k8ad1.local. _ldap._tcp.pdc._msdcs.w2k8ad1.local SRV 0 100 389 w2k8srv1.w2k8ad1.local DCとの 時 刻 同 期 (±5 分 以 内 ) ntpやnet time setコマンドを 用 いるのが 一 般 的 Sambaサーバの 停 止 smb.confの 設 定 変 更 realm ドメイン 名 のFQDNを 大 文 字 で workgroup ドメイン 名 の NetBIOS 名 /etc/krb5.confの 設 定 変 更 (Kerberos 認 証 ) [global] workgroup = W2K8AD1 realm = W2K8AD1.LOCAL security = ads ldap ssl = no (Samba 3.3.0のみ) 7
ADSの 設 定 手 順 (2) security = adsで 必 要 な 設 定 ( 続 ) /etc/krb5.confの 設 定 変 更 (Kerberos 認 証 ) [libdefaults] (default_realm = W2K8AD1.LOCAL) (default_tkt_enctypes = RC4-HMAC DES-CBC-CRC DES-CBC-MD5) [realms] W2K8AD1.LOCAL = { kdc = w2k8srv1.w2k8ad1.local } カッコ 内 の 設 定 は 場 合 によって 必 要 kdc 行 の 指 定 はIPアドレスでも 可 [domain_realm].w2k8ad1.local = W2K8AD1.LOCAL w2k8ad1.local = W2K8AD1.LOCAL Active Directoryドメインへの 参 加 # net ads join -U Administrator Administrator's password: パスワードを 入 力 Using short domain name -- W2K8AD1 Joined 'SAMBA33A' to realm 'w2k8ad1.local' No DNS domain のエラーは とりあえず 無 視 してよい No DNS domain configured for samba33a. Unable to perform DNS Update. DNS update failed! 8
ADSの 設 定 手 順 : 注 意 点 ありがちなトラブル 時 刻 が 同 期 されていない 時 刻 同 期 [2010/01/13 11:29:06, 0] libsmb/cliconnect.c:cli_session_setup_spnego(859) Kinit failed: Clock skew too great Failed to join domain: Time difference at domain controller 自 身 のFQDNの 名 前 解 決 失 敗 hostsなどで 名 前 解 決 Using short domain name -- W2K8AD1 Failed to set serviceprincipalnames. Please ensure that the DNS domain of this server matches the AD domain, Or rejoin with using Domain Admin credentials. 192.168.135.188 centos54.w2k8ad1.local centos54 Kerberos 関 連 とりあえずdefault_tkt_enctypesを 設 定 [2009/03/08 18:52:46, 0] libsmb/cliconnect.c:cli_session_setup_spnego(785) Kinit failed: Cannot resolve network address for KDC in requested realm Failed to join domain! [libdefaults] default_tkt_enctypes = RC4-HMAC DES-CBC-CRC DES-CBC-MD5 9
Winbind 機 構 ユーザ 認 証 だけでなく ユーザやグループの 情 報 もWindowsドメインから 取 得 する 機 能 ユーザ 認 証 を 委 任 してもユーザ 情 報 はSambaサーバで 独 自 に 持 たないといけないのは 不 便 設 定 smb.conf NSSの 設 定 /etc/nsswitch.confファイルの 修 正 nss_winbindモジュールのインストール PAMの 設 定 (Samba 以 外 の 認 証 も 行 う 場 合 ) pam_winbindモジュールのインストール 10
Winbind 機 構 なし(Windowsドメインで 認 証 ) ユーザ 名 :user1 パスワード:passA(MS 暗 号 化 ) file1に アクセス Windows クライアント 認 証 要 求 認 証 Sambaユーザ ユーザとして の 認 証 user1として 認 証 Linuxユーザ ユーザと 対 応 付 け( 通 常 同 じ 名 前 の ユーザと 対 応 ) UID1000でアクセス /etc/smbpasswd ファイル 不 要 user1:pass1( 暗 号 化 ):1000 user2:pass2( 暗 号 化 ):1001 /etc/passwdファイル user1:passa(ms 暗 号 化 ) user2:passb(ms 暗 号 化 ) 対 応 付 けのために リソースへの へのアクセス /etc/passwdファイルは 依 然 として 必 要 パーミッションのチェック -rw-r--r user1 grp1 file1 -rw-r--r user2 grp2 file2 ドメイン コントローラ Sambaサーバ 11
Winbind 機 構 あり ユーザ 名 :user1 パスワード:passA(MS 暗 号 化 ) file1に アクセス Windows クライアント 認 証 要 求 認 証 Sambaユーザ ユーザとして の 認 証 user1として 認 証 Linuxユーザ ユーザと 対 応 付 け( 通 常 同 じ 名 前 の ユーザと 対 応 ) /etc/smbpasswd ファイル 不 要 Winbind user1:1000 user2:1001 UID1000でアクセス user1:passa(ms 暗 号 化 ) user2:passb(ms 暗 号 化 ) ユーザ 情 報 連 リソースへの 携 へのアクセス パーミッションのチェック UNIXユーザ 情 報 を 自 動 生 成 -rw-r--r user1 grp1 file1 -rw-r--r user2 grp2 file2 (Idmap 機 構 ) 4 ドメイン コントローラ Sambaサーバ 12
自 動 生 成 されるユーザ グループ 名 の 設 定 UNIX 流 儀 に 近 い 名 前 に 変 更 できる $ getent passwd 'W2K8AD1 samba01' W2K8AD1 samba01:*:10001:10000::/home/w2k8ad1/samba01:/bin/false デフォルトは Domain Name Username が 入 るので 扱 いが 若 干 面 倒 カスタマイズ 例 DomainName_Username を _ に 変 更 domain_name username すべて 小 文 字 & 空 白 を _ に 変 更 Username ユーザ 名 のみに 変 更 グループ 名 もこのカスタマイズの 影 響 を 受 ける Winbind user1:1000 user2:1001 UNIXユーザ 情 報 を 自 動 生 成 (Idmap 機 構 ) 1 13
自 動 生 成 されるユーザ 情 報 の 設 定 ホームディレクトリ,シェルもカスタマイズ 可 $ getent passwd 'W2K8AD1 samba01' W2K8AD1 samba01:*:10001:10000:: 10001:10000 /home/w2k8ad1/samba01:/bin/false Winbind user1:1000 user2:1001 デフォルトは /home/domainname/username /bin/false UNIXユーザ 情 報 を 自 動 生 成 (Idmap 機 構 ) 1 変 更 の 方 式 全 ユーザ 一 律 で 変 更 template shell / template homedir パラメータを 使 用 ユーザごとに 変 更 Active DirectoryのUNIX 属 性 にある ログインシェル ホームディレクトリ 値 を 参 照 させる ログインシェルとホームディレクトリの 情 報 を 参 照 14
ユーザ グループ 名 指 定 方 法 の 注 意 smb.confでの 設 定 方 法 DOMAIN User 形 式 で 指 定 すること [share] valid users = + Domain Users +monyo [share] valid users = + W2K8AD1 Domain Users +W2K8AD1 monyo ドメイン 名 を 指 定 しない 場 合 は UNIX 上 のグループ 名 を 指 定 した とみなされる 2 15
自 動 生 成 されるグループのメンバ 情 報 Winbind 環 境 では/etc/groupを 参 照 しない $ getent group 'W2K8AD1 Domain Users' W2K8AD1 Domain Users:x:10017: W2K8AD1 ldap01,w2k8ad1 ldap02, 非 Winbind 環 境 では/etc/groupファイルを 参 照 Winbind 環 境 Windows 上 のマッピング 元 グループの 設 定 UNIX 側 のグループ 情 報 はGID 以 外 使 われない グローバルグループのネスティングにも 対 応 Domain Users マッピング domusers 4 ドメイン コントローラ グループの メンバ 情 報 Active Directory # net groupmap add グループの メンバ 情 報 /etc/group ファイル Samba サーバ 16
ローカルグループのサポート Winbind 環 境 では Windowsと 同 様 のローカル グループもサポートされる Sambaサーバ 上 のユーザに 加 え ドメインのグロー バルグループやユーザもメンバに 追 加 できる こちらも/etc/groupの 情 報 は 参 照 されない メンバの 追 加 削 除 はWindowsから 行 うか 専 用 のコマ ンド(net sam / net groupmap) 経 由 Samba サーバ ローカルグループ ローカルユーザ ドメインユーザ ドメイングループ アクセス 権 付 与 Active Directory Winbind 機 構 17
Idmap 機 構 自 動 生 成 されるユーザにマップされるUIDや GIDを 生 成 し その 情 報 を 保 持 するWinbindの 一 機 構 UNIXユーザ 情 SAMBA W2K8AD1 ドメインのDC W2K8AD1 user1の 情 報 報 を 自 動 生 成 (Idmap 機 構 ) Winbind Idmap 機 構 UID 生 成 1000 W2K8AD1 user1:1000 UIDは1000 です サーバ # id W2K8AD1 user1 uid=1000(w2k8ad1 use r1) 8 Idmap 情 報 を 格 納 W2K8AD1 user1ユーザの UIDを 教 えてください 18
Idmapバックエンド Idmap 情 報 の 生 成 保 持 の 方 法 は 選 択 可 能 tdbもしくはridがお 勧 め 名 称 ID 生 成 格 納 場 所 一 元 管 理 概 要 tdb プールから 払 い 出 し TDB ファイル 各 サーバごと もっとも 古 い 機 構 で IDは 未 使 用 ID 領 域 から 順 に 生 成 される ldap プールから 払 い 出 し LDAP ディレクトリ 可 能 TDBと 同 時 期 から 存 在 する ID 格 納 場 所 を LDAPにすることで 複 数 サーバ 間 で 生 成 し たIDの 一 元 管 理 可 能 な 点 が 特 徴 ad / (adex) UNIX 属 性 AD 可 能 Active DirectoryのUNIX 属 性 に 設 定 された UID 情 報 を 用 いる LDAPサーバを 立 てるこ となく IDの 一 元 管 理 が 可 能 rid / autorid 計 算 式 (なし) 可 能 Active Directoryの 各 ユーザ グループに 付 与 されているRID 値 から 自 動 生 成 された 値 を 用 いる IDの 管 理 自 体 が 不 要 nss /etc/passwdファイル 各 サーバごと /etc/passwdのuid 情 報 をそのまま 用 いる LDAPで 認 証 統 一 している 場 合 などに 便 利 19
Idmapバックエンド Idmap 情 報 の 生 成 保 持 の 方 法 は 選 択 可 能 tdbもしくはridがお 勧 め tdbバックエンド Samba サーバ ドメイン コントローラ Domain user1の UID 生 成 1000 IDプール tdbバックエンド 15 ユーザ 情 報 同 期 されない Domain user1の UID 生 成 1020 Samba サーバ IDプール tdbバックエンド 20
Idmapバックエンド Idmap 情 報 の 生 成 保 持 の 方 法 は 選 択 可 能 tdbもしくはridがお 勧 め ldapバックエンド 同 期 されている Samba サーバ 参 照 IDプール LDAP サーバ ドメイン コントローラ ユーザ 情 報 参 照 Samba サーバ ldapバックエンド LDAPの 管 理 が 面 倒 15 21
Idmapバックエンド Idmap 情 報 の 生 成 保 持 の 方 法 は 選 択 可 能 tdbもしくはridがお 勧 め ad/ridバックエンド ドメイン コントローラ 個 別 管 理 したくない UNIX 属 性 adバックエンド ユーザ 情 報 ridバックエンド 参 照 算 出 参 照 算 出 Samba サーバ Samba サーバ 15 22
Idmap 機 構 の 設 定 バージョンによって 設 定 方 法 が 異 なる Samba 3.0.24 以 前 全 ドメイン 一 律 設 定 比 較 的 簡 単 Samba 3.0.25~3.2.X ドメインごとにIdmap 機 構 を 設 定 可 能 複 雑 複 数 Idmap 機 構 間 で 払 い 出 すIDの 重 複 を 防 ぐ 機 構 (alloc backend 機 構 )が 導 入 かなり 複 雑 Samba 3.3.0~3.5.X 3.0.24 以 前 以 降 両 者 の 長 所 を 組 み 合 わせ 3.0.24 以 前 の 方 法 はデ フォルト 値 として 再 定 義 3.0.25 以 降 の 方 法 でドメインごとにも 設 定 可 能 Samba 3.6.0 以 降 alloc backend 機 構 が 隠 蔽 (Samba 内 部 で 暗 黙 的 に 機 能 する 形 に) 3.0.24 以 前 の 設 定 方 法 は 混 乱 を 避 けるため 非 推 奨 に 別 途 デフォルト 値 を 設 定 する 構 文 が 追 加 23
PAMによる 認 証 のサポート pam_winbindにより 各 プロダクトを 認 証 SSHでのログイン 時 の 認 証 をADのパスワードで 行 うなど nss_winbind(sambaの 動 作 にも 必 要 )と 組 み 合 わせて 用 いる Sambaサーバ 認 証 機 能 提 供 (PAM 経 由 ) ドメイン コントローラ 認 証 要 求 / 認 証 Winbind pam_winbind ssh ftp telnet ユーザ グループ 情 報 ユーザ 情 報 連 携 1000:monyo 1001:damedame nss_winbind Linux(UNIX) Samba 認 証 情 報 提 供 ( 独 自 ) 2 ユーザ 情 報 提 供 24