LoginSignup
18
20

More than 5 years have passed since last update.

CentOS6.6のユーザ認証をADで行う

Last updated at Posted at 2015-08-10

参考1:http://muramasa64.fprog.org/diary/?date=20140909
参考2:https://fedorahosted.org/sssd/
参考3:man 5 sssd.conf, man 5 sssd-ldap, man 5 sssd-ad

設定情報

ドメイン : saka.example.com
ドメインコントローラ(Windows Server 2012 R2) : dc1.saka.example.com, 10.211.55.13
クライアント(CentOS6.6) : cl1.saka.example.com, 10.211.55.9

これから設定するファイル(手動で編集するもののみ)

  • /etc/resolv.conf
  • /etc/hosts
  • /etc/krb5.conf
  • /etc/samba/smb.conf
  • /etc/sssd/sssd.conf

sssdについては, 1.9.2 or Above の設定なので, 注意.

設定準備

/etc/resolv.confの設定

基本的にはADとDNSはセットになっていて, ADと一緒に動いているDNSにはSRVレコードが自動で登録されている.
これがないと, kerberosやldapの検索ができないので, Linux側の/etc/resolv.confにドメコンをDNSとして登録しておく.

nameserver 10.211.55.13

/etc/hostsの編集

マシンをADに登録する際, 自身の名前解決ができる必要があるので, /etc/hostsに登録しておく.
hostname --fqdnができるようにしておく.

必要パッケージのインストール

パッケージ名 内容
sssd sssdのベースパッケージ
sssd-ad sssdとadをよしなに繋いでくれるパッケージ
krb5-workstation krb5のクライアント
samba-client マシンをADに登録するときにnetコマンドを使う
oddjob-mkhomedir ホームディレクトリを自動で作成するためのモジュール
# yum install sssd sssd-ad krb5-workstation samba-client oddjob-mkhomedir

===================================================================================================================================================================================================================
 Package                                                      Arch                                          Version                                              Repository                                   Size
===================================================================================================================================================================================================================
Updating:
 krb5-workstation                                             x86_64                                        1.10.3-42.el6                                        base                                        811 k
 samba-client                                                 x86_64                                        3.6.23-20.el6                                        base                                         11 M
 sssd                                                         x86_64                                        1.12.4-47.el6                                        base                                        100 k
 sssd-ad                                                      x86_64                                        1.12.4-47.el6                                        base                                        202 k
Updating for dependencies:
 krb5-libs                                                    x86_64                                        1.10.3-42.el6                                        base                                        768 k
 libipa_hbac                                                  x86_64                                        1.12.4-47.el6                                        base                                        104 k
 libsss_idmap                                                 x86_64                                        1.12.4-47.el6                                        base                                        109 k
 python-sssdconfig                                            noarch                                        1.12.4-47.el6                                        base                                        132 k
 samba-common                                                 x86_64                                        3.6.23-20.el6                                        base                                         10 M
 samba-winbind                                                x86_64                                        3.6.23-20.el6                                        base                                        2.2 M
 samba-winbind-clients                                        x86_64                                        3.6.23-20.el6                                        base                                        2.0 M
 sssd-client                                                  x86_64                                        1.12.4-47.el6                                        base                                        151 k
 sssd-common                                                  x86_64                                        1.12.4-47.el6                                        base                                        976 k
 sssd-common-pac                                              x86_64                                        1.12.4-47.el6                                        base                                        134 k
 sssd-ipa                                                     x86_64                                        1.12.4-47.el6                                        base                                        237 k
 sssd-krb5                                                    x86_64                                        1.12.4-47.el6                                        base                                        133 k
 sssd-krb5-common                                             x86_64                                        1.12.4-47.el6                                        base                                        190 k
 sssd-ldap                                                    x86_64                                        1.12.4-47.el6                                        base                                        215 k
 sssd-proxy                                                   x86_64                                        1.12.4-47.el6                                        base                                        129 k

Transaction Summary
===================================================================================================================================================================================================================
Upgrade      19 Package(s)

Total download size: 29 M
Is this ok [y/N]:

authconfigでバックアップ作成

念のため作成する

# authconfig --savebackup=mybackup

各種設定

Kerberosの設定

DNSが設定されていることが前提.

# vim /etc/krb5.conf

[logging]
 default = FILE:/var/log/krb5libs.log
 kdc = FILE:/var/log/krb5kdc.log
 admin_server = FILE:/var/log/kadmind.log

[libdefaults]
 default_realm = SAKA.EXAMPLE.COM
 dns_lookup_realm = true
 dns_lookup_kdc = true
 ticket_lifetime = 24h
 renew_lifetime = 7d
 forwardable = true

[realms]

[domain_realm]

DNSが設定されていない場合. realmsなどの設定が必要.

# vim /etc/krb5.conf

[logging]
 default = FILE:/var/log/krb5libs.log
 kdc = FILE:/var/log/krb5kdc.log
 admin_server = FILE:/var/log/kadmind.log

[libdefaults]
 default_realm = SAKA.EXAMPLE.COM
 dns_lookup_realm = true
 dns_lookup_kdc = true
 ticket_lifetime = 24h
 renew_lifetime = 7d
 forwardable = true

[realms]
SAKA.EXAMPLE.COM= {
 kdc = dc1.saka.example.com
 admin_server = dc1.saka.example.com
}

[domain_realm]
saka.example.com = SAKA.EXAMPLE.COM
.saka.example.com = SAKA.EXAMPLE.COM

sambaの設定

マシンをADに登録するときに使う.

# vim /etc/samba/smb.conf

[global]
   workgroup = SAKA
   client signing = yes
   client use spnego = yes
   kerberos method = secrets and keytab
   log file = /var/log/samba/%m.log
   realm = SAKA.EXAMPLE.COM
   security = ads

sssdの設定

sssdもkrb5と同じように, DNS前提で設定できるが, 冗長構成の時にDC接続が不安定(というか, 落ちているDCに何度も接続にいっちゃう)ので, 直接記載する.
いろいろな項目は、man 5 sssd.conf, man 5 sssd-adを見て下さい. ここにみんな書いてあります.
サイトはsssdがDNSから見てくれる.ad-site = ...で明示的にサイトを指定することも可能.

# vim /etc/sssd/sssd.conf

[sssd]
services = nss, pam
config_file_version = 2
domains = saka.example.com

[domain/saka.example.com]
# デバッグレベルの設定
debug_level = 5

# adなので, id_providerはad
id_provider = ad

# adのホスト名を記載
# DNSをADのDNSにしておくこと
# ここを入れなくてもDNSで解決できれば基本的にはOK
ad_server = dc1.saka.example.com

# 冗長構成のとき
# ad_server = dc1.saka.example.com, dc2.saka.example.com

# sssdのキャッシュが効くようにする
# ADが落ちていてもログイン可能になる
cache_credentials = true

# idを自動でマッピングしないようにする
# 自動でマッピングしない場合、ADのエントリーのuid, gidが使用される
ldap_id_mapping = False

# adのmemberOf属性でアクセス制限をかける
# LDAPクエリで設定可能
access_provider = ad
ad_access_filter = (&(memberOf=cn=admin,ou=groups,dc=saka,dc=example,dc=com)(unixHomeDirectory=*))

[nss]

[pam]

ファイルのパーミッション設定

# chown root:root /etc/sssd/sssd.conf
# chmod 0600 /etc/sssd/sssd.conf

これで認証する側の設定は完了です.

ADにホストを登録する

kerberosチケットの発行

ADのAdministratorのパスワードを入力する. 成功すると, 何も言われない.

# kinit Administrator
Password for Administrator@SAKA.EXAMPLE.COM:

ホストの登録

hostname --fqdnができるなら, DNSの自動更新も成功する.

# hostname --fqdn
cl1.saka.example.com

# net ads join -U administrator
Enter administrator's password:
Using short domain name -- SAKA
Joined 'CL1' to dns domain 'saka.example.com'

sssdの有効化

authconfigで行う

# authconfig --enablesssd --enablesssdauth --enablelocauthorize --enablemkhomedir --update

これでsssdが起動できたらOK.
起動できなかったら,

# service sssd start

エラーになる場合は, /var/log/sssd/配下のログ もしくは /var/log/messagesを確認する.

認証テスト

ADにUNIX属性を持つsakamotoというユーザを作成済み.

sakamotoユーザは, メイングループがsaka, サブグループがadmin.
adminはsudo用. 管理者だけこのサブグループが付く.

# id sakamoto
uid=10000(sakamoto) gid=10000(saka) groups=10000(saka),10001(admin)

sudoを使えるようにする

sudoのパッケージにAD用のスキーマがあるので, それを追加しても良いが, 各属性を目grepで検索orADなのにLDIFファイルを作成して読込, をしなければならず, 結構きつい.
ということで, sudoはsudersで行う.

それでもADでsudo管理したい場合は, ここが参考になる.
【参考】ADにsudoのスキーマを追加する:http://jhrozek.livejournal.com/3860.html
linux側のAD連携sudoの設定は, ldapの場合と同じ.

# visudo

# 下記を追記
%admin ALL=(ALL) ALL

AD側で「初回パスワード変更」の設定にしていたので, パスワード変更が求められた(ユーザにはsu -でログイン).

[sakamoto@cl1 ~]$ sudo -l

We trust you have received the usual lecture from the local System
Administrator. It usually boils down to these three things:

    #1) Respect the privacy of others.
    #2) Think before you type.
    #3) With great power comes great responsibility.

[sudo] password for sakamoto:
Password expired. Change your password now.
sudo: Account or password is expired, reset your password and try again
Current Password:
New password:
Retype new password:
Matching Defaults entries for sakamoto on this host:
    !visiblepw, always_set_home, env_reset, env_keep="COLORS DISPLAY HOSTNAME HISTSIZE INPUTRC KDEDIR LS_COLORS", env_keep+="MAIL PS1 PS2 QTDIR USERNAME LANG LC_ADDRESS LC_CTYPE", env_keep+="LC_COLLATE
    LC_IDENTIFICATION LC_MEASUREMENT LC_MESSAGES", env_keep+="LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER LC_TELEPHONE", env_keep+="LC_TIME LC_ALL LANGUAGE LINGUAS _XKB_CHARSET XAUTHORITY",
    secure_path=/sbin\:/bin\:/usr/sbin\:/usr/bin

User sakamoto may run the following commands on this host:
    (ALL) ALL

パスワードも認証できたし, sudoersとの連携も確認できました.
以外と普通にユーザ認証ができます.

その他

公開鍵について

opensshはopenldap用のスキーマしか準備していないので, 自作したスキーマで拡張するしかないです.
ADを使うところで自作スキーマは使わない気がします.
ただ, $HOME/.ssh/authorized_keysでの認証は可能です.

RHEL7系から

今回はsssd-adを利用したけど, RHEL7からはrealmdというパッケージがあります.
こっちのほうが設定が簡単みたいです.

18
20
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
18
20