ONTAPのSecurity機能について2【監査ログ編】

## はじめに
NetApp StorageであるAFFやFASのOSであるONTAPには様々な機能がありますが、
この記事ではSecurityに関する機能である監査ログの設定方法について記載します。
設定はCLIを用いて行います。

## 何をしたい？できる？
- <font color="Red">**ファイルサーバに対して、「何時」「誰が」「どのような操作を」というログを取得**</font>
- <font color="Red">**ログの世代管理**</font>

## 監査ログとは
仮想Storageに対して監視ログ設定を有効にする事で、ユーザ向け領域の**ファイルやフォルダアクセスが適切であるかをログから確認する事ができます**。

監査ログはEVTXまたはXMLファイル形式で保存されます。

![audit01.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1268577/6592424f-b4ed-5ac7-6378-9fa00d9044ac.png)

## 設定手順

コマンド例では、**CIFS用領域における監査ログを有効にして、7日分のログを保持する設定例**です。
**前提としてCIFSアクセス可能な設定は完了しているものとします。**
例で指定されている以下のパラメータは、環境によって異なる内容なので適宜変更して下さい。
- 仮想Storage(SVM)名：cifs100
- CIFS用Volume名：testvol100
- 監査ログ用Volume名：audit_vol
- 監視する操作：CIFS用Volumeにおけるファイル操作


#### 1. 仮想Storage(SVM)に対して監査ログ格納用Volumeの作成

**ログ用のVolumeを作成**
Volumeサイズは要件に応じて変更が必要です。
```bash:
> volume create -vserver cifs100 -volume audit_vol -aggregate aggr1_node1 -size 3g -state online -junction-path /audit_vol -space-guarantee none
```
**設定値の確認**
```bash:
> volume show -vserver cifs100 -volume audit_vol

                                   Vserver Name: cifs100
                                    Volume Name: audit_vol
                                 Aggregate Name: aggr1_node1
  List of Aggregates for FlexGroup Constituents: aggr1_node1
                                Encryption Type: volume
               List of Nodes Hosting the Volume: cluster-01
                                    Volume Size: 3GB
                             Volume Data Set ID: 1845
                      Volume Master Data Set ID: 2159546051
　　　　　　　　　　　　　　　　　　　　(中略)
```

#### 2. 監査ログ格納用VolumeへのCIFS共有作成
**監査ログ用VolumeへCIFSアクセスできるように共有を作成**
```bash:
> cifs share create -vserver cifs100 -share-name audit_vol -path /audit_vol
```
**設定値の確認**
```bash:
> cifs share show -vserver cifs100 -share-name audit_vol

                                      Vserver: cifs100
                                        Share: audit_vol
                     CIFS Server NetBIOS Name: CIFS100
                                         Path: /audit_vol
                             Share Properties: oplocks
                                               browsable
                                               changenotify
                                               show-previous-versions
　　　　　　　　　　　　　　　　　　　　(中略)
```
#### 3. 監査ログの出力先と、ローテーション設定
**毎月、すべての曜日の12:30にローテーションし、過去7回分保持**
```bash:
> vserver audit create -vserver cifs100 -destination /audit_vol -rotate-schedule-month all -rotate-schedule-dayofweek all -rotate-schedule-hour 12 -rotate-schedule-minute 30 -rotate-limit 7
```
**設定値の確認**
```bash:
> vserver audit show -vserver cifs100

                           Vserver: cifs100
                    Auditing State: false
              Log Destination Path: /audit_vol
     Categories of Events to Audit: file-ops, cifs-logon-logoff,
                                    audit-policy-change
                        Log Format: evtx
               Log File Size Limit: -
      Log Rotation Schedule: Month: January-December
Log Rotation Schedule: Day of Week: Sunday-Saturday
        Log Rotation Schedule: Day: -
       Log Rotation Schedule: Hour: 12
     Log Rotation Schedule: Minute: 30
                Rotation Schedules: @12:30
          Log Files Rotation Limit: 7
            Log Retention Duration: 0s
```
#### 4. ファイル操作のみを監査するように設定を変更 
```bash:
> vserver audit modify -vserver cifs100 -format evtx -events file-ops
```
**設定値の確認**
```bash:
> vserver audit show -vserver cifs100

                           Vserver: cifs100
                    Auditing State: false
              Log Destination Path: /audit_vol
     Categories of Events to Audit: file-ops, audit-policy-change
                        Log Format: evtx
               Log File Size Limit: -
      Log Rotation Schedule: Month: January-December
Log Rotation Schedule: Day of Week: Sunday-Saturday
        Log Rotation Schedule: Day: -
       Log Rotation Schedule: Hour: 12
     Log Rotation Schedule: Minute: 30
                Rotation Schedules: @12:30
          Log Files Rotation Limit: 7
            Log Retention Duration: 0s
```
#### 5. 仮想Storageへの監査ログ設定の有効化 
```bash:
> vserver audit enable -vserver cifs100
```
**設定値の確認**
```bash:
> vserver audit show -vserver cifs100

                           Vserver: cifs100
                    Auditing State: true
              Log Destination Path: /audit_vol
     Categories of Events to Audit: file-ops, audit-policy-change
                        Log Format: evtx
               Log File Size Limit: -
      Log Rotation Schedule: Month: January-December
Log Rotation Schedule: Day of Week: Sunday-Saturday
        Log Rotation Schedule: Day: -
       Log Rotation Schedule: Hour: 12
     Log Rotation Schedule: Minute: 30
                Rotation Schedules: @12:30
          Log Files Rotation Limit: 7
            Log Retention Duration: 0s
```
#### 6. Windows端末からCIFS領域へアクセスして、監査の設定を実施 
**6-1.監査対象で右クリックし、[セキュリティ]タブを選択後、[詳細設定]をクリック**

![audit02.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1268577/d9413945-e66b-d4ea-5ffa-e8fd8f29a8c8.png)

**6-2.[監査]タブで[追加]をクリック**
この例では特定のフォルダに設定しているので、継承は無効化しています。
![audit03.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1268577/51230bec-4fe9-a294-5a9d-a4a6ea63e536.png)


**6-3.全ユーザの操作を対象とする為、プリンシパル(監査対象のアカウント)をEveryone指定**
![audit04.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1268577/5f6d5cf0-ea2e-5d25-e37c-15e8d4c06f20.png)
![audit05.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1268577/479f9670-7bbb-fca3-f738-5586223a285b.png)


**6-4. 高度なアクセス許可を使い、ファイルの作成と削除の監視を指定**
この例では指定操作に成功している場合にログが取られる設定になってます。
![audit06.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1268577/61ca2fc1-b787-6311-ea20-eb7cfc342bf3.png)

**6-5. 対象フォルダでファイルの作成や削除の実行**
![audit07.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1268577/a10fd445-be1e-49e7-06ba-dbff07084fcb.png)

**6-6. 監査ログの出力用Volumeに監査ログファイルが作成されている事の確認**
![audit08.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1268577/9e9e5996-a0f0-0360-f2c6-5e5c8fae0282.png)

**6-6. スケジュール通りにログファイルが作成されている事の確認**
この手順例では10/24の18:41以降はアクセスが発生していないので、その時点までの監査ログが世代管理用として出力
![audit09.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1268577/f502164c-be15-801a-29fb-df11dcbf7c2d.png)

**6-7. 監査ログをイベントビューアで確認**
ファイルを操作したユーザ名は消してますが、SubjectUserNameの部分に記載されます。
![audit10.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1268577/f3340d45-ee77-5397-5020-1c281a36d2ac.png)

## どういう時に使うか
**ログを保管して、後で調査できるようにする**
・アクセス権の無い領域へファイル作成や削除の失敗をログとして残す
・不正アクセスにおける被害や影響調査の事後対応を効果的に行う事ができるようにする

ログの重要性については、[国民のためのサイバーセキュリティサイト](https://www.soumu.go.jp/main_sosiki/cybersecurity/kokumin/business/business_admin_22.html)の記載が参考になります。

**長期のログ保存を実施したい**
・<font color="Red">ログは1年以上保存することが望ましい</font>が、遠隔地保管前の一定期間分をONTAPに保存

ログ保存の保存期間に対する考え方については、
[JPCERTの高度サイバー攻撃への対処におけるログの活用と分析方法](https://www.jpcert.or.jp/research/APT-loganalysis_Report_20220510.pdf)の記載(特にP.12,13)が参考になります。

## イベントビューアで確認できるエラーについて
実際にevtxファイルをWindowsのイベントビューアで確認すると、以下のようなメッセージが確認できるかと思います。

「ソース "NetApp-Security-Auditing" からのイベント ID XXXX の説明が見つかりません。このイベントを発生させるコンポーネントがローカルコンピューターにインストールされていないか、インストールが壊れています。ローカル コンピューターにコンポーネントをインストールするか、コンポーネントを修復してください。」

**原因は、Windowsの仕様によりアプリケーションをインストールしないと解析できない為**なのですが、**解決策が無く、ONTAPは対応するPluginは提供していない為、改善不可**のものとなります。
(上記メッセージが表示されるものの、説明内容からインベント内容自体は確認できる)

## 参考及びリンク
[監査の設定](https://docs.netapp.com/ja-jp/ontap/pdfs/sidebar/%E7%9B%A3%E6%9F%BB%E3%81%AE%E8%A8%AD%E5%AE%9A%E3%82%92%E7%AE%A1%E7%90%86%E3%81%97%E3%81%BE%E3%81%99.pdf)

[ONTAP Auditing Schema Reference](https://library.netapp.com/ecm/ecm_get_file/ECMLP2875022)