いろんなサーバー設定研究所

インフラエンジニアに役立つ各種設定やTipsを提供します Windows Server、Linux など

*

LinuxマシンをActive Directoryに参加させる簡単な方法

      2015/05/23

会社の認証基盤、何を使っていますか?毎日PCにログオンするアカウントは、どのような認証基盤上で管理をしていますか?やはり今はMicrosoft Windows が提供している「Active Directory」を採用している企業が圧倒的に多いですよね。Active Directory環境下では、こんな感じにADで作成したユーザーアカウントにより社内インフラへのアクセス/認証を一元管理する事が可能です。

さて、ここで疑問が1つ。

Linuxマシンへ接続する際に、ADのアカウントを利用したWindows認証でアクセス制御を行う事は出来ないか?例えばLinuxマシン上で提供しているファイル共有とか、自社ポータルやwikiなどのWebアクセス、その他諸々のサービスでWindows認証により許可されたADユーザーにのみアクセスを許可する、みたいな事は出来ないか?

簡単にできます!

まず今回は第1歩として、LinuxマシンをADに参加させる手順を紹介していきます。


DNSまわりの各種設定

1. ADのDNSにLinuxマシンを正引きできるよう登録する

AD環境下では、よほどの理由がない限りドメインコントローラー上でDNSサービスを動かしているかと思います。まずはDNS管理ツールからドメインに参加させるLinuxマシンをDNSに静的登録しましょう。
これは簡単。

2. Linux マシンのDNS参照先をドメインコントローラーに設定する

LinuxマシンのDNS参照先を参加するドメインのドメインコントローラーに設定します。
編集するファイルは /etc/resolv.conf です。

...
nameserver 192.168.0.1 (ドメインコントローラーのIPアドレス)
...

これも簡単。

Linux マシンにSambaをインストールして必要な設定をする

1.samba のインストール

Linuxマシンをドメイン参加させるにあたり「samba」と「winbind」の2つのサービスを動かしている必要があります。Linuxマシン上でsambaがインストールされていない場合、以下のコマンドでsambaをインストールします。

yum -y install samba

winbind は sambaにくっついてきますので、別途インストールをする必要はありません。

2.samba の設定(/etc/samba/smb.conf)

sambaをインストールしたら設定ファイルのglobalセクションを下記の通り編集します。

[global]
workgroup = ITR
password server = dc.itr.contoso.com
realm = ITR.CONTOSO.COM
security = ads
winbind offline logon = false
winbind use default domain = true
idmap config * : range = 16777216-33554431
template shell = /bin/bash
log file = /var/log/samba/log.%m
max log size = 50

2~4行目は自身のドメイン環境に合わせて書き換えてください。
また、大文字で記載した箇所は必ず大文字で記載してください。

workgroup:ドメイン名
password serveer:ドメインコントローラーのFQDN
realm:ドメインのFQDN
security = ads:ADドメインで認証をするという宣言
winbind offline logon = false:ドメインコントローラーと通信途絶時にキャッシュログオンを許可しない
winbind use default domain = true:ログオン時にドメイン名を明示的に指定しない事を許可

設定が終わったらsamba、winbindのサービスを起動します。

[root@test ~]# /etc/rc.d/init.d/smb start
SMB サービスを起動中: [ OK ]
[root@test ~]# /etc/rc.d/init.d/winbind start
Winbind サービスを起動中: [ OK ]

また、忘れずにchkconfigでsambaとwinbindが自動起動するよう設定しておきましょう。

[root@test ~]# chkconfig smb on
[root@test ~]# chkconfig winbind on

3.Kerberosクライアント設定(/etc/krb5.conf)

LinuxマシンからADへの認証はKerberos認証によって行われます。そのため、Linuxマシン上のKerberosクライアントにActive Directoryの情報を適切に記載する必要があります。

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

[libdefaults]
default_realm = ITR.CONTOSO.COM
dns_lookup_realm = false
dns_lookup_kdc = false
ticket_lifetime = 24h
renew_lifetime = 7d
forwardable = true

[realms]
ITR.CONTOSO.COM = {
kdc = dc.itr.contoso.com
}

レルムにActive Directoryのドメイン情報を記載し、kdcにドメインコントローラーのFQDNを記載します。

4. システムデータベースとNSSの設定ファイル(/etc/nsswitch.conf)

要は「どの情報(データベース)を参照して認証をするか?」を設定する項目です。今回は AD認証を基に認証されたユーザーを信頼するようにしますので、winbindにより提供された情報を信頼させます。

/etc/nsswitch.conf に以下3つの項目があります。デフォルトは files しか設定されていませんので、ここにwinbindを追加してください。

passwd: files winbind
shadow: files winbind
group: files winbind

ここまで設定が終わったら、いよいよLinuxマシンをADに参加させます。

Linux マシンをADに参加させる

さて、ここまで準備が整ったら、いよいよLinuxマシンをActive Directoryに参加させます。念のため、もう一度samba、winbindのサービスを再起動…

[root@test ~]# /etc/rc.d/init.d/smb restart
[root@test ~]# /etc/rc.d/init.d/winbind restart

SELinuxも特別な理由がない限り無効化しておいてください。その後、以下コマンドを実行します。

# kinit administrator@ITR.CONTOSO.COM
Password for administrator@ITR.CONTOSO.COM:(パスワード)
# net ads join -S dc.itr.contoso.com -U administrator
Enter administrator's password:(パスワード)
Using short domain name -- ITR
Joined 'TEST' to dns domain 'itr.contoso.com'
net_update_dns_internal: Failed to connect to our DC!(無視してよい)
DNS update failed!(無視してよい)

やっとドメイン参加ができましたので、動作確認をしていきます。

動作確認

Linuxマシンをドメインに参加させたら、以下コマンドを実行して同様の結果が返って来る事を確認します。

[root@test ~]# net ads testjoin
Join is OK
[root@test ~]# net ads info
LDAP server: 192.168.0.101
LDAP server name: dc.itr.contoso.com
Realm: ITR.CONTOSO.COM
Bind Path: dc=ITR,dc=CONTOSO,dc=COM
LDAP port: 389
Server time: 木, 30 4月 2015 22:43:56 JST
KDC server: 192.168.0.101
Server time offset: 0
[root@test ~]# wbinfo -t
checking the trust secret for domain ITR via RPC calls succeeded
[root@test ~]# wbinfo -u
administrator
guest
krbtgt

net ads testjoin:ドメイン参加ができるているか確認
net ads info:参加しているドメインの情報
wbinfo -t:ドメインコントローラーとの接続性確認
wbinfo -u:ADに存在するユーザーオブジェクトの取得

おめでとうございます!この結果が返ってくればドメイン参加は問題なくできています。

次回の記事でApach、sambaなどでどのようにAD認証を活用するのかを紹介をしていきます。

長い記事になってしまった…

 - Linux