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で定義したものがそのまま使えた。