🛡️ Active Directory Health Check v2.6

🇩🇪 Deutsch | 🇬🇧 English
Active Directory 環境の健全性とセキュリティを自動的に検証するための包括的な PowerShell スクリプト。ベストプラクティス評価、色分けされた HTML レポート、CSV エクスポートを備えています。
🇩🇪 Deutsch
📑 目次
✨ 機能
- 🎯 54 のベストプラクティスチェックをテーマ別に分類(DC 基本、セキュリティ、構造、監視)
- 🖼️ モダンな WPF GUI(ライトテーマ)。グループ選択、スイートボタン、出力パス選択に対応
- 🎨 色分けされた HTML レポートとエグゼクティブダッシュボード(OK / WARN / 重大 / INFO)
- 📊 CSV エクスポート:すべてのチェック結果
- 🖥️ 対話型スタートメニュー:コンソール運用時のフォールバック
- ⚡ パラメータベースの実行:スケジュールタスク / 自動化向け
- 📁 自由に選択可能な出力パス:GUI または
-OutputPath パラメータで指定
- 🔍 DCDiag の個別テスト解析(DE/EN 言語非依存)
- 🔄 ループバック検出:ローカル DC 向け(FQDN の代わりに
localhost を使用)
- 📡 Ping スキップロジック:到達不能な DC では WinRM にフォールバック
- 🌍 言語非依存:Well-Known SID 経由
- 🗣️ 自動言語検出 & DE/EN 言語切替 – WPF GUI でライブ切替可能、パラメータ
-Language de|en で上書き可能
- 📝 詳細なログ出力(
C:\ScriptLog)
- 🔧 モジュール式設計 - 個別のチェックを対象を絞って実行可能
📋 54 のチェック項目
🏗️ DC 基本インフラストラクチャ
| # | チェック | 説明 |
|---|
| 1 | DC システム情報 | OS、RAM、稼働時間、ハードウェア |
| 2 | サービス | NTDS、DNS、Netlogon、KDC、W32Time、DFSR |
| 3 | DCDiag テスト | すべての DC 診断テストの詳細解析 |
| 4 | レプリケーション(パートナー) | DC パートナーごとのステータス |
| 4b | レプリケーションエラー(フォレスト) | フォレスト全体のレプリケーション問題 |
| 5 | FSMO 役割 | 5 つすべての FSMO 役割所有者 |
| 6 | DNS 設定 | ゾーン、AD 統合、動的更新 |
| 7 | SYSVOL & NETLOGON | 到達可能性 |
| 8 | NTDS データベース | サイズ、空きディスク容量 |
🔒 セキュリティ: ネットワークプロトコル
| # | チェック | 説明 |
|---|
| 9 | TLS プロトコル(SCHANNEL) | SSL 2.0/3.0、TLS 1.0/1.1/1.2/1.3 |
| 10 | 暗号 & アルゴリズム | RC4、DES、MD5 などの弱い暗号 |
| 11 | SMB1 & SMB 署名 | WannaCry 対策、署名の強制 |
| 12 | NTLM / LAN Manager 認証レベル | LmCompatibilityLevel=5 ベストプラクティス |
| 13 | LLMNR / NetBIOS / WPAD | Responder 攻撃対策 |
| 14 | LDAP セキュリティ | 署名 + チャネルバインディング(ADV190023) |
| 15 | Windows ファイアウォール | 3 つのプロファイルすべてが有効か? |
👥 セキュリティ: アカウント & Kerberos
| # | チェック | 説明 |
|---|
| 16 | 特権アカウント | Domain/Enterprise/Schema Admins など |
| 17 | パスワードポリシー | 最小長、履歴、最大有効期間、複雑性、ロックアウト |
| 18 | Kerberos / krbtgt | パスワードの経過時間(ベストプラクティス: 180 日以下) |
| 19 | Kerberos 非制約委任 | ドメイン乗っ取りリスクの検出 |
| 20 | Kerberoasting リスク | SPN を持つユーザーアカウントを分析 |
| 21 | LSA 保護(RunAsPPL) | 資格情報ダンプ(Mimikatz)対策 |
🛡️ セキュリティ: システムハードニング
| # | チェック | 説明 |
|---|
| 22 | DC 上のプリントスプーラー | CVE-2021-34527(PrintNightmare) |
| 23 | セキュアブート証明書更新 | Windows UEFI CA 2023 の展開状況 |
| 24 | 証明書 | 有効期限の監視、EKU チェック |
🌐 AD 構造
| # | チェック | 説明 |
|---|
| 25 | AD サイト | サイトの概要 |
| 26 | AD サブネット | サブネットとサイトのマッピング |
| 27 | 信頼関係 | ドメイン/フォレスト信頼 |
| 28 | AD ごみ箱 | 機能の有効化状況 |
| 29 | Tombstone 有効期間 | ベストプラクティス: 180 日以上 |
| 30 | フォレスト/ドメインレベル | 機能レベル |
| 31 | GPO ヘルス | Sysvol/DS バージョンの不一致 |
👤 非アクティブアカウント
| # | チェック | 説明 |
|---|
| 32a | 非アクティブユーザー | 90 日以上ログインなし |
| 32b | 非アクティブコンピューター | 90 日以上ログインなし |
| 32c | パスワードが無期限 | フラグチェック |
📊 監視 & 運用
| # | チェック | 説明 |
|---|
| 33 | イベントログ評価 | System / Directory Service / DNS(過去 24 時間) |
| 34 | 時刻同期 | PDC + ドメイン DC |
| 35 | AD バックアップ状況 | repadmin /showbackup 経由 |
| 36 | インストール済みプログラム | DC ごとのインベントリ |
| 37 | Windows 更新プログラム | 直近 20 件の更新、経過時間評価 |
| 45 | インストール済み Windows 機能 | DC ごとのインストール済み役割 & 機能(ServerManager) |
| 46 | SMB 共有(Shares) | すべての共有(パス、アクセス許可、暗号化を含む) |
🧬 ID & DNS(新規)
| # | チェック | 説明 |
|---|
| 38 | SPN 重複 | 重複して割り当てられた SPN の検出(Kerberos 競合) |
| 39 | AS-REP Roasting リスク | Kerberos 事前認証なしのユーザー |
| 40 | AdminSDHolder / AdminCount ドリフト | 現在の保護グループメンバーシップなしで AdminCount=1 |
| 41 | 詳細なパスワードポリシー | FGPP の強度、ロックアウト、対象グループの割り当て |
| 42 | DNS ハイジーン(エージング / スカベンジング) | エージング/スカベンジング、逆引きゾーン、動的更新のリスク |
| 43 | LAPS 設定 | Local Admin Password Solution - 有効化状況、コンピューターカバレッジ(Server 2019 以降) |
| 44 | AES なしのアカウント | RC4 のみ、または AES 暗号化なしのアカウントを検出(セキュリティリスク) |
🎯 セキュリティ: 攻撃ベクトル 2025/2026
| # | チェック | 説明 |
|---|
| 47 | RC4 → AES 移行監査 | 2026 年の RC4 廃止前における AES なしアカウント(CVE-2026-20833)+ DC の KDC レジストリ |
| 48 | DCSync アクセス許可 | DC 以外のレプリケーション権限(パスワードハッシュ抽出リスク) |
| 49 | RBCD & 制約付き委任 | msDS-AllowedToActOnBehalfOfOtherIdentity および msDS-AllowedToDelegateTo(プロトコル移行を含む) |
| 50 | dMSA / BadSuccessor | Delegated Managed Service Accounts(Server 2025)と Superseding パターン |
| 51 | MachineAccountQuota | ms-DS-MachineAccountQuota(ベストプラクティス: 0) |
| 52 | 匿名 LDAP アクセス | PDC に対する匿名バインドテスト + dSHeuristics |
| 53 | SYSVOL 内の GPP/cpassword | GPP XML 内の平文で復号可能なパスワード(MS14-025) |
| 54 | Protected Users 監査 | すべての特権アカウントが Protected Users グループに含まれているか? |
💻 システム要件
- Windows Server 2016 以降
- PowerShell 5.1+
- RSAT / AD ツールがインストール済み:
- ActiveDirectory モジュール
- GroupPolicy モジュール
- DnsServer モジュール
- Domain Admin 権限を推奨
- すべての DC で WinRM が有効(または DCOM フォールバック)
- AD 接続性を持つ DC または管理サーバー上で実行
🚀 インストール
# Repository klonen
git clone https://gitlab.com/RoccoAmmon/Active-Directory-Health-Check.git
cd Active-Directory-Health-Check
# Skript ausführen (interaktiv)
.\AD_Health_Check.ps1
# Oder automatisiert (alle 54 Checks)
.\AD_Health_Check.ps1 -FullRun
⚙️ 使用方法
# Interaktive WPF-GUI (Standard)
.\AD_Health_Check.ps1
# Vollständiger Lauf ohne GUI (für Scheduled Tasks)
.\AD_Health_Check.ps1 -FullRun
# Vollständiger Lauf mit englischer Berichtssprache
.\AD_Health_Check.ps1 -FullRun -Language en
# Nur bestimmte Checks ausführen
.\AD_Health_Check.ps1 -OnlyChecks '22_PrintSpooler','19_Unconstrained'
# Ohne Interaktion
.\AD_Health_Check.ps1 -NoInteractive
# Eigenen Ausgabepfad angeben
.\AD_Health_Check.ps1 -OutputPath 'D:\Reports\AD'
🗣️ 言語 / Language
レポートの言語は起動時に自動的に検出され、必要に応じてパラメータで上書きできます。
- 自動言語検出: 起動時にオペレーティングシステムの言語から言語を判定します(
Get-UICulture)。ドイツ語の Windows 環境 → ドイツ語、英語の Windows 環境 → 英語、それ以外 → ドイツ語。
- WPF GUI の言語切り替え DE/EN: ライブで切り替え可能。すべての GUI テキスト、チェックタイトル、グループ名に即座に反映されます。
- パラメータ
-Language de|en: 自動検出を上書きします – 例えばスケジュールタスク用。
- 有効な値:
de、en – デフォルト: オペレーティングシステムの言語。
- 出力媒体: HTML レポート、コンソール出力、メニューは選択した言語で表示されます。CSV エクスポートの列名は技術的なままで、言語に依存せず変更されません。
# Beispiel: Vollständiger Lauf mit englischer Ausgabe
.\AD_Health_Check.ps1 -FullRun -Language en
📸 スクリーンショット
HTMLレポートのスクリーンショットは後日追加予定です。
⚙️ 設定
すべてのしきい値はスクリプト冒頭の変数ブロックで設定可能です:
| 変数 | デフォルト | 説明 |
|---|
InactiveDaysUser | 90 | ログインなしの日数 → ユーザーが非アクティブ |
InactiveDaysComputer | 90 | ログインなしの日数 → コンピューターが非アクティブ |
CertExpiryWarnDays | 60 | 証明書有効期限の警告 |
CertExpiryCritDays | 14 | 証明書有効期限のクリティカル |
KrbtgtMaxAgeDays | 180 | krbtgt パスワードの最大有効期間 |
BackupMaxAgeDays | 7 | バックアップ経過日数の警告 |
BackupCritAgeDays | 14 | バックアップ経過日数のクリティカル |
WUMaxAgeDaysWarn | 35 | Windows Update 経過日数の警告 |
WUMaxAgeDaysCrit | 60 | Windows Update 経過日数のクリティカル |
完全な設定リファレンス:Wiki → しきい値
📄 レポート出力