LoginSignup

Why not login to Qiita and try out its useful features?

We'll deliver articles that match you.

You can read useful information later.

24
38

More than 3 years have passed since last update.

ファイルサーバのアクセスログをPowerShellで取得する

Last updated at Posted at 2019-07-03

はじめに

監査ログを調べると「いつ・誰が・何をしたか」を知ることができ、システムの運用が法規制、セキュリティ評価基準、社内規定等の監査基準に準拠していることを証明できる。内部統制の構築には欠かせないものと言えよう。
Windowsでは、監査ポリシーを設定するだけで、イベントログに監査ログを出力できる。

前提環境

本記事では Windows Server 2016 Datacenter で解説するが、すべてのエディションで使える。
image.png
Datacenter とは文字通りデータセンタ環境用のエディションだ。
仮想化により多数のサーバを運用する大企業や、大量のサーバを保有してデータセンタを運用する企業(=クラウド事業者)向けのエディションである。

監査ポリシーの設定手順

ActiveDirectory環境下でドメインコントローラの監査をする場合と、ローカル環境下でファイルサーバなどの監査をする場合とで、最初の手順が異なる。
本記事では、ローカルグループポリシーから、ファイルサーバの監査ポリシーを設定する。
なお、ActiveDirectoryのグループポリシーでは、ドメインやOU単位で監査ポリシーを設定できる。

ローカルグループポリシーエディタの設定

まず、ファイルサーバに管理者権限を持ったユーザーでログオンしよう。

gpedit.msc を実行

ローカルグループポリシーエディタで [オブジェクトアクセス]-[ファイルシステムの監査] をクリックする。
image.png

ファイルシステムの監査のプロパティ

監査のプロパティが表示されるので、今回は、成功・失敗ともにチェックする。
image.png

監査対象フォルダの設定

  • エクスプローラで、監査対象にしたいフォルダまたはファイルを右クリックし、[プロパティ] を選択する。
  • [セキュリティ] タブで [詳細設定] をクリックする。

監査エントリの追加

[監査] タブで [追加] をクリックする。
image.png

[プリンシパルの選択] をクリックする。
image.png

「選択するオブジェクト名を入力してください」Everyone(すべてのユーザー)と入力する。
もちろん Everyone の代わりにユーザー名やグループ名を入力することもできる。
image.png

ファイルに対するアクセスに、成功しても失敗しても検知したいので「すべて」を選択する。
image.png

[高度なアクセス許可] を表示し、今回は、次のようにチェックする。
image.png

監査ログの確認

これで監査ログの記録が開始されるので、さっそくイベントビューアから [Windowsログ]-[セキュリティ] で監査ログを確認してみよう。
アクセスのあったファイル/フォルダ名が、オブジェクト名に表示されているはずだ。
image.png

ついでに [XMLで表示] に切り替えて、取得したいデータのXML階層イメージも確認しておこう。
PowerShellGet-WinEventコマンドレットからXML階層を辿るときに必要な情報だ。
image.png

[プロパティ] からログの最大サイズを変更できる。取りこぼしの無いよう、充分なサイズを確保しておこう。
image.png

PowerShellのコーディング例

ファイルサーバでPowerShellコンソールを起動し、下のコードをそのまま貼り付けるだけで動くはずだ。
今回は、セキュリティイベントのIDに4663(ファイルアクセス)を指定しフィルタリングしている。

PowerShell
$AccessMaskHash = @{ '0x1' = '読込'; '0x2' = '書込'; '0x4' = '追加'; '0x10000' = '削除'}
Get-WinEvent -FilterHashtable @{
    LogName = 'Security'
    ProviderName = 'Microsoft-Windows-Security-Auditing'
    ID = 4663
} | %{
    $xml = [XML]$_.ToXml()   # EventDataにアクセスするためにXML化

    $FileName = ($xml.Event.EventData.Data | ?{$_.Name -eq 'ObjectName'}).'#text'
    if (! $FileName.StartsWith('E:\SHARED\')) { return }

    $AccessMaskCode = ($xml.Event.EventData.Data | ?{$_.Name -eq 'AccessMask'}).'#text'
    if (! $AccessMaskHash.ContainsKey($AccessMaskCode)) { return }
    $AccessMaskName = $AccessMaskHash[$AccessMaskCode]

    $TimeCreated = ([DateTime]$xml.Event.System.TimeCreated.SystemTime).ToString('yyyy/MM/dd hh:mm:ss')
    $UserName = ($xml.Event.EventData.Data | ?{$_.Name -eq 'SubjectUserName'}).'#text'

    echo "$TimeCreated,$AccessMaskName,$UserName,$FileName"
}
  • すべてのセキュリティイベントの一覧は Windows security audit events からExcel形式でダウンロードできるので参考にして欲しい。ちょっと書き換えればログオン/ログオフの追跡もできるはずだ。
  • Get-WinEventコマンドレットの使い方は Windows PowerShell のヘルプ - Get-WinEvent が詳しいので併せて参照して欲しい。

実行結果

出力をExcelに貼り付けたものを示す。(アカウント名やファイル名は架空)
image.png

24
38
6

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
mindwood

@mindwood(マインドウッド)

大手SIer(プライムベンダー)に20年以上勤続し、某メガバンクのSEを下流から上流までひと通り経験。退社後は個人事務所を開業し、事業会社のソフトウェア内製化や、いくつかのベンチャー企業でシステム開発に関わる。生涯現役プログラマを目指す。座右の銘は「継続は力なり」。いわゆるSES企業さんからの協業お誘いはお断りしています。
alieaters
Alibaba Cloudを上手に使うためのノウハウの共有を目的としたコミュニティ

Comments

akki1130
@akki1130

こんにちわ。参考にさせていただいてパワーシェルコマンドを作成しましたが、
ファイル名などのパスが途中で改行されてしまいます。
改行されないようにするにはどこをどういじればよろしいでしょうか?

0
mindwood
@mindwood(マインドウッド)

@akki1130 さん

PowerShellコンソールのウィンドウサイズを広げても改行されてしまいますか?
もしくは、画面ではなくファイルに出力してみるとか・・・。

0
akki1130
@akki1130

返答ありがとうございます。リンクhttps://qiita.com/mindwood/items/be0d777aff0c8671a255
のコードで試してみたらCSVで改行なく作成できました。
お手数をおかけしました。Powershellがバージョン4なので今度はzip圧縮とメール送信で躓いていますが、
そちらは色々調べながらやってみます。

0
@albionsan

上記スクリプトで「読取」のイベントログを抽出するためには、監査タブにて「フォルダーの一覧/データーの読み取り」にもチェックが必要でしょうか。

0
mindwood
@mindwood(マインドウッド)

@albionsan さん
たしか、そうだったと思います。
うろ覚えですが、「フォルダーの一覧/データーの読み取り」にチェックを入れたら、
こちらの運用都合上、「読取」のログが増えすぎたので、チェックを外した記憶があります。

0
@albionsan

@mindwood 返信ありがとうございます。
こちらの環境で監査ログ出せるようになり助かりました。

0

Let's comment your feelings that are more than good

Being held Article posting campaign

はじめての記事投稿

~
View details

生成AIに関する記事を書こう!

~
View details
24
38

Login to continue?

Login or Sign up with social account

Login or Sign up with your email address