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

第4回 LDAPによる認証統合

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

ログインとトラブルシューティング

ここまでの設定を行ったら,実際にLinuxマシンにログインできることを確認してみましょう。図4にログインを行った際の実行例を示します。

図4 実際にログインを行った際の実行例

$ telnet 192.168.135.146
Trying 192.168.135.146...
Connected to 192.168.135.146.
Escape character is '^]'.
CentOS release 5.2 (Final)
Kernel 2.6.18-92.el5 on an i686
login: nis1
Password:
Last login: Sat Apr 18 17:07:01 from localhost.localdomain
No directory /home/nis1!
Logging in with home = "/".
-bash-3.2$ id
uid=10101(nis1) gid=10001 groups=10001

ホームディレクトリが作成されていない,グループ名が解決されていないといった問題がありますが,これらはそれぞれ第3回「SUAのNIS機能による認証統合[2⁠⁠」で解説したpam_mkhomedirモジュールの設定,UNIX属性のGIDもしくはグループ名に対応するグループの作成により,解決できます。AD側でユーザが無効となっている場合や「ユーザーは次回ログオン時にパスワード変更が必要」が有効になっている場合はログインに失敗します。

また,ここまでの設定ではLinux上でパスワードの変更を行うことはできません。パスワードの設定変更を行うには,第3回で解説したSUAのパスワード同期機能を用いるか,TLSによる接続が可能なようにADおよびLinux側を構成する必要があります。

詳細については,以下の技術情報などを参照してください※2⁠。

(1)サードパーティのCAを利用する場合 How to enable LDAP over SSL with a third-party certification authority (2) ADのエンタープライズCAを利用する場合 『LDAP Super Expert』p.165「LinuxクライアントからActive Directory LDAPのパスワードを変更する方法」
※2)
筆者は検証していません。

匿名認証によるADへのアクセス

前述したように,ADのデフォルトではLDAPディレクトリへのアクセスに際しては認証が必須ですが,匿名による認証を許可することも可能です。これはWindows 2000までの設定と同一です。

Windows Server 2003以降で認証を許可する場合は図5のようにdSHeuristics属性の値を変更する必要があります。具体的な方法については「Windows Server 2003 のドメイン コントローラでは Active Directory に対する匿名の LDAP 操作が無効になっている」などを参照してください。

図5 dSHeuristics属性の変更

図5 dSHeuristics属性の変更

匿名認証を許可したら,引き続き,アクセスを許可したいオブジェクトのアクセス許可を変更します。オブジェクト毎にアクセス許可を設定するのは管理が大変なので,運用上はLDAP認証で使用するユーザをどこかのコンテナに集めてしまい,該当のコンテナに対してアクセス許可を付与してしまうのがよいでしょう。

以下,⁠ou=NIS1,dc=w2k8ad1,dc=local」配下のユーザへのアクセスを許可する場合を例に取って説明します。サーバーマネージャ(もしくはActive Directory ユーザーとコンピュータ)「拡張機能」をチェックした上で,NIS1コンテナのプロパティを開き,⁠セキュリティ」タブを選択します図6⁠。

図6

図6

ここでANONYMOUS LOGONに「読み取り」アクセス許可を付与した上で,⁠詳細設定」ボタンを押して詳細設定画面を開き,適用先を「このオブジェクトとすべての子オブジェクト」に変更します図7⁠。

図7

図7

該当コンテナの配下に位置するユーザは,ldap.confを編集して匿名認証を有効にした状態でもLinux側から参照することが可能となっているはずです※3⁠。

※3)
ユーザの作成方法によってはコンテナ内の子オブジェクトに対してアクセス許可が継承されない場合があります。この場合は適宜アクセス許可を編集して設定を行ってください。

この設定を行うことで,ldap.confで「binddn」および「bindpw」を設定する必要がなくなりセキュリティ上の問題が1つ解決されます。一方でLDAPディレクトリ全体に対する匿名アクセスが可能になるという別のセキュリティ問題が発生するという点には留意してください。

まとめ

ここまで説明したように,Active Directoryを用いてLDAP認証を行うことにより,認証の統合が可能です。mkhomedirモジュールと連携させることで,Linuxサーバでのユーザ管理の手間をかなり低減することも可能です。Windows側の設定は前2回で解説したNISによる認証とほとんど一緒ですので,そこそこ簡単だと思います。

ただし,Linux側の設定については,LDAPの知識がないと環境に応じた設定やトラブルシューティングは難しいと思います。特にPAM周りは,authconfigコマンドで対応できないような複雑な設置が必要となった場合に,適切な設定を行うのはかなり困難です。また,ここまでの設定では,Linuxサーバでパスワードを変更することができません。Linux側からパスワードの変更を可能とするには,平文のLDAPではなく,TLSによる通信を行うように構成する必要がありますが,これはかなり面倒です。さらにLDAPによる通信を行うには,パスワードを平文で設定ファイルに書き込んでおくか,匿名でのアクセスを許可する必要があり,セキュリティ的には決してお薦めできないのが実状です。これらを総合すると,LDAP認証を行うことはあまりお薦めとは言えないのが筆者の見解です。

次回はSambaによる認証統合について,まずは基本的な構成を取り上げる予定です。


Active Directoryに関する技術情報:
Microsoft TechNet Active Directory TechCenter
URL:http://technet.microsoft.com/ja-jp/activedirectory/default.aspx
Microsoft Active Directory 機能概要ページ
URL:http://www.microsoft.com/japan/ad/

著者プロフィール

たかはし もとのぶ

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