第5章 Active Directory への対応

目次

5.1. Linux と AD 環境の統合
5.2. Linux における AD 対応の背景となる情報
5.3. Linux クライアントに対して Active Directory を設定する方法
5.4. AD ドメインへのログイン
5.5. パスワードの変更

Active Directory* (以下 AD) は LDAP と Kerberos などをベースにし、リソースや サービス、ユーザアカウント (以下オブジェクト) などを管理するための、 Microsoft Windows で使用されるサービスです。 MS Windows のネットワークでは、 AD はそれらの オブジェクトに関する情報を提供するほか、それらへのアクセス制限やポリシーの 強制などを提供します。 openSUSE® では、既存の AD ドメインに参加し、 Linux マシンと Windows 環境を統合することができるようになっています。

5.1. Linux と AD 環境の統合

既存の Active Directory ドメインに参加させた Linux クライアントでは、 設定していない場合と比較して、下記のような様々な機能を利用できるようになります:

SMB を利用した共有ファイルや共有フォルダへの参照

Nautilus (GNOME ファイルマネージャ), Dolphin, Konqueror (KDE ファイル マネージャ) では、 SMB を利用して共有リソースにアクセスすることが できます。

SMB を利用したファイルやフォルダの共有

Nautilus (GNOME ファイルマネージャ), Dolphin, Konqueror (KDE ファイル マネージャ) では、 SMB 経由で Windows にファイル共有を行なうこと ができます。

Windows サーバ上にあるユーザデータへのアクセスや操作

Nautilus と Konqueror を利用することで、ユーザは自分自身の Windows ユーザデータにアクセスすることができるほか、 Windows サーバ上にある ファイルやフォルダなどを編集したり、作成/削除したりすることもできます。 ユーザ側でパスワードを何回も入力する必要はありません。

オフライン認証

ユーザは Linux マシン上に対して、何らかの理由で AD サーバが利用できない 場合でも、ログインを行なってローカルデータにアクセスできるようになります。

Windows のパスワード変更

Linux における AD 対応の仕組みでは、 Active Directory 内に保存されている パスワードポリシーの強制機能が備わっています。ディスプレイマネージャや コンソールでは、パスワード変更メッセージや入力の受け付け機能も存在して いるほか、 passwd コマンドで Windows のパスワードを 変更することもできます。

Kerberos 対応のアプリケーションによるシングルサインオン

GNOME, KDE のいずれのデスクトップとも、多数のアプリケーションが Kerberos に対応しています。これにより、 Web サーバやプロキシ、グループウエア アプリケーションなどを利用する場合でも、それぞれでパスワードを入力する 必要がなくなります。

これらの機能に関する技術情報の概要は、下記の章で説明しています。

5.2. Linux における AD 対応の背景となる情報

Linux クライアントを既存の Windows での Active Directory ドメインに統合 するには、多数のシステムコンポーネントを完全に動作させる必要があります。 図5.1「Active Directory 認証スキーマ」 では、もっとも重要な点を説明しています。 下記の章では、 AD サーバとクライアントの動作について、主なイベントの裏側 で動作する処理について説明しています。

図5.1 Active Directory 認証スキーマ

Active Directory 認証スキーマ

ディレクトリサービスとの通信するには、クライアントとサーバは 少なくとも下記の 2 つのプロトコルを利用する必要があります:

LDAP

LDAP はディレクトリ情報を管理するために最適化されたプロトコルです。 Windows の AD ドメインコントローラでは、クライアントとのディレクトリ 情報の交換に際して、 LDAP のプロトコルを使用しています。 LDAP について 詳しい情報や、 LDAP のオープンソース実装である OpenLDAP について、 詳しくは 第4章 ディレクトリサービス LDAP をお読みください。

Kerberos

Kerberos はサードパーティ製の信頼できる認証サービスです。全ての Kerberos クライアントは、他のクライアントの Kerberos 認証情報を信頼する 仕組みになっていて、これによって Kerberos のシングルサインオン (SSO) を構成しています。 Windows にも Kerberos 実装が存在しているため、これに よって Linux クライアントが参加できるようになっています。

下記のクライアントコンポーネントでは、アカウントと認証データを取り扱います:

Winbind

Active Directory のクライアント機能を利用するにあたって、最も重要な位置を 占めるのが winbind デーモンです。これは Samba プロジェクトから提供されて いるもので、 AD サーバとの通信を全て取り扱います。

NSS (Name Service Switch)

NSS ルーチンはネームサービスの情報を提供します。ユーザとグループに対する ネームサービスは、 nss_winbind が提供します。この モジュールは、 winbind デーモンと直接通信して処理を行ないます。

PAM (Pluggable Authentication Modules)

AD ユーザに対する認証は、 pam_winbind モジュールが 行ないます。また、 AD ユーザに対する Linux クライアント側のホーム ディレクトリの作成は、 pam_mkhomedir が行ないます。 さらに、 pam_winbind は winbind と直接通信を行なって 処理を行ないます。一般的な PAM の情報については、 第2章 PAM を利用した認証 をお読みください。

PAM に対応したアプリケーション、たとえばログインルーチンや GNOME/KDE の ディスプレイマネージャでは、 Windows サーバに対する認証を行なうのに PAM や NSS レイヤと情報をやりとりします。また、 Kerberos 認証に対応したアプリケーション (たとえばファイルマネージャや Web ブラウザ、電子メールクライアントなど) では、ユーザの Kerberos チケットにアクセスするのに Kerberos の認証キャッシュ を使用し、 SSO として動作するようになっています。

5.2.1. ドメインへの参加

ドメインへの参加にあたっては、サーバとクライアントの間の通信には機密を 保持する必要があります。クライアント側では、既存の Windows ドメインコントローラ が提供する LDAP および Kerberos SSO 環境に参加するにあたって、下記の作業を 実施する必要があります。ドメインへの参加作業は、全て YaST のドメイン メンバーシップモジュールを利用して行ないます。これはインストール中に実施 することができるほか、インストール済みのシステムでも行なうことができます。 具体的には下記の作業を行なう必要があります:

  1. LDAP と KDC (鍵配布センター) の各サービスを提供する Windows ドメイン コントローラを用意すること。

  2. 参加するクライアントのマシンアカウントが、ディレクトリサービス内に 作成すること。

  3. クライアントに対する初期のチケット許可チケット(TGT) を取得し、 Kerberos の認証情報キャッシュ内に保管すること。クライアントはこの TGT を利用して、 LDAP 機能を提供するディレクトリサーバなど、他のサービスと通信を行なうための チケットを取得します。

  4. NSS と PAM の設定を調整し、クライアントからドメインコントローラに対して 認証を行なうようにすること。

クライアントの起動時、 winbind デーモンが起動され、マシンアカウントに対応 する初期の Kerberos チケットを取得します。その後、 winbindd はそのマシンの チケットが有効であり続けるよう、チケットを更新し続けます。また、最新の アカウントポリシーを取得するため、 winbindd はドメインコントローラに対して 定期的に問い合わせを行ないます。

5.2.2. ドメインへのログインとユーザのホームディレクトリ

GNOME や KDE のログインマネージャ (GDM や KDM) では、 AD ドメインへのログイン を処理するために機能拡張が行なわれています。ユーザ側ではそのマシンが参加した ドメインにログインすることができるほか、そのドメインと信頼関係が設定されて いる他のドメインにログインすることもできます。

ユーザ認証は 5.2項 「Linux における AD 対応の背景となる情報」 で示されているとおり、 多数の PAM モジュールが処理するようになっています。このうち Active Directory や NT ドメイン に対する認証機能を提供する pam_winbind モジュールでは、ユーザのログイン時に発生する可能性がある Windows エラーについて、 全てのものに対応できる仕組みが備わっています。ログイン時に発生した Windows エラーのエラーコードは対応するテキストに変換され、それぞれ対応する方法 (GDM, KDM, コンソール, SSH) で表示します:

パスワードの有効期限が切れた場合

パスワードの有効期限が切れていて、変更しなければならない旨を表示します。 システムは新しいパスワードを入力するように促すほか、新しいパスワードが パスワードポリシーに適合しているか (たとえばパスワードが短すぎないか、 単純すぎないか、既に履歴内に存在していないか) を確認し、ポリシーに適合 していない場合にはメッセージを表示します。パスワード変更が失敗した場合は、 その理由が表示されて新しいパスワードを再度入力するように促します。

アカウントが無効化されていた場合

アカウントが無効化されていて、システム管理者に連絡を取るよう促す エラーメッセージが表示されます。

アカウントはロック (施錠) されていた場合

アカウントがロック (施錠) されていて、システム管理者に連絡を取るよう 促すエラーメッセージが表示されます。

パスワードを変更する必要がある場合

ユーザは問題なくログインできますが、パスワードを近いうちに変更する必要 が発生している旨の警告メッセージが表示されます。この警告メッセージは、 パスワードの有効期限が切れる 3 日前に送信されます。パスワードの期限が 切れると、ログインできなくなります。

不正なワークステーションであった場合

ユーザが特定のワークステーションからの接続のみに制限されていて、その ワークステーションに openSUSE のマシンが含まれていない場合、 このワークステーションからはログインできない旨のメッセージが表示されます。

不正なログイン時間帯であった場合

ユーザが特定の時間帯にのみログインできるように設定されていて、その 時間外にログインしようとしている場合は、その時間帯にはユーザはログイン できない旨のメッセージが表示されます。

アカウントの有効期限が切れた場合

管理者側では、特定のユーザアカウントに対して有効期限を設定することが できます。有効期限が切れた後にユーザがログインしようとすると、ユーザ 側にはアカウントの有効期限が切れていて、ログインできない旨のメッセージ が表示されます。

認証が成功した場合、 pam_winbind はチケット許可チケット (TGT) を Active Directory の Kerberos サーバから取得し、ユーザの認証キャッシュ 内に保管します。その後、 TGT の更新は裏側で自動的に行なわれるため、ユーザ側で 操作を行なう必要はありません。

openSUSE では、 AD ユーザに対してローカルのホームディレクトリを提供 する機能を備えています。 YaST を利用して 5.3項 「Linux クライアントに対して Active Directory を設定する方法」 の手順で設定を行なった場合、ユーザのホームディレクトリは、 Windows (AD) ユーザが Linux クライアントにはじめてログインした際に作成されるように なります。ここで作成されたホームディレクトリは、通常の Linux ユーザ向け ホームディレクトリとほぼ同じもので、 AD のドメインコントローラとは独立 して動作します。また、ローカルのユーザ向けホームディレクトリを使用した 場合、 Linux クライアント側でオフライン認証の設定を行なっていれば、 AD サーバとの通信が切れてもこれらのデータにアクセスできるようになります。

5.2.3. オフラインサービスとポリシーへの対応

企業環境内のユーザに対しては、ローミング機能 (たとえばネットワークを 切り替えたり、一時的にネットワークを切断したりしても、認証を継続できる 機能) に対応させなければなりません。ネットワーク接続の切れたマシンから、 ユーザがログインできるようにするため、 winbind デーモンには大規模な キャッシュ機能が備わっています。 winbind デーモンは、オフライン状態でも パスワードポリシーの強制を実施するようになっていて、ログインの失敗回数 を追跡するほか、 Active Directory 内に設定されたポリシーへの対応も行なう ことができます。既定ではオフラインへの対応は無効に設定されているため、 YaST のドメインメンバーシップモジュールで明示的に有効化する必要が あります。

ドメインコントローラが利用不可能な状態になった場合でも、ユーザは 接続を失う前に獲得した Kerberos のチケットを利用して、ネットワーク上の リソースにアクセスし続けることができます (ただし AD サーバそれ自身を 除きます。また、この機能は Windows クライアントにも存在するものです) 。 ただし、パスワードの変更はドメインコントローラへの接続が失われている 場合には、実施することができません。また、 AD サーバとの接続が切れている 間は、このサーバに保管されているデータにアクセスすることはできません。 さらに、そのマシンがネットワークから完全に切り離されていて、しばらく 経ってから接続を回復させた場合、 openSUSE ではユーザがデスクトップを ロック/アンロック (施錠または解錠) したタイミング (スクリーンセーバを 利用した場合などを含みます) で新しい Kerberos チケットを獲得します。

5.3. Linux クライアントに対して Active Directory を設定する方法

お使いのクライアントを AD ドメインに追加する前に、クライアントとサーバが うまく動作するようにするため、お使いのネットワーク設定をいくつか調整 しなければなりません。

DNS

お買いのクライアントマシンに設定されている DNS サーバの設定を変更し、 AD の DNS サーバにリクエストを転送できる DNS サーバを利用するように 設定する必要があります。もちろん AD の DNS サーバそれ自身を DNS サーバ として設定してもかまいません。

NTP

Kerberos 認証が正しく動作するようにするため、クライアント側の時刻を 正確に設定しておく必要があります。この目的を達成するために、NTP 時刻 サーバによる時刻同期の設定を強くお勧めします (お使いの Active Directory のドメインコントローラで動作している NTP サーバでもかまいません) 。 お使いの Linux ホストとドメインコントローラとの間で、一定以上のズレが あると Kerberos の認証は失敗してしまい、クライアントはより弱い認証方法で ある NTLM (NT LAN Manager) でログインするようになってしまいます。 Active Directory を利用した時刻同期について、詳しくは 手順5.1「AD ドメインへの参加」 をお読みください。

ファイアウオール

ネットワーク内にあるコンピュータを参照できるようにするには、 ファイアウオールを完全に無効化するか、もしくは参照に利用する ネットワークインターフェイスを内部ゾーンに設定する必要があります。

お使いのクライアントでファイアウオールの設定を変更するには、 root でログインしたあと、 YaST のファイアウオールモジュールを起動します。 モジュールが起動したら インターフェイス を選択し、 参照に利用するインターフェイスを選んで 変更 を 押します。ここから 内部ゾーン を選択し、 OK を押して設定を適用します。あとは 次へ+完了 を押せば設定を終えることができます。ファイアウオールを無効化したい 場合は、 サービスの開始 の欄で ファイアウオールを自動では起動しない を選んでから、 次へ+完了 と押していけば設定は完了です。

AD のアカウント

AD の管理者から、そのドメインに対する有効なアカウント情報を提供して もらわない限り、 AD ドメインにログインすることができません。 お使いの Linux クライアントから AD ドメインにログインするにあたっては、 AD のユーザ名とパスワードをご用意ください。

AD ドメインへの参加は、インストール時に行なうことができるほか、インストール 済みのシステムでも YaST を利用して SMB ユーザ認証を有効にすることで、 後から参加させることもできます。

[Important]ドメイン名について

ドメインへの参加時、ドメイン名が .local で終わる名前に なっていると、処理が正常に終了できなくなります。これは、 .local で終わる名前が、リンクローカルアドレスとしてマルチ キャスト DNS (MDNS) で予約されているために発生します。

[Note]

現時点では、ドメインの管理者アカウント (たとえば Administrator) を利用しないと、 openSUSE を Active Directory に参加させることができません。

インストール済みのシステムで AD ドメインへの参加を設定するには、 下記の手順で行ないます:

手順5.1 AD ドメインへの参加

  1. root でログインし、 YaST を起動します。

  2. ネットワークサービス+Windows ドメインメンバーシップ を選択します。

  3. まずは Windows ドメインメンバーシップ の画面で、 ドメイン/ワークグループ の欄にドメイン名を入力 します (図5.2「Windows ドメインメンバーシップの設定」 をご覧ください) 。 なお、お使いのホストでの DNS 設定が Windows の DNS サーバと正しく 統合できている場合は、 AD のドメイン名を DNS 形式 (例: mydomain.mycompany.com) で入力します。 ドメイン名を短い形式 (Windows 2000 のドメイン名としても知られている 形式です) で入力した場合、 YaST は DNS ではなく NetBIOS の名前解決に よってドメインコントローラを検出するようになります。

    図5.2 Windows ドメインメンバーシップの設定

    Windows ドメインメンバーシップの設定

  4. Linux 側の認証に SMB の認証を利用する場合は、 Linux の認証に SMB の情報を使用する にチェックを入れます。

  5. AD ユーザが Linux マシンにログインした際、ローカルのホームディレクトリ を自動的に作成するには、 ログイン時にホームディレクトリを作成する にチェックを入れます。

  6. また、 AD サーバが一時的に利用不可能な場合でも、ドメインユーザがログイン できるように設定したい場合は、 オフライン認証 に チェックを入れます。

  7. Samba のユーザやグループに対して設定する UID や GID を変更したい場合は、 熟練者向け設定 を選択します。なお、 DHCP に対して WINS サーバの情報を取得する設定は、必要な場合にのみ行なってください。 この設定は、 WINS のシステムで名前解決を行なう場合にのみ利用します。

  8. また、お使いの AD 環境で NTP による時刻同期を設定するには、 NTP の設定 を押し、サーバのホスト名または IP アドレスを 入力します。ただし、 YaST の NTP モジュールで既に設定済みの場合は、 ここで設定する必要はありません。

  9. 設定が終わったら OK を押してください。ドメインへの 参加確認メッセージが表示されます。

  10. 次に AD サーバの Windows 管理者アカウントのパスワードを入力し、 OK を押します (図5.3「管理者の認証情報設定」 をご覧ください) 。

    図5.3 管理者の認証情報設定

    管理者の認証情報設定

AD ドメインへの参加が完了すると、お使いのデスクトップのディスプレイ マネージャやコンソールから AD のアカウントでログインできるように なります。

5.4. AD ドメインへのログイン

お使いのマシンを Active Directory で認証するように設定し、必要なユーザ アカウントに関する情報を取得すれば、その情報を元にログインを行なうことが できるようになります。ログインはいずれのデスクトップ環境 (GNOME, KDE) にも対応しているほか、コンソールや SSH など、 PAM に対応した アプリケーションでも利用可能です。

[Important]オフライン認証

openSUSE ではオフライン認証に対応しているため、クライアント側の マシンがネットワークから切り離された状態でも、そのマシンでは AD の ユーザによるログインを行なうことができます。詳しくは 5.2.3項 「オフラインサービスとポリシーへの対応」 をお読みください。

5.4.1. GDM と KDM

GNOME のクライアントマシンで AD サーバに対して認証を行なうには、下記の 手順で行ないます:

  1. Username には、 ドメイン名と Windows でのユーザ名を、 ドメイン名\Windows_ユーザ名 の形式で入力し、 Enter を押します。

  2. Windows のパスワードを入力して Enter を押します。

KDE のクライアントマシンで AD サーバに対して認証を行なうには、下記の 手順で行ないます:

  1. まずはドメインを選択します。

  2. AD のユーザ名を入力します。

  3. AD のパスワードを入力して Enter を押します。

openSUSE で AD のユーザがはじめてログインした際、ホームディレクトリを 作成するように設定していた場合は、ホームディレクトリが作成されます。 これにより、 Linux として完全に動作するマシンでありながら、 openSUSE の AD サポートによるメリットを生かすことができるようになります。

5.4.2. コンソールログイン

AD のクライアントマシンでは、グラフィカルなフロントエンドでログイン するだけでなく、テキストベースのコンソールログインや SSH によるログイン を行なうこともできます。

コンソールから AD のアカウントでログインしたい場合は、 login: プロンプトに ドメイン\ユーザ名 の形式で入力を行ない、そのユーザのパスワードを入力します。

SSH 経由で AD のアカウントでログインしたい場合は、下記のように 実施します:

  1. コマンドは下記のように入力します:

    ssh ドメイン\\ユーザ@ホスト名

    ドメインとユーザ名の区切り文字である \ は、 \ を 2 度入力することでシェルのエスケープ処理を 行なっています。

  2. あとはそのユーザに対するパスワードを入力します。

5.5. パスワードの変更

openSUSE では、企業などで適用されているパスワードポリシーに適合 するパスワードを、ユーザに設定させるような機能が備わっています。 PAM モジュールは、現在のパスワードポリシーをドメインコントローラから取得 し、メッセージによ表示でパスワードの品質設定などを通知することが できます。 Windows 側での動きと同様に、 openSUSE では下記に関する メッセージを表示します:

  • パスワードの履歴設定

  • 最小のパスワード長の要件

  • 最小のパスワード経過日数

  • パスワードの複雑さ

パスワードの変更処理は、すべての要件が満たされている場合にのみ実施する ことができます。また、パスワードの状態に関する情報は、ディスプレイ マネージャやコンソールに表示されます。

GDM や KDM では、パスワードの有効期限に関する情報のほか、新しいパスワード を対話モードで設定するプロンプトが用意されています。ディスプレイ マネージャでパスワードを変更するには、問い合わせが表示されたときに パスワードを入力するだけです。

AD 側のパスワードを変更する場合でも、わざわざサーバ側で変更したりする必要 はなく、通常の Linux ユーティリティである passwd コマンドで変更することができます。 AD のパスワードを変更するには、 下記の手順で行ないます:

  1. コンソールにログインします。

  2. passwd と入力します。

  3. 現在のパスワードについて問い合わせがあった場合は、 現在のパスワードを入力します。

  4. 新しく設定するパスワードを入力します。

  5. 確認のため、再度新しく設定するパスワードを入力します。 Windows サーバ側 のパスワードポリシーを満たしていないパスワードを入力してしまった場合は、 このフィードバックが表示され、他のパスワードを入力するように求められます。

AD 側のパスワードを GNOME デスクトップで変更するには、下記の手順で 行ないます:

  1. パネルの左側の端にある コンピュータ を押します。

  2. コントロールセンター を選択します。

  3. 個人設定 のセクションから、 自分について+パスワードの変更 を選択します。

  4. 現在のパスワードを入力します。

  5. 新しいパスワードを二度入力します。

  6. 設定を反映するには、 閉じる ボタンを押します。

AD 側のパスワードを KDE デスクトップで変更するには、下記の手順で 行ないます:

  1. メインメニューから デスクトップを設定 を選択します。

  2. About Me を選択します。

  3. パスワード & ユーザアカウント を選択します。

  4. パスワードを変更 を押します。

  5. 現在のパスワードを入力します。

  6. 新しいパスワードを二度入力し、 OK を押して 設定を反映します。

  7. あとは with ファイル+終了 を選択し、設定ダイアログを終了します。


openSUSE セキュリティガイド 13.1