Linux の 302 (Mixed Environment) 試験対策: Active Directory との統合

Active Directory ドメインに参加して、Active Directory ドメインと連携する

Windows 2000 のリリースを機に、Microsoft ではディレクトリー・サービスとして Active Directory を導入しました。その後のバージョンで、Active Directory は Active Directory Domain Services (AD DS) と改名されています。AD DS は、リソース管理には定評のある LDAP を利用し、認証には Kerberos を用い、名前解決の際には DNS と密に連携します。現在すでに AD DS を使用している場合、そこに Linux サーバーを連携させれば、Linux のプリント・サービスおよびファイル・サービスの ID 管理と保守を一元化するのに役立ちますが、Linux サーバーと AD DS との連携はそう簡単には行かない可能性があります。幸い、ディレクトリー・サービスを変更することなく Linux と AD DS を連携させるためのソリューションがあります。それが Samba です。[注: 読者からのフィードバックを基に、リスト 4 のキャプションを修正し、「net コマンドを使用する」セクションの内容をわかりやすくしました。]

Tracy Bost, Consultant and Trainer, Freelance

Author photo - Tracy BostTracy Bost は、経験豊かなソフトウェア開発者兼システム・エンジニアです。彼は Linux オペレーティング・システムの講師およびトレーナーも務めています。RHCE (Red Hat Certified Engineer) および MCSE (Microsoft Certified Systems Engineer) の認定を両方とも取得し、Linux Foundation の活発なメンバーでもあります。貸付産業、不動産、非営利セクターなどの業界に従事してきました。



2012年 1月 20日 (初版 2011年 12月 09日)

この連載について

この連載は Linux システム管理タスクの学習に役立つだけでなく、LPIC-3 (Linux Professional Institute Certification レベル 3) 試験に備えるための教材にもなります。

連載の各記事についての説明とリンクについては、developerWorks の LPIC-3 ロードマップを参照してください。現在進行中のこのロードマップは、LPIC-3 試験の最新の目標 (2011年 3月) を反映しています。完成した記事はその都度ロードマップに追加されていきます。

この記事では、以下の概念について学びます。

  • AD DS (Active Directory Domain Services) の概要
  • Samba が AD DS と通信する方法
  • AD DS と連携するための Samba の構成
  • AD DS を利用する方法

この記事は、LPIC-3 Specialty「302 Mixed Environment Exam」試験の主題 314 の目標 314.3 の試験対策となります。この目標の重要度は 2 です。

前提条件

この連載記事を最大限に活用するには、Linux の高度な知識と、この記事で説明するコマンドを演習できる実際の Linux システムが必要です。具体的には、この記事では読者が Linux コマンドライン関数の実用的知識を持っていること、そして「Linux の 302 (Mixed Environment) 試験対策: 概念」で説明している Samba の目的について、少なくとも全般的に理解していることを前提とします。記事で説明するアクションを実行するには、Samba ソフトウェアがインストールされている必要があります。さらに、AD DS を実行するように構成された Windows Server オペレーティング・システムが稼働しているコンピューターにアクセスできることも必要です。


Active Directory の概要

選択的な LPI-302 試験について

LPIC (Linux Professional Institute Certification) には、さまざまなレベルがあり、レベルが上がるにつれ、より深い知識と経験が必要になってくるという点で、他の多くの認定と似ています。LPI-302 試験は、LPIC レベル階層のレベル 3 に位置する選択的な Specialty 認定試験であり、Linux システム管理に関する高度な知識が求められます。

LPIC レベル 3 (LPIC-3) 認定を取得するには、2 つのレベル 1 試験 (101 と 102)、2 つのレベル 2 試験 (201 と 202)、そして LPIC-3 Core Exam (301) に合格しなければなりません。これらの試験に合格した後、LPI-302 などの選択的な Specialty 認定試験を受けることができます。

多数の Windows クライアントが存在する環境、または AD DS をすでに利用している環境で作業しているとしたら、Linux サーバーを AD 環境に参加させることを検討してみてください。AD は、Microsoft Windows 2000 以降、Windows の認証およびディレクトリー・サービスとなっています。プライマリー・ドメイン・コントローラーとバックアップ・ドメイン・コントローラーからの大幅なパラダイム・シフトである AD DS は、相互に複製可能なドメイン・コントローラーを使用します。

Linux サーバーを AD DS ドメインに参加させる手段としては Samba を使用する以外にもありますが、Samba を使用すれば AD DS のスキーマを変更する必要も Windows Server コンピューターに他のソフトウェアをインスールする必要もないため、管理および構成が容易になります。Samba サーバーは AD DS ドメイン内のドメイン・コントローラーにはなれませんが、メンバー・サーバーとして AD DS ドメインに参加し、AD DS サービスと連携することができます。

AD DS は以下のインターネット標準を基盤としています。

  • 名前解決には DNS (Domain Name System) を採用
  • ユーザー認証には Kerberos バージョン 5 を採用
  • ディレクトリー・サービスには LDAP (Lightweight Directory Access Protocol) バージョン 3 を採用

LDAP 3

LDAP は、その前身である X.500 プロトコルよりも軽量のディレクトリー・サービスを求める声に応えて誕生しました。1993年にリリースされて以来、LDAP は著しい進化を遂げ、今ではディレクトリー・サービスにおける事実上のインターネット標準となっています。

Microsoft は LDAP 準拠をコアとしていると主張しています。表 1 に、LDAP での操作の読み取りおよび実行に対する拡張サポートを規定する RFC (Requests for Comments) を記載します。

表 1. LDAP に関する RFC の Microsoft によるサポート
RFCサポート
2251LDAP v3Windows 2000 以降
2252Attribute Syntax Definitions (属性構文の定義)Windows 2000 以降
2253UTF-8 String Representation of Distinguished Names (識別名の UTF-8 文字列表現)Windows 2000 以降
2254LDAP Search Filters Using Strings (LDAP 検索フィルターの文字列表現)Windows 2000 以降
2255The LDAP URL Format (LDAP URL 形式)Windows 2000 以降
2256The X.500 User Schema for use with LDAPv3 (LDAPv3 と共に使用するための X.500 ユーザー・スキーマの概要)Windows 2000 以降
2829Authentication Methods for LDAP (LDAP 認証方式)Windows 2000 以降
2830Extension for Transport Layer Security (トランスポート層セキュリティーの拡張)Windows 2000 以降
2589Extensions for Dynamic Directory Services (動的ディレクトリー・サービスの拡張)Windows Server 2003 以降
2798Defines the inetOrgPerson LDAP Object Class (inetOrgPerson LDAP オブジェクト・クラスの定義)Windows Server 2003 以降
2831Using Digest Authentication as an SASL Mechanism (SASL メカニズムとしての Digest 認証の使用)Windows Server 2003 以降
2891LDAP Control Extension for Server Side Sorting of Search Results (サーバー・サイドでの検索結果のソートに対する LDAP 制御拡張)Windows Server 2003 以降

Kerberos 5

皆さん独自のフィードを作成してください

新しい記事が追加された際、あるいは内容が更新された際に通知を受けられるように、RSS、Atom、または HTML によるカスタム・フィードを作成することができます。それには、developerWorks RSS フィードにアクセスしてください。対象のゾーンとしては「Linux」を選択し、情報の種類としては「記事」を選択して、キーワードには「Linux Professional Institute」と入力します。そして最後にフィードの種類を選択します。

Kerberos は、インターネットと内部ネットワークにおけるセキュリティーの重要性が高まった頃、マサチューセッツ工科大学でネットワーク認証プロトコルとして開発されました。このプロトコルによる強力な暗号化では、クライアントがその身元をサーバーに証明し、同じくサーバーがその身元をクライアントに証明することができます。この操作には、チケットと認証コードが使用されます。

AD DS はユーザー認証に Kerberos バージョン 5 を使用します。AD DS のクライアント認証では、ドメイン・コントローラーが Kerberos KDC (Key Distribution Center) の役割を果たします。

DNS

AD DS は DNS と密に連携し、DNS を以下の目的で使用します。

  • AD DS ドメイン・コントローラーを見つけるため
  • 組織構造をそのドメインの名前で階層のように表現するため
  • ドメイン・コントローラーのロケーションと AD DS ドメインに対する名前解決サービスを提供するため

AD DS 自体は DNS サーバーではなく、DNS が通常行うタスクを代行するわけではないことに注意してください。一般に、DNS サーバーはゾーンおよびリソース・レコードを保存する一方、AD DS は同じ名前空間を使用してドメインとドメインのオブジェクトを保存します。表 2 に、通常の DNS の役割と AD DS の役割の比較を示します。

表 2. DNS および AD DS の役割
DNSAD DS
ドメイン名をリソース・レコードにマッピングするDNS 名をオブジェクト (dnsZone) として保存する
コンピューター名をリソース・レコードにマッピングするコンピューター名をオブジェクト・レコードとして保存する

サービス・レコード (SRV レコード) とは、特定のサービスを提供するサーバーのロケーションを定義する、DNS のデータ仕様です。AD DS が正しく機能するためには、DNS サーバーがサービス・ロケーションのリソース・レコード (RR) をサポートする必要があります。サービス・リソース・レコード (SRV RR) はサービスの名前を、そのサービスを提供するサーバーの名前にマッピングします。AD DS クライアントとドメイン・コントローラーは SRV レコードを使用して、ドメイン・コントローラーの IP アドレスを判断します。


AD DS をサポートする Samba の構成

Linux サーバーを AD DS と連携させるには、まず Samba をイントールした環境が LDAP とKerberos をサポートできることを確かめる必要があります。あらかじめコンパイル済みの Samba を使用している場合には、そのインストール環境はおそらく Kerberos 5 および LDAP を両方ともサポートするはずです。Samba をソースからコンパイルしている場合には、必ず kbr5 および ldap ライブラリーのサポートを組み込んでください。そのためには、include/config.h ヘッダー・ファイルを以下のように変更してから、make コマンドを実行します。

#define HAVE_KRB5 1
#define HAVE_LDAP 1

Linux コンピューターによっては、ライブラリー名が上記とは異なる場合があります。

Linux コンピューターに Samba がインストールされたら、Samba のサービス・デーモン smbd を使用して、Samba インストール済み環境で何がサポートされているかを調べることができます (リスト 1 を参照)。

リスト 1. Samba での Kerberos 5 サポートを示すリスト (一部省略)
[tbost@samba3 ~]$ smbd -b | grep KRB
   HAVE_KRB5_H
   HAVE_KRB5_LOCATE_PLUGIN_H
   HAVE_ADDRTYPE_IN_KRB5_ADDRESS
   HAVE_DECL_KRB5_AUTH_CON_SET_REQ_CKSUMTYPE
   HAVE_DECL_KRB5_GET_CREDENTIALS_FOR_USER
   HAVE_INITIALIZE_KRB5_ERROR_TABLE
   HAVE_KRB5
   HAVE_KRB5_AUTH_CON_SETUSERUSERKEY
   HAVE_KRB5_AUTH_CON_SET_REQ_CKSUMTYPE
   HAVE_KRB5_C_ENCTYPE_COMPARE
   HAVE_KRB5_C_VERIFY_CHECKSUM
   HAVE_KRB5_DEPRECATED_WITH_IDENTIFIER
   HAVE_KRB5_ENCRYPT_BLOCK
   HAVE_KRB5_ENCRYPT_DATA
   HAVE_KRB5_ENCTYPE_TO_STRING
.....

[tbost@samba3 ~]$smbd -b | grep LDAP
   HAVE_LDAP_H
   HAVE_LDAP
   HAVE_LDAP_ADD_RESULT_ENTRY
   HAVE_LDAP_INIT
   HAVE_LDAP_INITIALIZE
   HAVE_LDAP_SASL_WRAPPING
   HAVE_LDAP_SET_REBIND_PROC
   HAVE_LIBLDAP
   LDAP_SET_REBIND_PROC_ARGS

リスト 1 には、Fedora ディストリビューションで krb5 ライブラリーと ldap ライブラリーがそれぞれサポートされていることが示されています。使用しているディストリビューションによって出力の内容は異なりますが、コマンドの出力に、少なくとも HAVE_KRB5_H および HAVE_LDAP_H が含まれていることを確認してください。

Kerberos と NTP

Kerberos サポートには、Samba サーバーがドメインと時刻を同期していることが不可欠です。AD DS は通常、タイム・サービスにドメイン・コントローラーを使用するように構成されるので、Linux コンピューターで NTP (Network Time Protocol) を構成するには、指定された Windows ドメイン・コントローラーをタイム・サーバーとして使用することができます。

Samba と Kerberos

Samba では、AD DS ドメイン内のユーザーを認証する手段として Kerberos を使用することができます。Samba を構成するには、/etc ディレクトリー内にある krb5.conf ファイルを見つけてください。このファイルのデフォルト構成には、いくつかの変更を加えなければならないためです。最低限必要な変更として、このファイルの realms セクションにドメイン名と併せ、AD DS に対して認証を行う Windows ドメイン・サーバーの完全修飾ドメイン名を指定してください (リスト 2 を参照)。

リスト 2. krb5.conf ファイルの構成e
[realms]

LPIC302.LOCAL= {
		kdc = wins3.lpic302.local 
		admin_server =wins3.lpic302.local
		default_domain = LPIC302.LOCAL
	
	}

リスト 2 は、AD DS ドメイン名として LPIC302.LOCAL を指定した単純な構成例です。ドメイン名は必ず、すべて大文字で入力する必要があります。そうでないと、Kerberos はそのドメインに接続しません。kdc ディレクティブで指定しているのは、wins3.lpic302.local をホスト名として持つ AD DS コントローラーです。さらに、admin_server がドメイン・コントローラーとして指定されています。default_domain パラメーターは、ユーザーがドメイン名を指定しない場合に Kerberos が使用するドメイン名を指定するために使用します。

Winbind デーモン

Winbind デーモンを使用すると、AD DS ドメインに対するユーザー認証が容易になります。そこで、pam_winbind モジュールを使用するように PAM (Pluggable Authentication Modules) を構成してください (リスト 3 を参照)。

リスト 3. pam_winbind を使用する PAM の構成
auth        sufficient   pam_winbind.so
auth        sufficient   pam_unix.so use_first_pass
auth        required     pam_stack.so service=system-auth
auth        required     pam_nologin.so
account     sufficient   pam_winbind.so
account     required     pam_stack.so service=system-auth
password    required     pam_stack.so service=system-auth
session     required     pam_stack.so service=system-auth
session     optional     pam_console.so

リスト 3 に示しているのは、Fedora ベースのディストリビューションで /etc/pam.d ディレクトリーに格納されている system-auth ファイルの変更後の内容です。Linux ディストリビューションによって認証ファイルの名前は異なる場合がありますが、通常、ファイル名は services または login となります。

pam_winbind.so の配置順は重要です。ユーザーにローカル passwd ファイルではなく、主にユーザーの AD DS アカウントから認証させるには、pam_winbind.so を最初に入力する必要があります。そうでないと、auth.log ファイルがたちまちローカルでのログイン試行の失敗ログでいっぱいになってしまいます。

Name Service Switch

Name Service Switch は、認証を含む共通サービスと Linux コンピューターが連携するための標準メカニズムとなります。これらのサービスを使用するときに、Linux コンピューターは /etc/nsswitch.conf ファイルに問い合わせを行います。このファイルを以下のように変更することによって、Linux コンピューターはユーザー認証に Winbind を使用できるようになります。

以下のコードでは、Winbind を使用してユーザーを AD DS の Kerberos 5 データベースに対して認証できるようにするために Winbind サポートを追加するプロセスを抜粋しています。

passwd: files winbind
group:	 files winbind

smb.conf

当然のことながら、smb.conf ファイルの構成を変更しなければ、Samba が AD DS ドメイン内で動作することはできません。最も基本的な変更として、realm および security のパラメーターをリスト 4 に示すように設定します。

リスト 4. smb.conf ファイルの構成
[global]
realm = lpic302.LOCAL
security = ADS
password server = wins.lpic302.local
workgroup = lpic302
winbind use default domain = yes
idmap uid = 10000-20000
idmap gid = 10000-20000
winbind enum users = yes
winbind enum groups = yes

リスト 4 の構成では、realm をドメイン名 lpic302.local に設定しています。security パラメーターに設定されている値は ADS です。ADS は、Samba が ADS (AD DS Service) セキュリティー・モードで動作することを意味します。行 windbind use default domain = yes は、リソースにアクセスする際にユーザー名やその他のリソースをドメイン名で修飾する必要をなくす場合に設定することができます。例えば、LPIC302.LOCAL/tbost を認証する場合、ユーザー名 tbost が指定されると、Winbind はドメインが LPIC302.LOCAL であると想定します。


AD DS を利用する方法

構成が完了し、Samba の再起動が完了して Winbind デーモンが実行されている状態になれば、AD DS を利用することができます。

net コマンドを使用する

net ツールは、Samba 管理者にとって極めて有用なツールです。Windows の net コマンドを使用したことがあれば、このツールのオプションと機能の多くは馴染み深く感じられるでしょう。AD DS を利用する際に用いるコマンドは、net ADS です。このコマンドで最初に行う操作の 1 つには、ドメインへの参加が挙げられます。

[tbost@samba3 ~]$ sudo net ADS join -U Administrator%password
[tbost@samba3 ~]$ sudo net ADS testjoin
[tbost@samba3 ~]$ sudo net ADS join Computers\OrganizationalUnit\Accounting\Servers

上記のコードでドメインに参加するために使用している net コマンドでは、%password を省略することもできます。その場合には、プロンプトに応じて Windows 管理者アカウント・パスワードを入力してください。2 番目のコマンドは、サーバーがドメインに参加したことを確認します。スニペットの 3 番目のコマンドは、AD DS での Samba サーバーのコンピューター・アカウントを ACCOUNTING/Servers に作成する (あるいはデフォルトの Computers オブジェクトから移動してくる) ことができます。3 番目のコマンドを実行する場合、Computers オブジェクトの組織単位である ACCOUNTING/Servers が Active Directory に存在している必要があります。net コマンドについての詳細を知りたい場合は、net コマンドのオンライン man ページに参考になる多くの情報が記載されています。また、net help ADS コマンドを実行して詳細を調べることもできます (リスト 5 を参照)。

リスト 5. AD DS ドメインにおける net コマンドの使い方のリスト
[tbost@samba3 ~]$ net help ADS
Usage:
net ads info
    Display details on remote ADS server
net ads join
    Join the local machine to ADS realm
net ads testjoin
    Validate machine account
net ads leave
    Remove the local machine from ADS
net ads status
    Display machine account details
net ads user
    List/modify users
net ads group
    List/modify groups
net ads dns
    Issue dynamic DNS update
net ads password
    Change user passwords
net ads changetrustpw
    Change trust account password
net ads printer
    List/modify printer entries
net ads search
    Issue LDAP search using filter
net ads dn
    Issue LDAP search by DN
net ads sid
    Issue LDAP search by SID
net ads workgroup
    Display the workgroup name
net ads lookup
    Find the ADS DC using CLDAP lookups
net ads keytab
    Manage local keytab file
net ads gpo
    Manage group policy objects
net ads kerberos
    Manage kerberos keytab

wbinfo を使用する

AD DS リソースに対して問い合わせを行うには、Winbind デーモンが提供する wbinfo ツールを使用します。

[tbost@samba3 ~]$  wbinfo -p
[tbost@samba3 ~]$  wbinfo -u 
[tbost@samba3 ~]$  wbinfo -g

上記のスニペットでは、wbinfo を使用してドメインに関する情報を調べています。wbinfo -p コマンドは、Winbind デーモンに対して ping を実行して、このデーモンが実行中であることを確認します。wbinfo -u コマンドはドメイン内のすべてのユーザーのリストを返す一方、wbinfo -g はドメイン内のすべてのグループのリストを返すためのコマンドです。このツールのその他のオプションおよび機能についての詳細は、wbinfo マニュアルを参照してください。

smbcacls を使用してアクセス・コントロール・リストを管理する

setfacl および getfacl コマンドを使い慣れていれば、Samba クライアント・スイートが提供する smbcacls コマンドはほとんど問題なく使いこなせるはずです。smbcacls ツールを使用することで、あるドメインで Windows Server マシンが提供する共有に対して、グループやユーザー所有権の変更を行ったり、これらの共有に対するアクセス・コントロール・リストのパーミッションを操作したりすることができます。

[tbost@samba3 ~]$sudo smbcacls -G LPIC302.LOCAL\accounting \
//wins2.lpic302.local/budget private.doc

上記のコードは smbcacls コマンドを使用して、Windows Server マシン上の共有ディレクトリー budget での accounting グループに対する private.doc ファイルのグループ・パーミッションを、AD DS ドメイン内のアカウンティング・グループに変更します。smbcacls --help コマンドを使用すると、このツールのさまざまな機能に対して設定できるオプションが表示されます。

参考文献

学ぶために

議論するために

  • My developerWorks コミュニティーに加わってください。ここでは他の developerWorks ユーザーとのつながりを持てる他、開発者が主導するブログ、フォーラム、グループ、ウィキを調べることができます。

コメント

developerWorks: サイン・イン

必須フィールドは(*)で示されます。


IBM ID が必要ですか?
IBM IDをお忘れですか?


パスワードをお忘れですか?
パスワードの変更

「送信する」をクリックすることにより、お客様は developerWorks のご使用条件に同意したことになります。 ご使用条件を読む

 


お客様が developerWorks に初めてサインインすると、お客様のプロフィールが作成されます。会社名を非表示とする選択を行わない限り、プロフィール内の情報(名前、国/地域や会社名)は公開され、投稿するコンテンツと一緒に表示されますが、いつでもこれらの情報を更新できます。

送信されたすべての情報は安全です。

ディスプレイ・ネームを選択してください



developerWorks に初めてサインインするとプロフィールが作成されますので、その際にディスプレイ・ネームを選択する必要があります。ディスプレイ・ネームは、お客様が developerWorks に投稿するコンテンツと一緒に表示されます。

ディスプレイ・ネームは、3文字から31文字の範囲で指定し、かつ developerWorks コミュニティーでユニークである必要があります。また、プライバシー上の理由でお客様の電子メール・アドレスは使用しないでください。

必須フィールドは(*)で示されます。

3文字から31文字の範囲で指定し

「送信する」をクリックすることにより、お客様は developerWorks のご使用条件に同意したことになります。 ご使用条件を読む

 


送信されたすべての情報は安全です。


static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=60
Zone=Linux
ArticleID=778765
ArticleTitle=Linux の 302 (Mixed Environment) 試験対策: Active Directory との統合
publish-date=01202012