windowsServerで作ったActiveDirectoryにLinuxを加えてみる。
参照先[[Configuring sssd to authenticate with a Windows 2008 Domain Server>https://fedorahosted.org/sssd/wiki/Configuring%20sssd%20to%20authenticate%20with%20a%20Windows%202008%20Domain%20Server]]
っと言ってもほぼ[[samba4/MemberServer/sssd-keytab]]と同じ内容なのだが、、、、
現状、こんな感じで、ここではLinuxクライアント(c3)をwindows2012R2ADドメインに参加させ、メンバーサーバにしてみる。
|BGCOLOR(YELLOW):名前|BGCOLOR(YELLOW):IP|BGCOLOR(YELLOW):FQDN|BGCOLOR(YELLOW):備考|
|ad|192.168.0.33|ad.chaperone.jp&br;&color(magenta){ad.cerius2.local};|windows2012R2によるADサーバ|
|c3|192.168.0.25|c3.chaperone.jp&br;&color(magenta){c3.cerius2.local};|linuxマシン|

***Linuxマシン構築 [#t93823d0]
新規にメンバーサーバになるLinuxマシンを用意します。[[OS(Linux)]]
新規にメンバーサーバになるLinuxマシンを用意します。[[CentOS6]]
ホスト名は前述のとおりc3で、FQDNはc3.cerius2.localとします。その他の要素は下記のようにします。
#code(nonumber){{
[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
}}

***パッケージインストール [#y22f1cfc]
まず必要なパッケージをインストールします。
#code(nonumber){{
[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へ参加 [#wb39050f]
/etc/krb5.confと/etc/samba/smb.confを下記のように修正します。
#code(nonumber){{
[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に参加させます。
&color(red){そもそもsambaデーモンはインストールされていないが、sambaを稼働する必要はありません};
&color(red){/etc/samba/smb.confの設定はnetコマンド向きと思ってください};
#code(nonumber){{
[root@c3 ~]# net ads join -U Administrator
Enter Administrator's password:
Using short domain name -- CERIUS2
Joined 'C3' to realm 'cerius2.local'
[root@c3 ~]#
}}
もしうまくいかない場合は、デーバックモードで試してみます。上記コマンドに&color(red){-d 3};とか入れれば見れます。
こちらでは当初うまくいかず、&color(red){net ads join -U Administrator -S AD -d 3};にて調べたら、Linuxマシンがadマシンの名前解決がうまくいかなかったのが原因だった。そのため、ADのcomputersには記載されたがdnsには登録されずいた。/etc/resolv.confを調整したら解決ができた。
っで、windowsADドメインに参加できて、''同時''に&color(green){/etc/krb5.keytab};にkeytabファイルが作られます。このkeytabファイルの中身はklistを使えば下記のように見える。
#code(nonumber){{
[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のサービスプリンシパル。
#code(nonumber){{
[root@c3 ~]# net ads join createupn="nfs/c3.cerius2.local@CERIUS2.LOCAL" -U Administrator
}}

次に、netコマンドでwindowsADドメインことろーらから情報を拾ってみる。
#code(nonumber){{
[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の設定 [#l217b30a]
使用する予定のsssdのバージョンは
#code(nonumber){{
[root@c3 ~]# sssd --version
1.9.2
[root@c3 ~]#
}}
である。最新版ではないOS提供の物。っで、設定は
#code(nonumber){{
[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を参照させ、起動させる
#code(nonumber){{
[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を再起動させます。
#code(nonumber){{
[root@c3 ~]# service sssd stop; rm -f /var/lib/sss/db/*; service sssd start
}}
***結果 [#yffc6e9c]
ぅーむ、失敗。
どうもsssdでは「&color(green){''(&(objectclass=user)(samAccountName=*)(uidNumber=*)(gidNumber=*))''};」に引っかかるエントリーをユーザとして認識している。具体的にはGSSAPI経由で
#code(nonumber){{
[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ではそれは
#code(nonumber){{
[root@c3 ~]# ldapsearch -H ldap://ad.cerius2.local/ -Y GSSAPI -N -b 'dc=CERIUS2,dc=LOCAL' \
'(&(objectclass=group)(cn=*)(&(gidNumber=*)(!(gidNumber=0))))' 
}}
となる。
LdapAdminで調整できるから別にいいのだが、、、下記のように手動で変更を再度加えた。
&ref(2014y04m13d_184532721.png,nolink);
すると、
#code(nonumber){{
[root@c3 ~]# getent passwd|grep illya
illya:*:2001:3001:Illyasviel von. Einzbern:/home/cerius2/illya:/bin/bash
[root@c3 ~]#
}}
こんな感じでエントリーが見えた。

***ログイン [#z0649e02]
実際にログインしてみる。ホームディレクトリは先にどこかのNFSサーバをマウントして構わない。ただ、、autofsを前提にするとどうやって作ったらいいか迷う。。なので今は静的なNFSマウントか、メンバーサーバそのものにホームディレクトリがあるとする。
初めは何もホームディレクトリがないので、
#code(nonumber){{
[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が停止してしまう。。。
っでログイン。
#code(nonumber){{
[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で定義したものがそのまま使えた。
1

トップ   編集 差分 履歴 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS