Active Direcotryへのメンバーサーバ追加方法



●概要

 参考URL:Active Directoryメンバーサーバ追加(Winbind)

 Linuxサーバ(CentOS 7)をActive Directoryドメインへメンバーサーバとして参加させ、Active Directoryドメインのユーザ情報を利用できるようにします。

 ■構築例
 ※Active Directoryのドメインコントローラーは既に構築済であることが条件となります。

 ドメインコントローラーのホスト名:dc01、dc02
 ドメインコントローラーのIPアドレス:192.168.0.1、192.168.0.2
 メンバーサーバのホスト名:centos7 注)メンバーサーバのホスト名は15文字以内
 ドメイン名:bigbang
 レルム:bigbang.local

●準備

 問い合わせ先のDNSサーバをドメインコントローラに変更します。
# vi /etc/sysconfig/network-scripts/ifcfg-eth0
DNS1=192.168.0.1
DNS2=192.168.0.2
 ネットワークを再起動し、設定を反映させます。
# systemctl restart network
# /etc/rc.d/init.d/network restart
 問い合わせ先のDNSサーバを変更します。ただし、NetworkManagerにより自動的に設定される場合、設定不要です。
# vi /etc/resolv.conf
nameserver 192.168.0.1
nameserver 192.168.0.2


●ドメインへの参加

 CentOS 7をメンバーサーバとしてドメインに参加させます。
 winbindをインストールします。
# yum -y install samba-winbind samba-winbind-clients
 認証設定をします。
# authconfig-tui
 認証の設定で(※項目間の移動はTabキー、選択はSpaceキー、決定はEnterキー
 「ユーザ情報」-「Winbindを使用」を選択
 「認証」-「Winbind認証を使用」を選択
 「次」を選択します。

ad-member01.png

 Winbindの設定で
 「セキュリティモデル」-「ads」を選択
 「ドメイン」にドメイン名(例:BIGBANG)を入力
 「ドメインコントローラ」にドメインコントローラーのホスト名(例:dc01)を入力
 「ADSレルム(Realm)」にレルム(例:BIGBANG.LOCAL)を入力
 「テンプレートシェル」でシェル(例:/bin/bash)を選択
 「ドメイン参加」
 を選択します。

ad-member02.png

 設定の保存で
 「はい」を選択

ad-member03.png

 Joinの設定で
 ドメインのAdministratorのパスワードを入力します。

ad-member04.png
[/usr/bin/net join -w BIGBANG -S dc01 -U Administrator]
Enter Administrator's password:<...>

Using short domain name -- BIGBANG
Joined 'CENTOS7' to dns domain 'bigbang.local'
Winbind サービスを起動中:                                  [  OK  ]


●ドメイン参加の確認

 ドメインに参加できているかどうか確認します。
# net ads info
LDAP server: 192.168.0.1
LDAP server name: dc01.bigbang.local
Realm: BIGBANG.LOCALG
Bind Path: dc=BIGBANG,dc=LOCAL
LDAP port: 389
Server time: 月, 16  1月 2017 14:20:08 JST
KDC server: 192.168.0.1
Server time offset: 0
Last machine account password change: 月, 16  1月 2017 14:17:57 JST
 ユーザを一覧表示させます。
# wbinfo -u
BIGBANG/guest
BIGBANG/administrator
BIGBANG/krbtgt


●Winbindの設定

 Active Directoryドメイン上のユーザをLinuxユーザとして使用できるように下記を設定をします。

 ・シェルを利用できるようにする
 ・ホームディレクトリを「/home/ユーザ名」にする
 ・ユーザ名を「ドメイン名\ユーザ名」ではなく「ユーザ名」にする
 winbindの設定ファイルを編集します。
# vi /etc/samba/smb.conf
[global]
   :   :
   :
template shell = /bin/bash ← ユーザのデフォルトシェルを/bin/bashにする
template homedir = /home/%U ← ユーザのホームディレクトリを「/home/ユーザ名」にする
winbind use default domain = true ← 「ドメイン名\ユーザ名」ではなく「ユーザ名」で
winbind offline logon = false

# systemctl restart winbind

# wbinfo -u
administrator
centos01
krbtgt
guest


●ホームディレクトリ自動作成設定

 Linuxサーバ上ではユーザを作成しないためユーザのホームディレクトリが存在しません。Active Directoryドメイン上のユーザでLinuxサーバへのアクセス時に、自動的にホームディレクトリが作成されるようにします。
# authconfig --enablemkhomedir --update
# chmod 1777 /home/

--ユーザのホームディレクトリを作成する必要があるルサーバのみ(ここから)--

# vi /etc/samba/smb.conf
[homes]
        comment = Home Directories
        path = %H/samba
        browseable = no
        writable = yes
        root preexec = /usr/local/sbin/mkhomedir.sh %U

# vi /usr/local/sbin/mkhomedir.sh
#!/bin/bash

if [ ! -e /home/$1 ]; then
    mkdir /home/$1
    chmod 700 /home/$1
    shopt -s dotglob ; cp -r /etc/skel/* /home/$1 ; shopt -u dotglob
    chown -R $1:"Domain Users" /home/$1
elif [ ! -e /home/$1/samba ]; then
    mkdir /home/$1/samba
    chmod 700 /home/$1/samba
    chown $1:"Domain Users" /home/$1/samba
fi
exit 0

# chmod +x /usr/local/sbin/mkhomedir.sh
# systemctl restart smb

--ユーザのホームディレクトリを作成する必要があるルサーバのみ(ここまで)--


●Webページ認証

 Active Directoryドメイン上のユーザ名/パスワード認証によるアクセス制限を行えるようにします。ここでは、/var/www/html/secretディレクトリにアクセス制限を行うようにします。

mod_SSL導入済であること
※WebサーバがメンバーサーバしてActive Directoryドメインに参加済であること

 EPELリポジトリを導入します。
# yum -y install mod_authnz_external pwauth
# systemctl restart httpd

# vi /var/www/html/secret/.htaccess
SSLRequireSSL
AuthName "secret page"
AuthType Basic
AuthBasicProvider external
AuthExternal pwauth
require valid-user
 https://メンバーサーバ名/secret/へアクセスして、Active Directoryドメイン上のユーザ名/パスワードでページが表示されればOKです。
 表示されない場合、下記を確認してください。
  • DirectoryIndexディレクティブで指定しているファイルがsecretフォルダ内に存在しているかどうか
  • AllowOverride Allと設定されているかどうか


●パスワード変更

 Active Directoryドメイン上のユーザのパスワード変更は通常、Windows上で行います。Windowsにログオンできない場合、外部から変更出来るようにUserminを使用します。

 ※UserminサーバがメンバーサーバとしてActive Directoryドメインに参加していること
# vi /etc/usermin/miniserv.conf
#passwd_file=/etc/shadow ← 行頭に#を追加(PAM認証にする)

# vi /etc/usermin/changepass/config
passwd_cmd=file
↓
passwd_cmd= ← /etc/shadow認証を無効化(PAM認証にする)
smbpasswd=smbpasswd
↓
smbpasswd= ← smbpasswd無効化

# vi /etc/pam.d/usermin ← Usermin用PAM認証設定ファイル編集
#%PAM-1.0
auth       include      password-auth
account    include      password-auth
password   include      password-auth
session    include      password-auth
上記内容に書き換える

# systemctl restart usermin
 UserminでActive Directoryドメイン上のユーザのパスワードが変更できればOKです。