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

第4回 LDAPによる認証統合

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

Linuxサーバでのインストールと基本設定

引き続き,Linuxサーバ側の設定に移ります。

最近のLinuxディストリビューションでは,LDAP認証の機能はデフォルトでインストールされている場合がほとんどだと思います。必要なパッケージの名称を表2に示しますので,未インストールの場合はパッケージを適宜インストールしてください。

表2 LDAP認証に必要なパッケージ

ディストリビューション パッケージ
CentOS nss_ldap
Debian libpam-ldap/libnss-ldap

可能な限り,インターネットから最新版のパッケージを入手,インストールすることをお勧めします。

CentOS 5.2の場合,インストール完了後に,以下のようにauthconfigコマンドにオプションを付けて実行することで,必要なファイルが適切に変更されます。

# authconfig --enableldap --enableldapauth --ldapserver=192.168.135.111 --ldapbasedn=dc=w2k8ad1,dc=local --update

具体的には,/etc/ldap.conf,/etc/pam.d/system-auth,/etc/nsswitch.confといったファイルが更新されます。

ldap.confファイルの設定変更

引き続きLDAPの設定ファイルである/etc/ldap.confファイルを編集します。デフォルトの設定ファイルには,英語ですが多くのコメントや設定例が記載されています。このファイルをカスタマイズすることをお薦めします。

リスト1に設定例を示します。

リスト1 ldap.confの設定例

# Your LDAP server. Must be resolvable without using LDAP.
# Multiple hosts may be specified, each separated by a
# space. How long nss_ldap takes to failover depends on
# whether your LDAP client library supports configurable
# network or connect timeouts (see bind_timelimit).
host 192.168.135.111 ← LDAPサーバ(DC)のIPアドレスやホスト名

# The distinguished name of the search base.
base dc=w2k8ad1,dc=local ← 検索の際の基本となるDN。良くわからない場合は,左のように,ADのドメイン名の各パートを「dc=」で区切って設定しておけばよい。

...

# The distinguished name to bind to the server with.
# Optional: default is to bind anonymously.
binddn cn=administrator,cn=users,dc=w2k8ad1,dc=local
  ← LDAPサーバに検索を行うときに用いるユーザのDN

# The credentials to bind with.
# Optional: default is no credential.
bindpw password ← 上記DNのパスワード

...

# The search scope.
#scope sub ←設定がコメントになっているか,明示的に「scope sub」が設定されていることを確認する
#scope one
#scope base

#ssl no ←設定がコメントになっているか,明示的に「ssl no」が設定されていることを確認する

...


# Services for UNIX 3.5 mappings ← 以下はSFU 3.0/3.5を用いる場合のLinux側とAD側との属性の対応付け設定など
#nss_map_objectclass posixAccount User
#nss_map_objectclass shadowAccount User
#nss_map_attribute uid msSFU30Name
#nss_map_attribute uniqueMember msSFU30PosixMember
#nss_map_attribute userPassword msSFU30Password
#nss_map_attribute homeDirectory msSFU30HomeDirectory
#nss_map_attribute homeDirectory msSFUHomeDirectory
#nss_map_objectclass posixGroup Group
#pam_login_attribute msSFU30Name
#pam_filter objectclass=User
#pam_password ad

...

# RFC 2307 (AD) mappings ←以下はSUAを用いる場合のLinux側とAD側との属性の対応付け設定など
nss_map_objectclass posixAccount user
nss_map_objectclass shadowAccount user
nss_map_attribute uid sAMAccountName
nss_map_attribute homeDirectory unixHomeDirectory
nss_map_attribute shadowLastChange pwdLastSet
nss_map_objectclass posixGroup group
nss_map_attribute uniqueMember member
pam_login_attribute sAMAccountName
pam_filter objectclass=User
pam_password ad

「host」には,ユーザ情報を検索するDCのホスト名やIPアドレスを設定します。

「base」には,ユーザ情報を検索する際の基準となるDNを設定します。設定例ではAD全体が検索対象となりますが,たとえばLinuxマシンが認証に用いるユーザは必ず「UnixUsers」というOU配下にあるといった場合は,

base ou=UnixUsers,dc=w2k8ad1,dc=local

のように設定することで無駄な検索を省くことができます。

「binddn」および「bindpw」には,ADのLDAPディレクトリにアクセスする際に用いるDNのDN名とパスワードを設定します。先ほど作成したユーザを指定してください。前述の通りパスワードは平文で書き込む必要があります。またldap.confのパーミッションは644など,一般ユーザが読み取り可能にしておく必要がありますので,事実上ユーザのパスワードを全員に公開している状態となります。

「scope」は,デフォルト値「sub」のままにしておきます。それ以外の値が設定されている場合は「sub」に直してください※1⁠。

※1)
scope値の意味を十分に理解している場合は,適宜sub以外の値に設定しても構いません。

「ssl」についても同様に

ssl no

にしておきます。

「nss_map_objectclass posixAccount」から「pam_password ad」までの各行は,主にLinux側の属性とADの属性の対応付けを行う設定です。CentOSデフォルトのldap.confファイルではで,いくつかのLDAPプロダクトについての設定例が示されています。SUAを用いている場合は,

# RFC 2307 (AD) mappings

行以下の設定を,SFU 3.0/3.5を用いている場合は,

# Services for UNIX 3.5 mappings

行以下の設定を用います。デフォルトではコメントアウトされていますので,必要な箇所のコメントを外してください。設定例ではSUAを用いる場合の設定を示しました。

そのほか,タイムアウト値を変更する等細かい設定も可能です。詳細はldap.confのマニュアルページなどを参照してください。

著者プロフィール

たかはし もとのぶ

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