Active Directoryのユーザーの最終ログオン時間を検索する方法(ADUCを使用)

アクティブディレクトリユーザーの最終ログオン時間を見つける方法(ADUCを使用)。アクティブディレクトリは、多くのWindowsベースのネットワークの中心的なコンポーネントであり、システム管理者が管理するユーザーグループ、およびコンピューターのデータベースとして機能します。システム管理者の重要なタスクの1つは、アクティブディレクトリ内の非アクティブなユーザーアカウントを特定し、それらを削除してセキュリティを向上させ、ディレクトリ内の混乱を減らすことです。これを達成するために、管理者はアクティブディレクトリ内のユーザーの最終ログオン時間を見つける必要があります。これを達成するためには、アクティブディレクトリユーザーとコンピューターのコンソール、LDAPクエリ、およびPowerShellコマンドなどの複数の方法が存在します。このトピックでは、これらの方法を詳細に調査し、システム管理者がアクティブディレクトリ内のユーザーの最終ログオン時間を簡単に見つける方法を示します。

この目的を達成するためのいくつかの方法が存在します。アクティブディレクトリユーザーズアンドコンピューターズコンソール、LDAPクエリ、そしてPowerShellコマンドなどがそれにあたります。このトピックでは、これらの方法をより詳細に調べ、システム管理者がアクティブディレクトリのユーザーの最終ログオン時間を簡単に見つける方法を示します。

記事「アクティブディレクトリユーザーの最終ログオン時間を見つける方法(ADUCを使用)」に進むことにしましょう。

アクティブディレクトリユーザーの最終ログオン時間を見つける方法(ADUCを使用)

ドメインユーザーが最後にログインした時間を特定するために、アクティブディレクトリユーザーズアンドコンピューターズADUC)グラフィカルコンソールを利用します。以下がその方法です:

  1. dsa.mscコンソールを起動します。
  2. 上部メニューから表示 > 詳細機能を選択して、このオプションを有効にします。

3. ADツリーでユーザーを見つけ、そのプロパティにアクセスします。
4. 属性エディタタブをクリックします。
5. リスト内の属性でユーザーの最も最近のドメインログイン時間を表示する最終ログイン属性を探します。

注意。 上記のスクリーンショットのlastLogonlastLogonTimestampの特性は比較的に似ています。では、それらを区別するものは何でしょうか?

ログオンタイムスタンプ属性

  • ドメインにログインするとき、ユーザーのlastLogon 属性が変更されます。ただし、これは、他のドメインコントローラーにユーザーの認証を提供したドメインコントローラーのみで変更されます。その結果、複数のドメインコントローラーがさまざまなActive Directoryサイトとサブネットに分散している場合は、各ドメインコントローラーでこの属性をチェックし、取得した情報を比較する必要があります。この属性の値は、複数のDCのユーザーに対して異なるか、またはゼロになることがあります(このDCで認証されていないユーザーの場合)。
  • ユーザーがドメインコントローラにサインインすると、lastLogonTimeStamp属性も変更され、他のDCにレプリケートされます。ただし、このプロパティをレプリケートするには時間がかかります(現在の値が以前の値より14日以上古い場合にのみレプリケートします)。その結果、特定のDCのこのプロパティの情報がより関連性がない可能性があります。
  • msDS-LastFailedInteractiveLogonTime: 最後に失敗したログイン試行の時間を表示します。
  • msDS-LastSuccessfulInteractiveLogonTime: 最後に成功したログイン試行の時間を表示します。Active Directoryスキーマのバージョンを確認して、Active Directoryスキーマの更新が必要かどうかを判断することが重要です。

これらのプロパティは、ユーザーのインタラクティブなログイン試行を追跡するために使用されますが、ADドメインコントローラー間でしばしば重複します。しかし、ユーザーのプリファレンスに関する情報は自動的に収集されません。

Active DirectoryとOffice 365のレポーティングおよび監査ツールをお試しください

無料で試してみませんか 無料。 100以上のレポートテンプレートが利用可能。 AD、Azure AD、Office 355の独自のレポートを簡単にカスタマイズできます。




グループポリシーを使用してログオンプロパティを有効にする

これらの機能を利用可能にするには:

  1. 「ドメインコントローラーのクライアントコンピューターに以前のログオンに関する情報を提供する」という設定を有効にするグループポリシーオブジェクト(GPO)を設定し、コンピューター構成 > 管理テンプレート > システム > KDCに配置します。
  2. このパラメータでGPOを作成します。
  3. そのGPOをドメインコントローラーコンテナに割り当てます。

LDAPクエリを使用して、Active Directoryグラフィカルコンソールでしばらくドメインにログインしていないユーザーのリストを生成するには、以下の手順に従ってください。

  1. 望ましい日付をToFileTime形式に変換します。たとえば、90日以上ログインしていないユーザーを見つけたい場合、PowerShellコマンドを使用して日付の値を取得します:
(Get-Date).AddDays(-90).ToFileTime()

このコードスニペットは、指定された日付に基づいてエポック時間のような132988354159396418の値を提供します。

2. LDAPクエリにFileTimeDate値を挿入します:

console.log( 'Code is Poetry' );

3. AD ユーザーとコンピューターコンソールを開き、保存されたクエリノードを右クリックし、新規作成をクリックしてから、クエリを選択します。

4. クエリに名前を付け、クエリの定義ボタンをクリックします。
5. ドロップダウンリストからカスタム検索を選択し、詳細設定タブに切り替えます。
6. LDAP クエリを「LDAP クエリの入力」フィールドにコピーします。

7. OKをクリックしてクエリを保存し、さらにOKをクリックして確定します。
8. 保存されたクエリからクエリを選択し、F5キーを押してオブジェクトリストを更新します。ADUC コンソールには、90 日以上前に最後にログインしたドメインのユーザーのフラットリストが表示されます。

9. AD コンソールから直接、非アクティブなドメインユーザーアカウントを削除または無効にします。

CMD を使用して最終ログオン時間を検索する

次に、記事「Active Directoryユーザーの最終ログオン時間を見つける方法(ADUCを使用)」で、CMSを使用して最終ログオン時間を見つける方法を学びます。コマンドラインからnetまたはdsqueryツールを使用することで、ユーザーがドメインに最後にログインした時間を発見できます。たとえば、コマンドプロンプトターミナル内で次のコマンドを実行します(ADユーザー情報を取得するためにドメイン管理者権限は必要ありません):

net user administrator /domain | findstr "Last"

ローカルユーザーの最終ログイン時間を取得したい場合は、/domainパラメータを削除する必要があります:

net user User | findstr "Last"

また、dsqueryを使用して最終ログオン時間を取得することもできます。たとえば:

dsquery * domainroot -filter "(&(objectCategory=Person)(objectClass=User)(sAMAccountName=admin))" -attr distinguishedName lastLogon lastLogonTimestamp -limit 0

主な問題は、lastLogonTimestampおよびlastLogon属性がAD内のタイムスタンプ形式であり、通常の時間形式に変換する必要があることです。

たとえば、10週間の非アクティブユーザーを検索するために、このコマンドを使用します:

dsquery user domainroot -inactive 10

PowerShell を使用して最終ログオン時間を検索する

また、PowerShell を使用してユーザーのドメイン最後 ログオン時間を取得します。 このために、PowerShell Active Directory モジュールと PowerShell コマンドを使用する必要があります。 まず、PowerShell を開いて、 Import-Module コマンドレットを実行して、Active Directory モジュールをインポートします。

Import-Module ActiveDirectory
Get-ADUser -Identity username -Properties LastLogon | Select-Object -Property Name, LastLogon

特定の日数(たとえば90日)ログインしていないアカウントを見つけるには、ユーザーアカウントをLastLogonTimestamp属性に基づいてフィルタリングするPowerShellコマンドを使用します。以下は、コマンドの例です:

Get-ADUser -Filter {Name -eq "username"} -Properties * |
Select-Object Name, @{N='LastLogon'; E={[DateTime]::FromFileTime($_.LastLogon)}}

このコマンドは、90日以上非アクティブであり、ユーザーアカウントのみを選択します。次に、それらのユーザーアカウントの名前とLastLogonTimestamp属性値を表示します。これは、ユーザーがドメインにログインした最後の時刻を表します。TimeSpanパラメーターを調整して、異なる日数の非アクティブなアカウントを検索します。たとえば、60日間非アクティブなアカウントを検索したい場合、TimeSpan60.00:00:00.に設定します。ADは、ユーザーがシステムにログインまたはログオフした後にLastLogonTimestamp属性を更新しますので、値は部分的に正確になります。また、この属性はデフォルトでドメインコントローラー間で9〜14日ごとにレプリケーションされるため、一部のユーザーアカウントに対してのみ最新の情報を取得できる場合があります。

特定の日数内の非アクティブなユーザーを見つける

特定の日数、たとえば90日間ログインしていないアカウントを見つけるために、PowerShellコマンドを使用して、LastLogonTimestamp属性をフィルタリングしてユーザーアカウントをフィルタリングします。これはコマンドの例です:

Search-ADAccount -AccountInactive -TimeSpan 90.00:00:00 | where {$_.ObjectClass -eq 'user'} | Select-Object Name, LastLogonTimestamp

このコマンドは、90日以上アクティブでないアカウントを検索し、ユーザーアカウントのみを選択します。次に、それらのユーザーアカウントの名前と、ドメインにログインした最後の時間を表すLastLogonTimestamp属性値を表示します。

次に、TimeSpanパラメータを調整して、非アクティブ状態であるアカウントを検索します。たとえば、60日間アクティブでないアカウントを検索したい場合は、TimeSpan60.00:00:00に設定します。

ユーザーがシステムにログインまたはログアウトすると、ADはLastLogonTimestamp属性を更新しますが、値は部分的に正確である可能性があります。また、この属性はデフォルトでドメインコントローラ間で9~14日ごとにレプリケートされるため、一部のユーザーアカウントのみ最新の情報を取得できる場合があります。

CSVファイルへのエクスポート

非アクティブなユーザーアカウントのリストをCSVファイルにエクスポートするには、前述のPowerShellコマンドを変更して、Export-CSVコマンドレットを含めます。これがコマンドの例です。

Search-ADAccount -AccountInactive -TimeSpan 90.00:00:00 |
where {$_.ObjectClass -eq 'user'} |
Select-Object Name, LastLogonTimestamp |
Export-CSV C:\InactiveUsers.csv -NoTypeInformation

このコマンドは、90日以上非アクティブなアカウントを検索し、ユーザーアカウントのみを選択します。次に、それらのユーザーアカウントのNameプロパティとLastLogonTimestampプロパティを決定し、CSVファイルにエクスポートします。「C:\InactiveUsers.csv」に配置されます。

「-NoTypeInformation」パラメーターは、CSVファイルにそれぞれのオブジェクトの.NETタイプ情報を含めないように指定されており、ファイルを読みやすくしています。このコマンドを実行した後、Excelまたは他のスプレッドシートアプリケーションでCSVファイルを開いて、非アクティブユーザーアカウントとその最終ログオンのタイムスタンプの一覧を表示します。

記事「Active Directory Users Last Logon Timeを見つける方法(ADUCを使用)」をお読みいただきありがとうございます。これで結論とします。

Active Directory Users Last Logon Timeを見つける方法(ADUCを使用)の結論

結論として、Active Directory内のユーザーの最終ログオン時刻を見つけることは、システム管理者にとって重要なタスクです。これにより、無効なユーザーアカウントを特定して無効化または削除し、セキュリティを向上させ、ディレクトリ内の混乱を減らすことができます。これは、Active Directoryユーザーおよびコンピュータコンソール、LDAPクエリ、およびPowerShell コマンドを使用して達成します。

適切なツールとテクニックを使用することで、システム管理者は迅速かつ簡単にActive Directory内のユーザーの最終ログオン時刻を見つけ、ディレクトリを効果的に管理するための適切な対策を講じることができます。

Source:
https://infrasos.com/how-to-find-active-directory-users-last-logon-time-using-aduc/