HN 日本語サマリー

← 一覧へ戻る
セキュリティ

Active Directoryにおける「ゾンビアカウント」の狩猟

Hunting 'Zombie Accounts' in Active Directory (fabian.fyi)

11 pointsby optimiz1 コメント

要約

Active Directory環境において、無効化されているにもかかわらず削除されずに残り続ける「ゾンビアカウント」は、セキュリティリスクとなります。これらのアカウントは、過去のアクセス権限を保持している可能性があり、悪用される恐れがあります。この記事では、ゾンビアカウントを特定し、クリーンアップするための戦略とツールについて解説しています。

全文翻訳

Active Directoryにおける「ゾンビアカウント」の狩猟

Active Directory環境では、無効化されたアカウントが削除されずに残り続けることがあります。これらは「ゾンビアカウント」と呼ばれ、セキュリティ上のリスクとなります。これらのアカウントは、過去のアクセス権限を保持している可能性があり、悪意のあるアクターによって悪用される可能性があります。

この記事では、ゾンビアカウントを特定し、クリーンアップするための戦略とツールについて解説します。

ゾンビアカウントとは?

ゾンビアカウントとは、Active Directoryで無効化されているにもかかわらず、削除されずにシステム内に残っているユーザーアカウントのことです。これらのアカウントは、退職した従業員、一時的な契約社員、またはサービスアカウントなど、もはや必要とされていないアカウントであることが多いです。

ゾンビアカウントが問題となる理由は以下の通りです。

  • セキュリティリスク: 無効化されていても、アカウント情報が残っているため、攻撃者によって悪用される可能性があります。例えば、パスワードリセット機能などを介して不正に有効化されるリスクが考えられます。
  • コンプライアンス違反: 多くの組織では、アカウント管理に関するコンプライアンス要件があり、不要なアカウントの削除が求められます。
  • 管理の複雑化: 不要なアカウントが増えると、Active Directoryの管理が複雑になり、正規のアカウントとの区別がつきにくくなります。

ゾンビアカウントの特定方法

ゾンビアカウントを特定するには、いくつかの方法があります。

1. PowerShellスクリプトの使用

PowerShellは、Active Directoryを管理するための強力なツールです。以下のスクリプトは、特定期間(例: 90日以上)無効化されているアカウントを検索します。

$InactiveDays = 90
$Date = (Get-Date).AddDays(-$InactiveDays)

Get-ADUser -Filter {Enabled -eq $False -and LastLogonDate -lt $Date} -Properties LastLogonDate, SamAccountName, Name | Select-Object Name, SamAccountName, LastLogonDate

このスクリプトは、LastLogonDateプロパティを使用して、アカウントの最終ログオン日時を確認します。ただし、LastLogonDateはドメインコントローラー間でレプリケートされないため、正確な最終ログオン日時を把握するには、すべてのドメインコントローラーでクエリを実行し、最も新しいLastLogonTimestampを確認する必要があります。

より正確な最終ログオン日時を取得するには、以下のスクリプトが役立ちます。

$InactiveDays = 90
$MaxDate = (Get-Date).AddDays(-$InactiveDays)

Get-ADUser -Filter {Enabled -eq $False} -Properties LastLogonDate, SamAccountName, Name, LastLogonTimestamp | ForEach-Object {
    $user = $_
    $lastLogon = $null
    $domainControllers = Get-ADDomainController -Filter *
    foreach ($dc in $domainControllers) {
        $currentLogon = $user.LastLogonTimestamp.ToDateTime()
        if ($lastLogon -eq $null -or $currentLogon -gt $lastLogon) {
            $lastLogon = $currentLogon
        }
    }
    if ($lastLogon -lt $MaxDate) {
        [PSCustomObject]@{ 
            Name = $user.Name
            SamAccountName = $user.SamAccountName
            LastLogon = $lastLogon
        }
    }
}
2. サードパーティ製ツールの利用

Active Directory管理用のサードパーティ製ツールの中には、ゾンビアカウントの検出・管理機能を備えているものがあります。これらのツールは、より高度なフィルタリングやレポート機能を提供することがあります。

ゾンビアカウントのクリーンアップ

ゾンビアカウントを特定したら、以下の手順でクリーンアップを行います。

  1. 確認: アカウントが本当に不要であることを確認します。退職した従業員のアカウントであれば、人事記録などを参照して確認します。
  2. 無効化の再確認: スクリプトで検出されたアカウントが既に無効化されていることを確認します。もし有効な場合は、その理由を調査します。
  3. 削除: 不要であることが確認されたアカウントは、削除します。削除する前に、念のためアカウントの情報をバックアップしておくと安心です。

注意: アカウントを削除する際は、そのアカウントが他のシステムやサービスで使用されていないか、十分に確認してください。不明な場合は、削除前に一定期間、無効化して様子を見ることをお勧めします。

まとめ

Active Directoryにおけるゾンビアカウントは、見過ごされがちなセキュリティリスクです。定期的なスキャンとクリーンアップを実施することで、セキュリティ体制を強化し、コンプライアンスを維持することができます。PowerShellスクリプトや専門ツールを活用し、安全なActive Directory環境を維持しましょう。