Active DirectoryとLinuxの認証を統合しよう

第5回 SambaのWinbind機構による認証統合[1]

この記事を読むのに必要な時間:およそ 5 分

SambaはLinuxをWindowsサーバとして機能させるオープンソースのプロダクトです。Sambaを用いることで,LinuxマシンをWindowsマシンと同様の機構でADに参加させ,メンバサーバとして稼働させることが可能となります。さらにWinbind機構を導入することで,ADの認証情報をSambaやPAM/NSS(ネームサービススイッチ機能)経由で動作する一般のプログラムから利用することが可能となります。これにより認証の統合が実現します。

図1 Winbind機構による認証統合

図1 Winbind機構による認証統合

この方法では,AD側に追加コンポーネントのインストールやLinuxを意識した設定などを行う必要がありません。以下,Red Hat Enterprise Linux(以下RHEL)のクローンとしてユーザが多いCentOS 5.3を中心に,Winbind機構のインストールと基本的な設定について,まずはSamba単体の認証統合を実現する手順を紹介します。

なお,インストール作業の大半はGUIでは行えませんので,以下コマンドラインでの作業方法を中心に説明します。

Sambaのインストール

通常のLinuxディストリビューションであれば,SambaやWinbind機構はパッケージ化されているはずです。Sambaを動作させる上では,最低限「samba」パッケージおよびその依存パッケージをインストールする必要があります。

可能な限り,インターネットから最新版のパッケージを入手,インストールすることをお勧めします。CentOS5.3の場合は以下のコマンドを実行することにより,Samba 3.0.33ベースの3.0.33-3.7.el5といったバージョンがインストールされます。

# yum install samba

また,CentOS 5.3のデフォルトではファイアウォールが有効になっているため,このままではCentOS 5.3上のSambaに別マシンからアクセスすることができません。

system-config-securitylevel-tuiコマンドやGUIを用いて,Sambaサービスへのアクセスを許可する設定を行っておいてください。

図2 system-config-securitylevel-tuiの画面

図2 system-config-securitylevel-tuiの画面

以下,centos52というホスト名のCentOS 5.3で構築したSambaサーバを,IPアドレスが192.168.135.111,w2k8srv1.w2k8ad1.localというFQDN名のWindows Server 2008で構築したW2K8AD1.LOCALというADドメインに参加させる場合を例に,設定を行っていきます。

ADへの参加

インストールが完了したら,引き続きSambaをADに参加させるための設定を行います。以下順を追って説明します。

【1】AD参加の事前設定

ADに参加するためには,DNSサーバとして通常ADのDCを指定する必要があります。DHCPでIPアドレスやDNSサーバの設定を取得している場合は,DHCPサーバ側でDNSサーバの設定を変更する必要があります。各マシンで静的に設定している場合は,/etc/resolv.confを修正します。

リスト1 /etc/resolv.confの設定

search w2k8ad1.local
nameserver 192.168.135.111

また,自身のホスト名の名前解決ができない場合は,後述するドメイン参加の際にDNSの動的更新に失敗します。これ自体は致命的な問題ではありませんが,可能な限りDNSもしくは/etc/hostsファイルで名前解決の設定を行っておくことをお薦めします。

さらに,ADの認証方式であるKerberos認証が機能する上では,DCとの時刻のずれが常時5分以内である必要があります。そのため,DCと常時時刻同期を行うように設定しておきましょう。NTPを用いてNTPサーバでもあるDCと時刻同期するのが一般的ですが,Sambaの一部であるnetコマンドを用いることも可能です。

# net time set -I w2k8srv1.w2k8ad1.local
                  ~~~~~~~~~~~~~~~~~~~~~~ ←DCのIPアドレスやホスト名を指定
Wed May 20 02:07:00 JST 2009

【2】Sambaデーモンの停止

ADへの参加を行う際にはSambaサーバが停止している必要があります。現在起動していたら,以下のようにして一度停止させましょう。

# /etc/init.d/smb stop
Shutting down SMB services:                                [  OK  ]
Shutting down NMB services:                                [  OK  ]
※1)
歴史的な理由によりRHEL系ディストリビューションにおけるSambaのサービス名はsmbです。間違えないように注意してください。

【3】smb.confの設定

smb.confにリスト2のような設定を行います。最低限必要なのはworkgroup/realm/securityの3つのパラメータの設定です。なおrealmパラメータの値は,必ず大文字で指定します。

リスト2 smb.confの設定

[global]
  ...
# ----------------------- Network Related Options -------------------------
#
  workgroup = W2K8AD1  (ADのNetBIOS名)
  ...

# ----------------------- Domain Members Options ------------------------
  ...

        security = ads
        passdb backend = tdbsam
        realm = W2K8AD1.LOCAL (ADのFQDN(大文字))

;       password server = <NT-Server-Name>

        idmap uid = 10000-11000
        idmap gid = 10000-11000
  ...

[tmp] ←動作確認用の共有
  path = /tmp
  writeable = yes 

workgroupパラメータには,デフォルトでMYGROUPという値が設定されていますので変更してください。それ以外の2つのパラメータは「Domain Members Options」という行の近辺にコメントされて記載されていますので,コメントを外します。また,動作確認用として,ホームディレクトリを自動共有するhomesセクション以外で,何かファイル共有を作成しておいてください。よくわからない場合は,リスト2の最後にある[tmp]以下の3行をsmb.confファイルの末尾に加えてください。

著者プロフィール

たかはし もとのぶ

大学卒業後,株式会社NTTデータに入社。数年間UNIX上でのプログラム開発に携わった後,クライアント/サーバシステム全般に関する技術支援業務を行う部署に異動し現在に至る。「日本Sambaユーザ会」スタッフなどを務め,オープンソース,Microsoft双方のコミュニティ活動に関わるとともに,各種雑誌への記事執筆や,講演などの活動を行っている。2005年6月には「Sambaのすべて」を出版。

コメント

コメントの記入