web-dev-qa-db-ja.com

ActiveDirectoryで変更されたユーザー/グループを監視する

ActiveDirectoryの監視vbscriptを設定しようとしています。変更されたすべてのユーザーをファイルにエクスポートする必要があります。このスクリプトは10分ごとに実行され、変更されたすべてのユーザー(アカウントの変更、日付の変更、変更者)をエクスポートします。グループの変更についても同じです(異なる出力ファイル)。

Vbscript、csvdeまたはdget、dsquery、またはバッチを使用してこれらの情報を取得してもかまいません。スケジュールタスクを設定できるものはすべて問題ありません。

2
name

これのほとんどは、PowerShellとLDIFを使用して実行できます。たとえば、以下のスニペットは、過去10分間に変更または追加されたユーザーオブジェクトのリストを含むad.txtというファイルを生成します。

$DateString = (Get-Date).AddMinutes(-10).ToString("u") -Replace "-|:|\s"
$DateString = $DateString -Replace "Z", ".0Z"
$LdapFilter = """" + "(&(|(whenChanged>=" + $DateString + ")(whenCreated>=" + $DateString + "))(objectClass=user))" + """" 
$lCmd = "ldifde -f ad.txt -r " + $LdapFilter + " -l ""dn,whenCreated,whenChanged"""
Invoke-Expression $lCmd
4
Phil

さて、私はTechNetでこれを見つけました:

グループメンバーシップの変更についてADのOU内のグループを監視する

このスクリプトは、スケジュールされたタスクで実行され、ActiveDirectoryの変更を監視および警告します。グループメンバーシップを変更すると、変更が含まれたアラートメールが作成されます。

スクリプトは、グループの現在のメンバーをXMLドキュメントに保存し、X分ごとにライブディレクトリを比較します。スクリプトは、スケジュールされたタスクが実行されている期間内に変更を検出しません。つまり、実行中のタスクの間にメンバーが追加および削除された場合、変更は検出されません。

私は15分ごとにスクリプトを実行し、非常に効果的であることがわかりました。

ユーザー、コンピューター、またはグループのアカウントへの変更を検出します。

Ben Wilkinsonに感謝します!

3
name

これは単純な要求のように聞こえますが、すぐに海を沸騰させます。

これを行う商用製品がありますが(理由は明らかになります)、基本的にクエリを実行する必要があります(日付が変更されたすべてのユーザーは10分前未満です)。残念ながら、これでは何が変わったのかはわかりません。誰が変更を加えたのかもわかりません(イベントビューアのADログと一緒にまとめることができる場合があります)(私は肯定的ではありませんが、パスワードの変更も検出される可能性があります)。

その絵を完成させるためにもあなたがする必要があることは、基本的にすべてのユーザーとそのすべてのプロパティをエクスポートし、それらのタイムスタンプ付きの記録を保持する必要があります。

この時点で、Active Directoryのコンテンツ(サブセット)を含む複数の個別のデータベースを作成していることを指摘しておきます。

ユーザーのリストを変更した後、オブジェクトの現在と以前の状態を比較し、そのデータを気になる人に提示する必要があります。

次に、ある時点で、ADオブジェクトの複数のコピーを保持するとスペースが占有され始めるため、クリーンアップする必要があります...変更のレポートが送信されたら、本当に必要なのは現在および直前の記録を保持します。

環境内のユーザーの数、変更を加えることができる人の数(管理者、ヘルプデスクなど)、およびそれらの変更の頻度によっては、これは非常に簡単に管理不能になる可能性があります。

正直なところ、不正行為をすばやく発見しようとしているのでない限り、10分はおそらくやり過ぎです。私は1時間以内、そしておそらく毎日の記録をします。

しかし、ここにあなたが始めるためのいくつかの場所があります:

1
gWaldo

パーティーに遅れるかもしれませんが、ユーザー/グループの変更を監視するスクリプトを作成しました Power Shellでグループとユーザーの変更を監視します 。私が見つけたほとんどのスクリプトによる通常のアプローチは、変更の前後を比較することによってADレベルで発生する変更を監視することでした。私のアプローチは、ADコントローラーに保存されているイベントを通過することによってこれを行います。その大きな利点は、誰がいつ変更を行うかを正確に教えてくれることです。

このPowerShellスクリプトは、定義されたパラメーターに従ってレポートを生成し、ActiveDirectoryのユーザーとグループで発生する変更を監視できます。それはあなたに言うことができます:

  • ActiveDirectoryドメイン内のグループのグループメンバーシップをいつ誰が変更したか
  • パスワード、UserPrincipalName、SamAccountNameなどのユーザーデータをいつ誰が変更したか…
  • いつ誰がパスワードを変更したのかいつ誰がアカウントをロックアウトしたのか

ここにコードを貼り付けていないことをお詫び申し上げますが、可動部分が多すぎて、まだ作業中です。うまくいけば、リンクは十分であり、それは誰かを助けるでしょう。

毎日、毎月、または四半期ごとに受け取る例を報告します。

Report Example

0
MadBoy