ADに基づくWindowsドメインのGNU / Linuxファイルサーバーの認証。 パート1

WindowsドメインでのSamba認証





1.はじめに。 既存の出版物の概要


最近、システム管理者は、エンタープライズネットワーク内の異種オペレーティングシステムを結合するタスクに直面しています。 特に、問題の1つは、Windowsワークステーションおよびさまざまなバージョンのサーバーと組み合わせたGNU / Linuxサーバーの使用です。

通常、小規模なエンタープライズネットワークには、Windows 7オペレーティングシステム、Windows Server 2008 R2に基づくドメインコントローラー、ルーター、およびいくつかの専用サーバーを備えた約20〜30台のワークステーションが含まれます。 さらに、Windows Server 2008 R2ドメインにそのようなGNU / Linuxベースのサーバーを含めることと、そのようなサーバーを操作する手順を検討します。

最初のタスクとして、Windows Server 2008 R2ドメインでSambaファイルサーバーを編成することを検討してください。 Sambaに基づいてファイルサーバーを作成する問題は、さまざまなフォーラムでの多くの記事や出版物の主題でした。 例は、プロジェクトの公式ウェブサイトwww.samba.org/samba/docsで公開されているSambaドキュメントです 。 Jay Ts、Robert Eckstein、David Collier-Brownによって書かれ、O'Reilly&Associatesから出版された有名な著書Using Sambaの第2版からのさまざまな資料があります。 2007年にリリースされたこの本の第3版は、このサイトではまだ利用できません。 注目すべきは、サイトに提示されているHOWTOガイドと構成例の優れたセットです。

Sambaの作業に関する追加情報は、主要なLinuxディストリビューションのメーカーのサイトで入手できます。

オンラインおよび印刷出版物で公開されているさまざまな著作権資料に注目する価値があります。 例えば、Linux Formatマガジン(http://wiki.linuxformat.ru/index.php/LXF123:Samba)のAlexander Farkhutdinovによる記事、実験愛好家のブログ(http://www.k-max.name/)および多くの記事www.opennet.ruhabrahabr.ruなどのよく知られたリソースについて 。 読者は「Windowsドメインにsambaを含める」または「WindowsドメインにLinuxを含める」というフレーズを検索することでこれを確認し、数十万のリンクを取得できます。

この記事の目的は、Windowsドメイン構造にGNU / Linuxサーバーを含めることに関する特定の推奨事項を提供するだけでなく、小規模企業のネットワークをエミュレートするテストネットワークの運用を検討することでもあります。 このようなネットワークでの作業のほとんどの側面を検討し、そのすべての要素の相互作用の組織に関する推奨事項を提供しようとします。



2.テストネットワーク、Windowsドメインの説明


テストネットワークを整理するには、ESXiハイパーバイザーアーキテクチャに基づいて実装された仮想環境VMware VSphere 5を使用します。 ただし、他の同様のソリューションと同様に、確立されたMicrosoft Hyper-Vを使用できます。

テスト環境はActive Directoryベースのドメインネットワーク(AD DS)であり、MS Windows Server 2008 R2 EEを実行する2つのインフラストラクチャサーバーと1つのクライアントマシン-MS Windows 7 Professionalで構成されます。 192.168.7.0/24サブネットのIPアドレスを使用します







ドメイン名-LAB.LOCALドメインコントローラー-LAB-DC1.lab.local Forefront Threat Management Gateway(TMG)2010サーバー-LAB-TMG.lab.localクライアント-LAB-CL1 .lab.local

LAB-DC1にインストールされた役割





ご注意

AD DSドメインサービスのインストールは、記事technet.microsoft.com/en-us/library/dd378801(v = ws.10).aspxの推奨事項に従って実行されます。



3. Windowsドメインの承認メカニズム








SMBプロトコルの非常に重要な部分は、認証方法です。 クライアント側とサーバー側でのそれらの不整合は、かなりの数のネットワークアクセスの問題を引き起こします。 合計4つの主要な認証方法があります。

ソース-wiki.linuxformat.ru/index.php/LXF123:Samba



クリアテキスト

明らかな理由により、この認証方法は最も単純で最も信頼性が低いものです。 この認証は、Sambaの古いバージョンで使用されていました。 現在のバージョンでは、パスワードはデフォルトで暗号化されています。 暗号化を無効にするには、smb.confファイルの暗号化されたパスワードパラメータをfalseに変更する必要があります。 この方法は、MS DOSのクライアントおよびWindows NTの古いバージョンでも使用されていました。 既にWindows 95(およびそれ以降のバージョン)でアクティブにするには、レジストリを編集する必要があります。 Windows 2000以降では、ローカルセキュリティポリシーを介してこの認証方法を有効にすることができます。 これを行うには、「暗号化されていないパスワードをサードパーティのSMBサーバーに送信する」スイッチの値「はい」を設定する必要があります。 繰り返しますが、この方法の使用は今日正当化されておらず、非常に推奨されていません。



LMメソッド(LANマネージャー)

Windows 95/98で使用されます。 SambaはデフォルトでLM認証を許可します。 Windows NT 4.0以降を実行しているリソースへのアクセスに問題がある場合は、Windowsサーバーのローカルセキュリティポリシーを調整する必要があります。「LAN Manager認証レベル」スイッチを「LMおよびNTLM応答の送信」位置に設定します。



NTLMメソッド

Windows NT 3.5に登場しました。 現在、いくつかの修正および改善された形式で使用されています-NTLMv2。 NTLMv2は、「要求/応答」方式で動作します。 この方法の興味深い機能は、サーバーがパスワードをオープンな状態だけでなく、暗号化された形式でも保存しないことです。 ハッシュのみが保存されますが、ネットワーク経由では送信されません。これはセキュリティの観点から非常に優れています。

Windows 95/98は、ディレクトリサービスクライアントをインストールした後、NTLMv2で動作します。 Sambaはこの認証方法もサポートしています。



Kerberosサービスを使用する



Kerberosは、ユーザーの認証と承認を実行する強力なシステムであり、Active Directory(AD)ドメインでメインとして使用されます。 また、イントラネットトラフィックの暗号化も提供します。 Kerberosプロトコルは、クライアントとサーバー間の接続を確立する前にクライアントとサーバーの相互認証のメカニズムを提供します。プロトコルは、クライアントとサーバー間の最初の情報交換が安全でない環境で行われ、送信されたパケットを傍受および変更できることを考慮します。 つまり、このプロトコルは、インターネットや同様のネットワークでの使用に最適です。 3番目のバージョンから、SambaはActive Directoryドメインの本格的なクライアントになることができます。

この記事はLinux上のSambaサーバーのADドメインへの統合に専念しているため、この方法に特に注意を払います。つまり、Kerberosを使用する必要があるということです。

Windows Server 2008 R2では、キー配布センター(KDC)はドメインサービスとして実装されています。 Active Directoryをアカウントのデータベースとして使用します。 さらに、一部のユーザーデータは、グローバルカタログ(グローバルカタログ)から取得されます。

Active Directoryと同様、KDCはすべてのドメインにあります。 両方のサービスは、ドメインコントローラーにインストールされているLSA(ローカルセキュリティ機関)サブシステムによって自動的に開始されます。 これらは、このマネージャーのプロセス空間で動作します。 これらのサービスはいずれも停止できません。 KDCおよびActive Directoryへの継続的なアクセスを確保するために、Windowsは各ドメインに複数のピアドメインコントローラーを展開する機能を提供します。 同時に、このドメインのKDCサービス宛ての認証およびチケット発行の要求は、どのドメインコントローラーでも受け入れられます。

KDC(キー配布サービス)は、認証サービス(AS)とチケット許可サービス(TGS)の2つのサービスを組み合わせた単一のプロセスです。 一般的に、プロセスは次のとおりです。

ネットワークに入ると、クライアントはユーザーアカウントがあるドメインの認証サービスにアクセスし、ユーザー名とパスワードを提供します。 それに応じて、ユーザー名とパスワードが正しい場合はもちろん、彼女はTGTチケット-チケット許可チケットをクライアントに渡します。 その後、TGSはゲームに参加します。 このサービスは、ドメイン内の他のサービスまたは信頼されたドメインのチケット発行サービスへのアクセスのためにチケットを発行します。 TGSサービスに連絡するには、顧客はまずサービスアカウントが存在するドメインのチケット発行サービスに連絡し、TGTチケットを提示して必要なチケットを要求する必要があります。 クライアントがこのチケット発行サービスへのアクセスを提供するTGTチケットを持っていない場合、紹介プロセスを使用できます。 このプロセスの開始点は、ユーザーアカウントがあるドメインのサービスであり、終了点は、必要なサービスのアカウントがあるドメインのチケット発行サービスです。

多くのソースでは、チケットは「チケット」、「領収書」、さらには「委任」と呼ばれます。 しかし、意味はこれから変わりません-それはサービスを使用する権利を確認する「ドキュメント」です。

Windows環境では、Kerberosポリシーはドメインレベルで定義され、KDCドメインサービスによって実装されます。 ドメインセキュリティポリシー属性のサブセットとしてActive Directoryに保存されます。 デフォルトでは、Kerberosポリシーの変更はドメイン管理者グループのメンバーに制限されています。

Kerberosポリシーは以下を提供します。

ユーザーチケットの最大有効期間。 ここでの「ユーザーチケット」とは、チケット発行チケット(TGTチケット)を意味します。 値は時間単位で設定され、デフォルトは10時間です。

ユーザーチケットを更新できる最大時間。 日で設定されます。 デフォルトは7日です。

サービスチケットの最大有効期間。 ここでの「サービスチケット」とは、セッションチケットを意味します。 このパラメーターの値は10分以上である必要がありますが、ユーザーチケットの最大有効期間の値よりも短くする必要があります。 デフォルトでは、10時間です。

コンピュータクロックの同期の最大許容値。 分単位で示されます。 デフォルトは5分です。



ユーザーログイン時の制限の確認(ユーザーログオンの制限を適用)。 このアイテムがチェックされている場合、KDCサービスはセッションチケットの各リクエストを分析し、このユーザーがローカルにログオンする権利を持っているか(ローカルでログオンする特権)、またはネットワーク経由で要求されたコンピューターにアクセスするか(ネットワーク特権からこのコンピューターにアクセスする)を確認します。 このような検証には余分な時間がかかり、ネットワークサービスの提供が遅くなる可能性があるため、管理者にはそれを無効にする権利が与えられます。 デフォルトでは有効になっています。

すぐに言及する価値があるのは、遭遇する可能性のあるいくつかの落とし穴です。 まず第一に、クライアント側とサーバー側のクロックの不一致は数分以内でなければなりません(上記のように、デフォルトでは5つ以内)。そうでない場合、サーバーはクライアントの受信を無効と認識し、アクセスを拒否します。 この場合、クライアントWindowsマシンでは、「アクセスが拒否されました」というメッセージがすぐに表示されるか、Windowsは目に見える結果なしに何度もログインパスワードを要求します。 次に、Active Directoryのコアは、DNS、LDAP、SMB、Kerberosの4つのテクノロジーであることを忘れないでください。 それらはすべてドメインの一部として機能しますが、それぞれが独立したサービスとしてアクセスできます。 このようなサービスの独立性にもかかわらず、少なくとも1つのサービスが正しく動作しないと、クライアントをドメインに含めることができなくなります。 DNSサーバー、クライアント名、またはドメイン名がクライアント側で誤って指定されている場合、ADドメインには含まれないという事実に特に注意する必要があります。 この理由は、Active Directoryドメイン内のDNSサーバーが、KDCサーバーとLDAPサーバーの場所を示すSRVレコードを格納しているという事実です。



4. GNU / Linuxに必要なパッケージ


Xfceグラフィカルシェルを使用してUbuntu Linux 10.04.4 LTS 64を実行しているサーバーにOpenLDAP、Kerberos、およびSambaを展開するには、以下で説明するすべてのパッケージが必要です。 また、OpenLDAP、Kerberos、およびSambaの公式ドキュメントに従って、インストールに必要なプレインストールパッケージに関する情報も提供します。



OpenLDAPをビルドするには、次のパッケージが必要です。







必要なパッケージは、sudo apt-get install package_nameコマンドでインストールできます。

Oracle Berkeley DBバージョン4.4-4.8または5.0-5.1も必要です。 ソースからコンパイルする方法については、OpenLDAPの構築について説明するときに少し説明します。



Kerberosをビルドするには、flexパッケージとbisonパッケージ(sudo apt-get install flex bison)が必要です。そうしないと、ビルド中に「yacc-command not found」エラーが発生します。 それから、g ++(sudo apt-get install g ++)が必要です。



Sambaが構築されるまでに、OpenLDAPとKerberosの両方をインストールする必要があります。その場合、追加のパッケージは必要ありません。

gcc、g ++、flex、bisonパッケージをインストールするには、GNU / Linuxディストリビューションにインストールされているパッケージマネージャーを使用できます。 通常、システムの初期インストール中にこれらのパッケージをマークするだけです。

5.ソースからパッケージをビルドします。


そのため、ほとんどの部分に移ります-ソースコードからのパッケージのアセンブリ。 もちろん、ソースからビルドすることは、最新のLinuxディストリビューションの一般的な慣行ではなく、より多くの研究対象です。 一般に、このプロセスはすべてのLinuxディストリビューションに共通しているため、ソースからのアセンブリを検討します。 将来的には、やや単純なリポジトリを使用します。

OpenLDAPビルド

まず、OracleサイトからOracleサイトからBerkeley DBソースファイル(以降-BDB)をダウンロードします。 www.oracle.com/technetwork/database/berkeleydb/downloads/index-082944.htmlこのケースでは、すべてがBDB 4.8で機能しました。

BDBをコンパイルしてインストールします。

tar xvzf db-4.8.30.tar.gz cd db-4.8.30/build_unix ../dist/configure #    - /configure --help make sudo make install
      
      





OpenLDAPソースをダウンロードwww.openldap.org/software/download

私たちの場合、バージョン2.4.30でした。

OpenLDAPをコンパイルしてインストールします。

 tar -xzvf openldap-2.4.30.tgz cd openldap export CPPFLAGS="-I/usr/local/BerkeleyDB.4.8/include -D_GNU_SOURCE" export LDFLAGS="-L/usr/local/BerkeleyDB.4.8/lib" export LD_LIBRARY_PATH="/db-4.8.30.NC/build_unix/.libs/" ./configure --with-tls=no #      — ./configure --help make depend make make test #    OpenLDAP.    ,    . make install
      
      







それがOpenLDAPのすべてです。 最後に、私は最も一般的な間違いのいくつかを言及したいと思います:

configure:エラー:Berkeley DBバージョンの不一致解決策:上記のように、LDFLAGSおよびLD_LIBRARY_PATH変数をエクスポートしなかった可能性が高いです。

getpeereid.c:52:エラー: 'peercred'のストレージサイズが不明ですglibcとの非互換性を回避するために必要な-D_GNU_SOURCEフラグを忘れた可能性が高いです。

そして、もう一度慎重にシステムにインストールされている必要なパッケージかどうか、全てをご確認ください。

Kerberosビルド



Kerberosのダウンロードweb.mit.edu/kerberos/dist/index.html現在のリリースを使用しました。

その後、アンパック、組み立て、およびプログラムをインストールします。



t
 ar -xzvf krb5-1.10.1.tar.gz cd /krb5-1.10.1/src ./configure --with-ldap=yes #,  ,  .  —    ./configure —-help. make make install make check #   .
      
      





「yacc-command not found」というエラーが表示された場合は、flexパッケージとbisonパッケージのインストールを忘れていました。

sudo apt-get flex flexのインストール

「g ++-コマンドが見つからない」場合は、g ++コンパイラを忘れていました。

 sudo apt-get install g++
      
      





組立サンバ

www.samba.org/samba/downloadからSambaソースをダウンロードします。 最新バージョンが必要なので、samba-latest.tar.gzをダウンロードしてください。

Sambaを解凍、ビルド、インストールします。



 tar -xzvf samba-latest.tar.gz cd samba-3.6.3 cd source3 ./configure --with-ldap=yes --with-ads=yes make make install
      
      





ほとんどの場合、前の手順がすべて正しく実行されていれば、Sambaのアセンブリとインストールは問題なく動作します。 そうでない場合 - すべての最初は、すべての依存が正しくインストールされているかどうか確認してください。 Sambaが何かを見逃した場合、彼女はそれを明確にします。

もちろん、ソースからすべてのパッケージを組み立てるのは、効率の悪い面倒な手順です。 したがって、GNU / Linuxディストリビューションのパッケージマネージャーを使用して必要なパッケージをインストールすることをお勧めします。

これで、すべてのパッケージがインストールされ、構成に移ります。



All Articles