Windows Server
 Computer >> コンピューター >  >> システム >> Windows Server

監査ポリシーを使用してWindowsServerでファイルを削除したユーザーを検出するにはどうすればよいですか?

ファイルシステムオブジェクトアクセスイベント監査を使用して、特定のファイルを作成、削除、または変更した特定のユーザーを特定できます。この記事では、Windows Server 2016の共有ネットワークフォルダー上のファイルのイベント監査を構成する方法を示します。監査を構成した後、イベントビューアーからの情報を使用して、ファイル上の特定のファイルを削除したユーザーを見つけることができます。サーバ。

共有ネットワークフォルダからファイルを削除すると、そのファイルはユーザーのごみ箱に送られるのではなく、すぐに削除されます。共有フォルダで開いているファイルの一覧は次のように取得できます。

Windowsでファイルとフォルダのアクセス監査ポリシーを有効にする方法

デフォルトでは、ファイルシステムオブジェクトアクセス監査はWindowsServerでは有効になっていません。グループポリシーを使用して、監査設定を有効にして構成できます。複数のサーバーまたはコンピューターで監査ポリシーを有効にする必要がある場合は、ドメインGPO(gpmc.mscを使用して構成可能)を使用できます。 mmcコンソール)。 1台のサーバーでのみ監査を構成する場合は、ローカルグループポリシーエディターを使用できます。

  1. ローカルグループポリシーエディターコンソールを開きます– gpedit.msc;
  2. 高度な監査ポリシーを含むGPOセクションに移動します:Windows設定->セキュリティ設定->高度な監査ポリシー構成->オブジェクトアクセス;
  3. 監査ファイルシステムを開きます ポリシーを設定し、ファイルシステムオブジェクトへの成功したアクセスイベントのみをログに記録するように指定します(次の監査イベントの構成->成功 ); オブジェクトアクセスの監査を使用して、ローカルオブジェクトアクセスの監査を有効にすることもできます。 Windows設定->セキュリティ設定->ローカルポリシー->監査ポリシーの下のポリシー 。ただし、ファイルシステム監査ポリシーを使用することをお勧めします。これは、NTFSアクセスイベントのみを追跡するためです。 監査ポリシーを使用してWindowsServerでファイルを削除したユーザーを検出するにはどうすればよいですか?
  4. コマンドgpupdate /forceを使用して、変更を保存し、ローカルのグループポリシー設定を更新します。 。

共有フォルダでのファイル削除監査設定の構成

次に、アクセスを追跡する共有ネットワークフォルダーのプロパティで監査を構成する必要があります。ファイルエクスプローラーを実行し、フォルダーのプロパティを開きます。 セキュリティに移動します タブ。 詳細をクリックします ボタン->監査に移動します タブ。

管理者であるか、このオブジェクトの監査プロパティを表示するための適切な権限が付与されている必要があります」というメッセージの場合 」が表示されたら、続行をクリックします ボタン。

監査ポリシーを使用してWindowsServerでファイルを削除したユーザーを検出するにはどうすればよいですか?

次に、追加をクリックします ボタンをクリックして、監査イベントをキャプチャするユーザーまたはグループを指定します。すべてのユーザーのアクセスイベントを追跡する場合は、全員を指定します グループ。

次に、オブジェクトへのアクセスに使用するアクセス許可をログに記録する必要があります。ファイル削除イベントのみをイベントログに保存するには、[高度な権限を表示する]をクリックします ボタン。イベントリストで、フォルダとファイルの削除イベントのみの監査を終了します–削除 およびサブフォルダとファイルを削除する

監査ポリシーを使用してWindowsServerでファイルを削除したユーザーを検出するにはどうすればよいですか?

ヒント 。 Windowsオブジェクトの監査ポリシーには、追加のコンピューティングリソースが必要であることに注意してください。慎重に使用し、ログに記録する監査オブジェクトとイベントの数を常に最小限に抑えるようにしてください。

$Path = "E:\Public"
$AuditChangesRules = New-Object System.Security.AccessControl.FileSystemAuditRule('Everyone', 'Delete,DeleteSubdirectoriesAndFiles', 'none', 'none', 'Success')
$Acl = Get-Acl -Path $Path
$Acl.AddAuditRule($AuditChangesRules)
Set-Acl -Path $Path -AclObject $Acl

これで、ユーザーが共有ネットワークフォルダー内のファイルまたはフォルダーを削除すると、[ファイルシステム]->[成功の監査]ファイルの削除イベントがセキュリティログにイベントID 4663で表示されます。 MicrosoftWindowsセキュリティ監査から ソース。

イベントビューアを開きます mmcコンソール(eventvwr.msc )、Windowsログを展開します ->セキュリティ セクション。 EventID4663によるイベントログフィルターを有効にします。

監査ポリシーを使用してWindowsServerでファイルを削除したユーザーを検出するにはどうすればよいですか?

イベントビューアで残りのイベントを開きます。ご覧のとおり、削除されたファイルの名前、ファイルを削除したユーザーのアカウント、およびプロセス名に関する情報が含まれています。

試みがアクセスに行われた
 object.Subject:セキュリティID:CORP \ jsmithAccount名:jsmithAccountドメイン:CORPLogon ID:0x32B12627Object:オブジェクトサーバー:SecurityObjectタイプ:FileObjectに名:E:\ DISTR \ Backup.rarHandle ID:0x7bc4Resource属性:S:AIProcess情報:プロセスID:0x4プロセス名:アクセスリクエスト情報:アクセス:1 pre 0 

監査ポリシーを使用してWindowsServerでファイルを削除したユーザーを検出するにはどうすればよいですか?

ファイルアクセス監査ポリシーを有効にすると、セキュリティログで確認できます:

  • 共有ネットワークフォルダからファイルを削除したのは誰で、いつ削除されたのか。
  • ファイルの削除に使用されたアプリケーション(プロセス)
  • 復元するバックアップの日付は何日ですか。

ファイル削除イベントをSQLデータベース(MySQL / MSSQL)に書き込む方法

ただし、削除されたファイルの監査が有効になっている場合でも、ログで何かを見つけるのは面倒な場合があります。まず、何千ものイベントの中から特定のエントリを見つけるのは非常に困難です(Windowsでは、柔軟なフィルターを使用してイベントを検索するための便利なツールはありません)。次に、ファイルがかなり前に削除された場合、このイベントは新しいイベントによって上書きされたため、ログに記録されない可能性があります。

すべてのファイル削除イベントをSQLデータベースに保存できます。 Microsoft SQL Server、Elasticsearch、またはMySQL/MariaDBデータベースを使用してイベントを保存できます。

この例では、MySQLの別のデータベーステーブルに監査イベントを記録する方法を示します。次の表形式を使用します:

  • サーバー名;
  • 削除されたファイルの名前;
  • 日時;
  • ファイルを削除したユーザーの名前。

このテーブルを作成するためのMySQLクエリは次のようになります。

CREATE TABLE deleted_items (id INT NOT NULL AUTO_INCREMENT, server VARCHAR(100), file_name VARCHAR(255), dt_time  DATETIME, user_name VARCHAR(100),  PRIMARY KEY (ID));

。 PowerShellからMySQLデータベースにアクセスする方法の例は、PowerShellを使用したMySQLデータベースのクエリの記事で以前に検討されました。

Microsoft SQL Serverデータベースを使用する場合は、「PowerShellからMSSQLServerクエリを実行する方法」の記事を確認してください。

当日のセキュリティログからEventID4663のイベントを取得するには、次のPowerShellスクリプトを使用できます。

$today = get-date -DisplayHint date -UFormat %Y-%m-%d
Get-WinEvent -FilterHashTable @{LogName="Security";starttime="$today";id=4663} | Foreach {
$event = [xml]$_.ToXml()
if($event)
{
$Time = Get-Date $_.TimeCreated -UFormat "%Y-%m-%d %H:%M:%S"
$File = $event.Event.EventData.Data[6]."#text"
$User = $event.Event.EventData.Data[1]."#text"
$Computer = $event.Event.System.computer
}
}

監査ポリシーを使用してWindowsServerでファイルを削除したユーザーを検出するにはどうすればよいですか?

次のPowerShellスクリプトは、取得したデータをリモートサーバー(IPアドレス10.1.1.13)のMySQLデータベースに書き込みます。

Add-Type –Path ‘C:\Program Files (x86)\MySQL\MySQL Connector Net 6.9.8\Assemblies\v4.5\MySql.Data.dll'
$Connection = [MySql.Data.MySqlClient.MySqlConnection]@{ConnectionString='server=10.1.1.13;uid=posh;pwd=P@ssw0rd;database=aduser'}
$Connection.Open()
$sql = New-Object MySql.Data.MySqlClient.MySqlCommand
$sql.Connection = $Connection
$today = get-date -DisplayHint date -UFormat %Y-%m-%d
Get-WinEvent -FilterHashTable @{LogName="Security";starttime="$today";id=4663} | Foreach {
$event = [xml]$_.ToXml()
if($event)
{
$Time = Get-Date $_.TimeCreated -UFormat "%Y-%m-%d %H:%M:%S"
$File = $event.Event.EventData.Data[6]."#text"
$File = $File.Replace(‘\’,’|’)
$User = $event.Event.EventData.Data[1]."#text"
$Computer = $event.Event.System.computer
$sql.CommandText = "INSERT INTO deleted_items (server,file_name,dt_time,user_name ) VALUES ('$Computer','$File','$Time','$User')"
$sql.ExecuteNonQuery()
}
}
$Reader.Close()
$Connection.Close()

イベントを外部データベースに保存した後、このイベントログをクリアできます。

ここで、ファイル「 AnnualReport.DOC」を削除したユーザーを確認します。 「、PowerShellコンソールで次のスクリプトを実行するだけで十分です。
$DeletedFile = "%AnnualReport.DOC%"
Set-ExecutionPolicy RemoteSigned
Add-Type –Path ‘C:\Program Files (x86)\MySQL\MySQL Connector Net 6.9.8\Assemblies\v4.5\MySql.Data.dll'
$Connection = [MySql.Data.MySqlClient.MySqlConnection]@{ConnectionString='server=10.1.1.13;uid=posh;pwd=P@ssw0rd;database=aduser'}
$Connection.Open()
$MYSQLCommand = New-Object MySql.Data.MySqlClient.MySqlCommand
$MYSQLDataAdapter = New-Object MySql.Data.MySqlClient.MySqlDataAdapter
$MYSQLDataSet = New-Object System.Data.DataSet
$MYSQLCommand.Connection=$Connection
$MYSQLCommand.CommandText="SELECT user_name,dt_time    from  deleted_items where file_name LIKE '$DeletedFile'"
$MYSQLDataAdapter.SelectCommand=$MYSQLCommand
$NumberOfDataSets=$MYSQLDataAdapter.Fill($MYSQLDataSet, "data")
foreach($DataSet in $MYSQLDataSet.tables[0])
{
write-host "User:" $DataSet.user_name "at:" $DataSet.dt_time
}
$Connection.Close()

これで、PSコンソールでユーザー名とファイルが削除された時刻を確認できます。

監査ポリシーを使用してWindowsServerでファイルを削除したユーザーを検出するにはどうすればよいですか?

。問題が見つかったので、記号「\ 」はデータベースに書き込まれません。「|」に置き換えました。 」。したがって、ファイルへのフルパスを表示する必要がある場合は、データベースから選択するときに逆置換を実行できます。

$DataSet.file_name.Replace(‘|’,’\’).

イベントログからデータベースに情報を書き込むスクリプトは、タスクスケジューラを使用して一日の終わりに実行するか、より多くのリソースを消費するファイル削除EventID(イベント時)に添付することができます。システムの要件によって異なります。

ヒント 。セキュリティイベントログファイルの最大サイズを、その日のすべてのイベントをログに記録するのに十分な大きさに設定してください。それ以外の場合は、データをデータベースにエクスポートするタスクを1日に1回以上、またはトリガーで実行する必要があります。通常、最大ログサイズ ワークステーションでは、少なくとも 64である必要があります MB、および 262 WindowsファイルサーバーのMB。古いイベントを上書きするオプションは有効のままにしておく必要があります(必要に応じてイベントを上書きする

必要に応じて、簡単なPHP Webページを作成して、ファイルを削除したユーザーに関する情報をより便利な形式で取得できます。

重要なヒント 。ファイルがユーザーによって削除されたというエントリがログに含まれている場合は、意図的または悪意のあるアクションとして解釈することを急がないでください。多くのプログラム(特にMS Officeアプリ)は、変更を保存するときに一時ファイルを作成してから、古いバージョンのファイルを削除します。この場合、ファイルが削除されたプロセス名(ProcessName fileld)のログを有効にし、それに基づいてファイル削除イベントを解析できます。または、winword.exe、excel.exeなどのプロセスからのイベントをフィルタリングできます。

ログファイル監査イベントをテキストファイルに削除

別のデータベースサーバーを使用したくない場合は、ファイル削除監査イベントをプレーンテキストのログファイルに保存できます。次のPowerShellスクリプトを使用して、出力をテキストファイルに保存します。

$Outfile = "C:\Logs\Deleted-file-history-log.txt"
$today = get-date -DisplayHint date -UFormat %Y-%m-%d
Get-WinEvent -FilterHashTable @{LogName="Security";starttime="$today";id=4663} | Foreach {
$event = [xml]$_.ToXml()
if($event)
{
$Time = Get-Date $_.TimeCreated -UFormat "%Y-%m-%d %H:%M:%S"
$File = $event.Event.EventData.Data[6]."#text"
$User = $event.Event.EventData.Data[1]."#text"
$strLog = $Computer + " " + $File + " " + $Time + " " +  $User
$strLog  | out-file $Outfile –append
}
}

監査ポリシーを使用してWindowsServerでファイルを削除したユーザーを検出するにはどうすればよいですか?

そこで、削除されたファイルに関する情報を共有ネットワークフォルダに監査して保存するためのシステムのアイデアと一般的なモデルを提案しました。必要に応じて、要件に合わせて簡単に変更できます。


  1. Windows 7、8、10 PC で完全に削除されたファイルを復元する方法

    ある時点で、ファイルを完全に削除したに違いありません (写真、音声、ビデオ、ドキュメント など)あなたには関係ないと考えて、あなたのコンピュータから。それでも、そのファイルが必要な状況に遭遇しました (そして、そのファイルに代わるものは他にありません)。それでも、ごみ箱から復元することはできません。 とは言っても、ファイルをまったく復元できないという意味ではありません。 見つけるにはさまざまな方法があります または回復 Windows システム上の削除されたファイル。 Windowsで完全に削除されたファイルを回復するための絶対的な救助者であるいくつかの方法について説明しました.先に進む前に、

  2. Windows 10、8、7 でシフト削除されたファイルを復元する方法

    Shift 何の役にも立たないと思ってファイルを削除した?誤ってファイルを削除した場合はどうなりますか?心配しないで!これらは、私たちが犯すよくある間違いの一部であり、元に戻すことができる間違いです。はい、そのとおりです。シフト削除されたファイルを復元できます。 ただし、サードパーティのソフトウェアなど、外部の助けを借りずに簡単に行うことはできません.この投稿では、Windows 10、8、7 でシフト削除されたファイルを回復するのに役立つサードパーティ ソフトウェアについて説明します。 その前に、削除されてコンピューターに表示されなくなったファイルを復元する方法を理解しましょう。 これ