Active Directory内の機密データはどこに保存しますか?


11

私は基本的に、Active Directory内のOctetString属性のいずれかに秘密キー(ハッシュ)を格納しています。

私の質問は、どの属性がデフォルトで安全であり、そこにプライベートデータを保持するのが理にかなっているのですか?この値は、現在のADパスワードと同様に、管理者でさえも(可能であれば)アクセスできないようにするパスワードと同様に考える必要があります。

以下は、Windows 2008R2 + Exchange 2010ドメインでデフォルトで有効になっている属性のリストの始まりです。

代替テキスト

更新:

デフォルトでドメイン内のすべてのユーザーに「読み取り」権限を公開しないオクテット文字列属性を知っている人はいますか?私はハッシュを公開しないで、ハッシュに基づいてレインボーテーブルを作成できるようにしたくありません。

回答:


11

ADにデータを保存するときにほとんどの人が直面する問題は

  • スキーマの拡張(多くの場合、これは会社の政治に影響を及ぼします)

  • 既存の属性を使用してアクセス許可を編集する(これにより、DITとその後のレプリケーションサイズが増加するAD / ACL膨張が発生します)

代替案があります...私の心の中での最良の選択は、ADのこのあまり知られていない機能を使用して既存の属性を取得し、機密としてフラグを立てることです。

ここにプロセスの詳細があります


Active Directoryのデフォルトのアクセス許可では、認証されたユーザーがすべての属性に対して一括読み取りアクセス権を持っています。これは、誰もが読まないように保護する必要がある新しい属性を導入することを困難にします。

これを軽減するために、Windows 2003 SP1では、属性を機密としてマークする方法が導入されています。この機能は、スキーマの属性のsearchFlags値を変更することで実現されました。SearchFlagsには、属性のさまざまなプロパティを表す複数のビットが含まれています。たとえば、ビット1は属性にインデックスが付けられていることを意味します。新しいビット128(7番目のビット)は、属性を機密として指定します。

注:このスキーマは、base-schema属性(common-nameなどの「top」から派生したもの)には設定できません。LDPを使用してオブジェクトを表示し、オブジェクトのsystemFlags属性を確認することで、オブジェクトが基本スキーマオブジェクトであるかどうかを確認できます。10番目のビットが設定されている場合、それは基本スキーマオブジェクトです。

ディレクトリサービスは、読み取りアクセスチェックを実行するときに、機密属性をチェックします。存在する場合、READ_PROPERTYアクセスに加えて、ディレクトリサービスは属性またはそのプロパティセットに対するCONTROL_ACCESSアクセスも必要とします。

デフォルトでは、管理者のみがすべてのオブジェクトへのCONTROL_ACCESSアクセス権を持っています。したがって、管理者だけが機密属性を読み取ることができます。ユーザーは、この権利を任意の特定のグループに自由に委任できます。これは、DSACLsツール、スクリプト、またはLDPのR2 ADAMバージョンで実行できます。これを書いている時点では、ACL UIエディターを使用してこれらの権限を割り当てることはできません。

属性を機密としてマークし、属性を表示する必要があるユーザーを追加するプロセスには、3つのステップがあります。

  1. 機密としてマークする属性の決定、または機密としてマークする属性の追加。

  2. 機密としてマークする

  3. 正しいユーザーにControl_Access権限を付与して、属性を表示できるようにします。

詳細と手順については、次の記事を参照してください。

922836 Windows Server 2003 Service Pack 1で属性を機密としてマークする方法

http://support.microsoft.com/default.aspx?scid=kb;EN-US;922836


1
ダウンボーター:なぜこれが-1になったのですか?
goodguys_activate

機密ビットはパフォーマンスを大幅に低下させる可能性があると聞きました。それをサポートまたは否定するドキュメントを知っていますか?
ニック

@Nic投稿として質問...最初に聞いた
goodguys_activate

2

この目的のために、常に新しいフィールドでActive Directoryを拡張できます。

これは、新しい属性を追加し、属性のアクセス許可を制限する手順を含むドキュメントです。


ありがとうございました。私の目標は、クライアントがこれを行うことに偏執的ではないので、可能であれば既存の属性を使用することです...彼らはそのアプローチにあまりにも多くのFUDを持っています...可能であれば、何かネイティブなものを期待しています。
goodguys_activate

彼らの抵抗を理解することはできますが、必要に応じて使用および保護されていない適切な候補属性があるとは思いません。
Zoredache

1

この値は、現在のADパスワードと同様に、管理者でさえも(可能であれば)アクセスできないようにするパスワードと同様に考える必要があります。

これは正しくありません、それも間違っていません。パスワードは保存されません。ハッシュは保存され、ドメイン管理者はそれにアクセスできます。実際、必要に応じて、パスワードを可逆暗号化で保存するようにADを構成することもできます。

ADでは、ドメイン管理者を除外することはできません。権利を削除するか、さらには拒否すると、ドメイン管理者が所有権を取得して自分自身を追加し直すことができます。これは、OUの管理者が上位の管理者を取り返しのつかないようにロックアウトできるNovellのNDSとは対照的です。

最善の方法は、既存の属性または新しい属性を使用して、アクセスを制限することです。管理者を除外し、属性の監査を有効にして、アクセスや権限の変更がログに記録されるようにすることができます。


アプリケーションに固有のパスワードの一方向ハッシュを保存しています。
goodguys_activate 2010

これは、質問にはまったく答えないため、コメントとして属しています。
MDMarra

マーク-私の最後の2つの文は、「Active Directory内の機密データをどこに保存しますか?」という質問に対する私の答えです。
mfinni

@Maker-それは理にかなっており、@ Zoredacheが上に投稿したリンクと非常によく似たシナリオです。それがネイティブの答えです。既存の属性または新しい属性を使用して、アクセスを制限します。クライアントがセキュリティに重点を置いている場合、私の追加の提案は、その属性の監査も有効にすることです。
mfinni

@Maker-本当に一方向のハッシュであれば、とにかくすでにかなり安全ですよね?
mfinni
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.