windowsServerで作ったActiveDirectoryにLinuxを加えてみる。
参照先Configuring sssd to authenticate with a Windows 2008 Domain Server
っと言ってもほぼsamba4/MemberServer/sssd-keytabと同じ内容なのだが、、、、
現状、こんな感じで、ここではLinuxクライアント(c3)をwindows2012R2ADドメインに参加させ、メンバーサーバにしてみる。

名前IPFQDN備考
ad192.168.0.33ad.chaperone.jp
ad.cerius2.local
windows2012R2によるADサーバ
c3192.168.0.25c3.chaperone.jp
c3.cerius2.local
linuxマシン

Linuxマシン構築

新規にメンバーサーバになるLinuxマシンを用意します。CentOS6
ホスト名は前述のとおりc3で、FQDNはc3.cerius2.localとします。その他の要素は下記のようにします。

[root@c3 ~]# cat /etc/hosts
127.0.0.1   localhost
192.168.0.25 c3.cerius2.local c3
192.168.0.33 ad.cerius2.local ad
[root@c3 ~]#
[root@c3 ~]# cat /etc/resolv.conf
search cerius2.local
nameserver 192.168.0.33
[root@c3 ~]#
[root@c3 ~]# cat /etc/sysconfig/network
NETWORKING=yes
HOSTNAME=c3.cerius2.local
GATEWAY=192.168.0.1
[root@c3 ~]#
[root@c3 ~]# ping ad.cerius2.local
PING ad.cerius2.local (192.168.0.33) 56(84) bytes of data.
64 bytes from ad.cerius2.local (192.168.0.33): icmp_seq=1 ttl=128 time=1.01 ms
64 bytes from ad.cerius2.local (192.168.0.33): icmp_seq=2 ttl=128 time=1.12 ms
^C

パッケージインストール

まず必要なパッケージをインストールします。

[root@c3 ~]# yum install sssd ntp samba4-common krb5-workstation
[root@c3 ~]# cat <<_EOF_> /etc/ntp.conf
> driftfile /var/lib/ntp/drift
> server 192.168.0.3
> _EOF_
[root@c3 ~]# cat /etc/ntp.conf
driftfile /var/lib/ntp/drift
server 192.168.0.3
[root@c3 ~]# echo 192.168.0.3 > /etc/ntp/step-tickers
[root@c3 ~]# cat /etc/ntp/step-tickers
192.168.0.3
[root@c3 ~]#
[root@c3 ~]# chkconfig ntpd on; chkconfig ntpdate on
 
[root@c3 ~]# reboot

面倒なので一度再起動

windows active directoryへ参加

/etc/krb5.confと/etc/samba/smb.confを下記のように修正します。

[root@c3 ~]# vi /etc/krb5.conf
[libdefaults]
 default_realm = CERIUS2.LOCAL
 dns_lookup_realm = false
 dns_lookup_kdc = false
[realms]
 CERIUS2.LOCAL = {
  kdc = ad.cerius2.local
  admin_server = ad.cerius2.local
 }
[domain_realm]
 .cerius2.local = CERIUS2.LOCAL
 cerius2.local = CERIUS2.LOCAL
[root@c3 ~]# 
[root@c3 ~]# vi /etc/samba/smb.conf
[global]
  workgroup = CERIUS2
  security = ADS
  realm = CERIUS2.LOCAL
  encrypt passwords = yes
  password server = 192.168.0.33
  log file = /var/log/samba/%m.log
  kerberos method = secrets and keytab

その後に、netコマンドを使ってLinuxマシンをwindowsADに参加させます。
そもそもsambaデーモンはインストールされていないが、sambaを稼働する必要はありません
/etc/samba/smb.confの設定はnetコマンド向きと思ってください

[root@c3 ~]# net ads join -U Administrator
Enter Administrator's password:
Using short domain name -- CERIUS2
Joined 'C3' to realm 'cerius2.local'
[root@c3 ~]#

もしうまくいかない場合は、デーバックモードで試してみます。上記コマンドに-d 3とか入れれば見れます。
こちらでは当初うまくいかず、net ads join -U Administrator -S AD -d 3にて調べたら、Linuxマシンがadマシンの名前解決がうまくいかなかったのが原因だった。そのため、ADのcomputersには記載されたがdnsには登録されずいた。/etc/resolv.confを調整したら解決ができた。
っで、windowsADドメインに参加できて、同時/etc/krb5.keytabにkeytabファイルが作られます。このkeytabファイルの中身はklistを使えば下記のように見える。

[root@c3 ~]# klist -e -k /etc/krb5.keytab
Keytab name: FILE:/etc/krb5.keytab
KVNO Principal
---- --------------------------------------------------------------------------
   2 host/c3.cerius2.local@CERIUS2.LOCAL (des-cbc-crc)
   2 host/c3.cerius2.local@CERIUS2.LOCAL (des-cbc-md5)
   2 host/c3.cerius2.local@CERIUS2.LOCAL (aes128-cts-hmac-sha1-96)
   2 host/c3.cerius2.local@CERIUS2.LOCAL (aes256-cts-hmac-sha1-96)
   2 host/c3.cerius2.local@CERIUS2.LOCAL (arcfour-hmac)
   2 host/c3@CERIUS2.LOCAL (des-cbc-crc)
   2 host/c3@CERIUS2.LOCAL (des-cbc-md5)
   2 host/c3@CERIUS2.LOCAL (aes128-cts-hmac-sha1-96)
   2 host/c3@CERIUS2.LOCAL (aes256-cts-hmac-sha1-96)
   2 host/c3@CERIUS2.LOCAL (arcfour-hmac)
   2 C3$@CERIUS2.LOCAL (des-cbc-crc)
   2 C3$@CERIUS2.LOCAL (des-cbc-md5)
   2 C3$@CERIUS2.LOCAL (aes128-cts-hmac-sha1-96)
   2 C3$@CERIUS2.LOCAL (aes256-cts-hmac-sha1-96)
   2 C3$@CERIUS2.LOCAL (arcfour-hmac)
[root@c3 ~]#

もしkeytabに追加のサービスプリンシパルが必要なら下記のようにして加える。例はnfsのサービスプリンシパル。

[root@c3 ~]# net ads join createupn="nfs/c3.cerius2.local@CERIUS2.LOCAL" -U Administrator

次に、netコマンドでwindowsADドメインことろーらから情報を拾ってみる。

[root@c3 ~]# net ads info
LDAP server: 192.168.0.33
LDAP server name: ad.cerius2.local
Realm: CERIUS2.LOCAL
Bind Path: dc=CERIUS2,dc=LOCAL
LDAP port: 389
Server time: 日, 13  4月 2014 15:30:40 JST
KDC server: 192.168.0.33
Server time offset: 0
[root@c3 ~]#
[root@c3 ~]# net ads group -U administrator
Enter administrator's password:
WinRMRemoteWMIUsers__
Administrators
Users
Guests
(中略)
DnsUpdateProxy
fate
[root@c3 ~]#
[root@c3 ~]# net ads user -U administrator
Enter administrator's password:
Administrator
Guest
krbtgt
illya
[root@c3 ~]#

windowsADドメインコントローラで定義したグループとユーザが確認できた。

sssdの設定

使用する予定のsssdのバージョンは

[root@c3 ~]# sssd --version
1.9.2
[root@c3 ~]#

である。最新版ではないOS提供の物。っで、設定は

[root@c3 ~]# vi /etc/sssd/sssd.conf
[sssd]
services = nss, pam
config_file_version = 2
domains = cerius2.local
[nss]
[pam]
[domain/cerius2.local]
ad_hostname = ad.cerius2.local
ad_server =   ad.cerius2.local
ad_domain =      cerius2.local
ldap_schema = rfc2307bis
id_provider = ldap
access_provider = simple
enumerate = true
auth_provider =   krb5
chpass_provider = krb5
ldap_sasl_mech = gssapi
ldap_sasl_authid =  C3$@CERIUS2.LOCAL               # /etc/krb5.keytabに従い大文字で
krb5_realm =            CERIUS2.LOCAL
krb5_server =        ad.cerius2.local
krb5_kpasswd =       ad.cerius2.local
ldap_krb5_keytab = /etc/krb5.keytab
ldap_krb5_init_creds = true
 
ldap_referrals = false
ldap_uri = ldap://ad.cerius2.local
ldap_search_base = dc=cerius2,dc=local
 
dyndns_update=false
ldap_id_mapping=false
ldap_user_object_class = user
ldap_user_name = samAccountName
ldap_user_uid_number = uidNumber
ldap_user_gid_number = gidNumber
ldap_user_home_directory = unixHomeDirectory
ldap_user_shell = loginShell
ldap_group_object_class = group
ldap_group_name = cn
ldap_group_member = member
[root@c3 ~]#

設定ファイルのパーミッションを変更して、authconfigで認証としてsssdを参照させ、起動させる

[root@c3 ~]# chmod 600 /etc/sssd/sssd.conf
[root@c3 ~]# env LANG=C authconfig --enablesssd --enablesssdauth --update
[root@c3 ~]# /etc/init.d/sssd start
[root@c3 ~]# chkconfig sssd on

もし不具合があったら、まずsssd.confを修正後、sssdに取り込まれたキャッシュを排除してからsssdを再起動させます。

[root@c3 ~]# service sssd stop; rm -f /var/lib/sss/db/*; service sssd start

結果

ぅーむ、失敗。
どうもsssdでは「(&(objectclass=user)(samAccountName=*)(uidNumber=*)(gidNumber=*))」に引っかかるエントリーをユーザとして認識している。具体的にはGSSAPI経由で

[root@c3 ~]# kinit  administrator@CERIUS2.LOCAL
[root@c3 ~]# ldapsearch -H ldap://ad.cerius2.local/ -Y GSSAPI -N -b 'dc=CERIUS2,dc=LOCAL' \
'(&(objectclass=user)(samAccountName=*)(uidNumber=*)(gidNumber=*))'
 
[root@c3 ~]#

として引っかかるのが大事。groupではそれは

[root@c3 ~]# ldapsearch -H ldap://ad.cerius2.local/ -Y GSSAPI -N -b 'dc=CERIUS2,dc=LOCAL' \
'(&(objectclass=group)(cn=*)(&(gidNumber=*)(!(gidNumber=0))))'

となる。
LdapAdminで調整できるから別にいいのだが、、、下記のように手動で変更を再度加えた。
2014y04m13d_184532721.png
すると、

[root@c3 ~]# getent passwd|grep illya
illya:*:2001:3001:Illyasviel von. Einzbern:/home/cerius2/illya:/bin/bash
[root@c3 ~]#

こんな感じでエントリーが見えた。

ログイン

実際にログインしてみる。ホームディレクトリは先にどこかのNFSサーバをマウントして構わない。ただ、、autofsを前提にするとどうやって作ったらいいか迷う。。なので今は静的なNFSマウントか、メンバーサーバそのものにホームディレクトリがあるとする。
初めは何もホームディレクトリがないので、

[root@c3 ~]# LANG=C authconfig --enablemkhomedir --update
sssd を停止中:                                             [  OK  ]
[root@c3 ~]# service sssd stop; rm -f /var/lib/sss/db/*; service sssd start
sssd を起動中:                                             [  OK  ]
[root@c3 ~]#

なぜかauthconfigに変更を加えるとsssdが停止してしまう。。。
っでログイン。

[foo@c ~]$ ssh -l illya c3
illya@c3's password:
Creating directory '/home/cerius2/illya'.
[illya@c3 ~]$
[illya@c3 ~]$ ls -la
合計 20
drwxr-xr-x 2 illya fate 4096  4月 13 18:52 2014 .
drwxr-xr-x 3 root  root 4096  4月 13 18:52 2014 ..
-rw-r--r-- 1 illya fate   18  4月 13 18:52 2014 .bash_logout
-rw-r--r-- 1 illya fate  176  4月 13 18:52 2014 .bash_profile
-rw-r--r-- 1 illya fate  124  4月 13 18:52 2014 .bashrc
[illya@c3 ~]$

とログインに成功。パスワードはADで定義したものがそのまま使えた。


トップ   編集 添付 複製 名前変更     ヘルプ   最終更新のRSS
Last-modified: 2014-04-13 (日) 18:56:12 (1340d)