Windows Server 2019をドメインコントローラーとして運用する際、パスワードポリシーを適切に設定することで組織全体のセキュリティを大きく高めることができます。特に最小文字数の制限を強化することで、単純なパスワードや総当たり攻撃への耐性を高められるため、多くの企業や団体で導入が検討されています。本記事では、標準のドメインポリシーでは14文字以上に設定できないという制限を乗り越え、きめ細やかなパスワード ポリシー(Fine-Grained Password Policies)を使って柔軟なパスワード要件を実現する方法を詳しく解説します。
パスワードポリシーを強化する重要性
企業のシステムやネットワークに不正アクセスされると、機密情報の漏えい、サービス停止、業務の混乱など深刻な被害を受ける可能性があります。パスワードは最初の防御ラインといえるため、セキュリティ強度を高めるには以下のような対策が必須です。
- 容易に推測されない複雑なパスワードを使用する
- 定期的にパスワードを変更する
- 複数サイトやサービスで同じパスワードを使い回さない
- 文字数を増やしブルートフォース攻撃への耐性を高める
Windows Server 2019では、グループポリシー経由でパスワード要件を設定できますが、既定のドメインポリシー(Default Domain Policy)などの標準機能では最小文字数を14文字以上にできない制約があります。より強固な設定を求める組織向けに、「Fine-Grained Password Policies」を活用する方法が提供されています。
既定のドメインポリシーの限界
標準GPOでの設定制限
Windows Serverのグループポリシー管理エディター(gpmc.msc)から「Default Domain Policy」を編集すると、パスワードに関する項目(パスワードの最小文字数や複雑さの要件など)が見つかります。しかし、この画面からは最小文字数を14文字以上に設定できないという制限があります。これはレジストリやActive Directoryスキーマ上の仕組みによるものです。
回避策としてのきめ細やかなパスワード ポリシー
Windows Server 2008以降、ドメインの機能レベルを適切に上げることで「Fine-Grained Password Policies(きめ細やかなパスワード ポリシー)」を利用できるようになりました。これにより、ドメインに所属するユーザーやグループごとに異なるパスワードポリシーを適用可能です。たとえば役職や部署、業務内容に合わせてポリシーを変え、より強固な運用が求められるグループに対して文字数の大きなパスワードを強制できます。
Fine-Grained Password Policiesの基礎知識
仕組み
Fine-Grained Password Policiesでは、ドメイン内に「Password Settings Object(PSO)」というオブジェクトを作成し、ユーザーやグループに直接リンクする形でパスワードポリシーを適用します。PSOには以下のような項目を指定できます。
- Minimum Password Length(最小パスワード長)
- Maximum Password Age(最大パスワード有効期間)
- Minimum Password Age(最短パスワード有効期間)
- Password Complexity Enabled(複雑性の要件)
- Password History Length(パスワードの履歴保持数)
- Lockout Threshold(アカウントロックアウトのしきい値)
- Lockout Observation Window(ロックアウトが解除されるまでの時間)
- Precedence(優先度)
これらの値を従来のGPOよりも柔軟に設定できるため、特定グループのみにパスワード強度を厳格化するといったことも実現しやすくなります。
優先度(Precedence)の仕組み
複数のPSOが同じユーザーやグループに適用される場合、Precedenceの数値が小さいほど優先されます。たとえばPrecedenceが1のPSOとPrecedenceが5のPSOが同じグループに適用されている場合は、Precedenceが1のPSOの設定が有効になります。
このため、ポリシーを複数作成するときは運用者が意図した優先順位でユーザーやグループに適用されるよう注意が必要です。
具体的な設定手順
ここではActive Directory Administrative Center(以下ADACと略称)を使った手順を中心に紹介します。代わりにActive DirectoryユーザーとコンピューターなどのツールやPowerShellを使って同様のことを行うことも可能です。
手順1: Active Directory Administrative Center(ADAC)を起動
- Windows Serverにログオンしたら、スタートメニューから「Active Directory Administrative Center」を検索し、起動します。
- 初回起動時は管理画面に少し時間がかかることがありますが、そのまま待ちましょう。
手順2: Password Settings Containerへ移動
- ADAC左ペインのツリーで自ドメインを選択します。
- ツリー上部または中央ペインで「System」もしくは「Configuration」の配下にある「Password Settings Container」を探します。
- バージョンや管理ツールによって表示位置が異なる場合がありますが、通常はドメイン直下か「System」配下に存在します。
- 「Password Settings Container」をクリックすると、中央ペインに既存のPSO(ない場合は空のリスト)が表示されます。
手順3: 新規PSOの作成
- 中央ペイン上で右クリックし、「新規(New)」→「Password Settings」を選択します。
- ダイアログが表示されたら、以下の項目を入力します。
| 項目 | 説明 |
|---|---|
| 名前(Name) | 作成するPSOの名前をわかりやすいものにします(例: “StrongPasswordPolicy_GroupA”) |
| Precedence | 優先度を数字で指定。1に近いほど優先度が高い |
| Minimum Password Length | 最小パスワード長。14文字以上など、希望の数値を設定 |
| Enforce Password History | パスワードの履歴保持数(推奨10~24程度) |
| Minimum Password Age / Maximum Password Age | パスワードの変更頻度・有効期限の設定 |
| Account Lockout Threshold 等 | アカウントロックアウトのしきい値やロック解除のタイミングなど |
- 設定を終えたら「Direct applies to」の欄から、このPSOを直接適用したいユーザーまたはグループを追加します。
- 最後に「OK」または「保存」をクリックすると、PSOが作成されます。
手順4: 適用状況の確認
新しいPSOを作成したら、きちんと反映されているかを確認しましょう。Windows PowerShellを使った確認方法が便利です。以下は代表的なコマンド例です。
# ドメイン内のすべてのPSO(Password Settings Object)を取得
Get-ADFineGrainedPasswordPolicy
# 指定ユーザーに適用される最終的なパスワードポリシーを取得
Get-ADUserResultantPasswordPolicy -Identity <ユーザーのSamAccountNameやUPN>
これらのコマンドでPSOの有無や詳細設定を確認できます。ユーザー単位の確認では、どのポリシーが実際に適用されているかが分かるため、複数のPSOが混在する環境でのトラブルシュートにも役立ちます。
PowerShellを用いたPSOの作成
GUI操作ではなく、すべてをPowerShellで行いたい場合は「New-ADFineGrainedPasswordPolicy」コマンドレットを使用できます。以下は典型的な例です。
New-ADFineGrainedPasswordPolicy `
-Name "StrongPasswordPolicy_GroupA" `
-Precedence 1 `
-MinPasswordLength 16 `
-PasswordHistoryCount 24 `
-MaxPasswordAge (New-TimeSpan -Days 60) `
-MinPasswordAge (New-TimeSpan -Days 1) `
-ComplexityEnabled $true `
-ReversibleEncryptionEnabled $false `
-LockoutDuration (New-TimeSpan -Minutes 30) `
-LockoutObservationWindow (New-TimeSpan -Minutes 30) `
-LockoutThreshold 5
PSOをユーザーやグループに適用するには「Add-ADFineGrainedPasswordPolicySubject」を使います。たとえばグループ「GroupA」に対してPSOを適用するコマンドは下記の通りです。
Add-ADFineGrainedPasswordPolicySubject `
-Identity "StrongPasswordPolicy_GroupA" `
-Subjects "CN=GroupA,OU=YourOU,DC=YourDomain,DC=local"
これらのコマンドをスクリプト化しておけば、自動化や大量のユーザー・グループへの一括適用が可能です。
運用上のベストプラクティス
優先度とポリシー設計
複数のPSOが同じユーザーに適用される場合、Precedenceの小さいPSOが優先される点を押さえておきましょう。たとえば、より強力なパスワード要件を課したい部署にPrecedenceを小さいPSOを割り当てるといった設計を行うことで、運用ルールを明確化できます。
また、運用中に追加要件が発生して新しいPSOを作るときは、他のポリシーとの整合性を確かめながら設定を行いましょう。
ドメイン機能レベルの確認
Fine-Grained Password Policiesを使用するには、ドメイン機能レベルを「Windows Server 2008」以上にする必要があります。Windows Server 2019で新規構築されたドメインであれば問題ありませんが、Windows Server 2003からのアップグレード環境などでは、ドメイン機能レベルが古いままの場合があります。ドメイン機能レベルを上げると下位互換性の問題が生じる場合があるため、事前の調査と検証が必要です。
設定のテストと段階的適用
新しいPSOを導入する前に、テスト用のユーザーアカウントやテスト用のグループを用意し、問題なく適用されるかを検証しましょう。実運用アカウントでいきなり厳しいパスワードルールが適用されると、パスワード変更のタイミングで混乱が生じ、サポート窓口への問い合わせが増える恐れがあります。
段階的に適用範囲を拡大し、ユーザーに適切な周知を行いながら運用することが望ましいでしょう。
ロックアウトポリシーと併用する重要性
パスワードの最小文字数を大きくしても、総当たり攻撃への対策が不十分であれば、長い時間をかけて攻撃される可能性があります。そこで「Account Lockout Threshold」や「Lockout Duration」などを設定し、一定回数のログオン失敗でアカウントがロックされる仕組みと併用すると、セキュリティをさらに強化できます。
ただし、ロックアウトポリシーを厳しすぎる設定にすると、誤入力やユーザーのパスワード忘れなどで生産性が低下するおそれもあるため、バランスを見ながら適切な値を選択しましょう。
トラブルシューティングのヒント
ポリシーが意図したユーザーに適用されない
- グループのメンバーシップを再確認しましょう。ユーザーがグループに正しく属していない、または別のグループにも所属している可能性があります。
- PSOのPrecedenceが想定と逆になっているかもしれません。複数のPSOが競合している場合、最も小さい数値のPSOが優先されます。
パスワード変更画面でエラーが発生する
- ドメイン機能レベルが適切に上がっているか確認します。
- PSOに設定した最小文字数や複雑性がユーザーに周知されていない場合もあるため、ガイドラインやツールチップなどで利用者に注意を促すと良いでしょう。
- パスワードの複雑性要件(英字大小、数字、記号など)が従来と変わったことで、利用者が従来のパターンでパスワードを更新しようとして弾かれるケースがあります。新しいルールをしっかり周知しましょう。
PowerShellコマンドがエラーを返す
- モジュールやSnap-inが正しくインポートされているかを確認します。
Import-Module ActiveDirectoryなどが必要な場合があります。 - コマンド実行時に必要な管理者権限でPowerShellを起動していない可能性もあります。ドメインコントローラー上で管理者として実行しましょう。
- コマンドのパラメータ名が誤っている場合もエラーが発生します。よく似たパラメータをタイプミスしていないかチェックしてみてください。
より強固なパスワードを運用するためのポイント
- パスフレーズの導入:単語をつなげた「パスフレーズ」によって文字数を増やしつつ覚えやすさを向上させる方法も有効です。「MyDogEatsPizzaEveryMorning」のように、長くても覚えやすく、機械的に破られにくいパスワードをユーザーに推奨すると効果的です。
- 二要素認証(MFA)の活用:パスワードが強固でも、フィッシングや内部犯行によって漏えいしてしまうリスクはゼロではありません。可能であればAzure AD Multi-Factor Authenticationなどの多要素認証ソリューションを導入し、さらに堅固な認証基盤を構築しましょう。
- 監査ログの分析:失敗したログオン試行回数やロックアウトイベントが頻発する場合、外部攻撃や内部の入力ミスが起こっている可能性があります。セキュリティログやイベントビューワーを定期的に確認し、異常を早期に検知できる体制を整えると安心です。
まとめ
Windows Server 2019のドメインコントローラー環境でパスワードの最小文字数を14文字以上に設定するには、標準のドメインポリシーではなくFine-Grained Password Policiesを利用する必要があります。PSO(Password Settings Object)を作成・設定し、ユーザーやグループに直接適用することで、柔軟かつ強固なパスワード要件が実現できます。
複数のPSOが競合する場合の優先度の設定や、ドメイン機能レベルの要件に留意しながら、実際の業務に合わせたポリシーを定義することがポイントです。また、厳格化したパスワードポリシーは運用の混乱を引き起こす恐れがあるため、テストや段階的導入、利用者への周知徹底が欠かせません。併せてロックアウトポリシーや多要素認証を導入すれば、さらに高水準のセキュリティ対策を行えます。
システム管理者としては、単にポリシーを「設定して終わり」にするのではなく、継続的な運用状況の監視とユーザーエクスペリエンスの最適化にも注力しながら、セキュアで安定した認証基盤を目指していきたいところです。

コメント