ONTAPのSecurity機能について10【ARPにおける運用管理】

# はじめに
[前回の記事](https://qiita.com/s_yosh1d/items/a5d01c142469498821ad)ではAutonomous Ransomware Protection(ARP)の設定について記載しましたが、今回は管理者がよく直面する**ARPの理解しにくい点に焦点を当てます**。具体的には、**ARPの自動有効化の条件、統計値の見方、Snapshotの管理**についての内容となります。
これらのトピックはマニュアルを見ただけでは理解が難しい部分があり、特に初心者にとってはハードルが高い内容になるかと思いますので、それぞれの項目を分かりやすく解説いたします。

<img width="600" alt="qiita-square" src=https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1268577/57f9d10b-5ef9-733f-026c-8adc0f3a8293.png>

## 何をしたい？できる？
<font color="Red">**自動有効化の条件を理解する**</font>
**統計値の見方を理解する**
<font color="Red">**Snapshotの作成条件や管理を理解する**</font>


## 記事における環境情報
本記事では、以下の環境で実施した内容となります。
**分かり易くするために、Network構成は単純化しています。**
- ONTAP  : 9.14.1
- Windows Active Directory環境


<img width="450" alt="qiita-square" src=https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1268577/a0d91ef7-0716-8279-3d1c-2fb2cf0f7770.png>

:::note warn
**本記事ではCLIで操作します**
**通知設定済で、ARP Snapshot作成時には通知及びEvent logに表示されます**
(新しい拡張子作成の場合は通知やEvent logに載せない)
:::

```bash:
# ARP Snapshot作成についてのイベント設定
> security anti-ransomware volume event-log show  -vserver vs_cifs11 -volume cifs300

                         Vserver Name: vs_cifs11
                          Volume Name: cifs300
Is Enabled on New File Extension Seen: false
 Is Enabled on Snapshot Copy Creation: true
```     




## 設定内容に関して

### 1. ARP自動有効化について

ONTAP 9.13.1以降ではARPの学習期間後の自動的な有効化機能が実装されておりますが、**自動有効となる為にはいくつかの設定パラメータでの調整が可能**となっています。
**設定自体はSVM単位で実施します。**

|パラメータ  |説明  |
|---|---|
|anti-ransomware-auto-switch-from-learning-to-enabled|ARPの自動有効化を使うかどうか|
|anti-ransomware-auto-switch-minimum-incoming-data-percent|自動的有効に必要なデータ書き込み量(Volumeの何%のWriteを条件とするかで、デフォルト5%)|
|anti-ransomware-auto-switch-duration-without-new-file-extension|新規ファイル拡張子の発生しない期間(デフォルト3日)|
|anti-ransomware-auto-switch-minimum-learning-period|学習期間からARP有効化となる期間(デフォルト10日)|
|anti-ransomware-auto-switch-minimum-file-count|Volumeに作成される新しいファイルの最小数(デフォルト200)|
|anti-ransomware-auto-switch-minimum-file-extension|新しいファイル拡張子の種類の最小数(デフォルト10)|

#### 1-1. 自動有効化の条件を確認

実際に2つのVolume(cifs100, cifs101)を用意して、以下の条件を満たしているVolumeと満たしていないVolumeの違いを確認してみます。
**この例では、cifs100というVolumeが全条件に適合している形**です。

■ **条件**
- デフォルトの10日でARPの自動有効化
- Volumeの使用率が5%を超えている
- 作成ファイル数は200以上
- 10種類以上の拡張子のファイルを作成
- 7日目からは新規の拡張子作成は実施しない


```bash:
# SVMのARP自動化設定値の確認
> vserver show -vserver vs_cifs11

                                           Vserver: vs_cifs11
                                      Vserver Type: data
(中略)
Anti-ransomware Auto-switch from Learning to Enabled: true
Anti-ransomware Auto-switch Minimum Incoming Data (in percentage): 5%
Anti-ransomware Auto-switch Duration Without New File Extension (in Days): 3
Anti-ransomware Auto-switch Minimum Learning Period: 10
    Anti-ransomware Auto-switch Minimum File Count: 200
Anti-ransomware Auto-switch Minimum File Extension: 10
  Storage Reserved for In-flight Volume Operations: -


# 学習期間の開始は同じ日に開始
> security anti-ransomware volume show -vserver vs_cifs11 -volume cifs10*
Vserver    Volume           State            Dry Run Start Time
---------- ---------------- ---------------- ------------------
vs_cifs11  cifs100          dry-run          6/25/2024 16:38:30
vs_cifs11  cifs101          dry-run          6/25/2024 16:52:20
2 entries were displayed.


# Volume使用率はどちらも5%を越えている
> df -h -vserver vs_cifs11 -volume cifs10*
Filesystem               total       used      avail capacity  Mounted on
/vol/cifs100/             19GB     1603MB       17GB       8%  /cifs100
/vol/cifs100/.snapshot  1024MB       15MB     1008MB       2%  /cifs100/.snapshot
/vol/cifs101/             19GB     2180MB       16GB      11%  /cifs101
/vol/cifs101/.snapshot  1024MB       47MB      976MB       5%  /cifs101/.snapshot


# Volume内のファイル数はcifs100側は適合
> df -i -vserver vs_cifs11 -volume cifs10*
Filesystem               iused      ifree  %iused  Mounted on
/vol/cifs100/             1369     621218      0%  /cifs100
/vol/cifs101/              145     622442      0%  /cifs101
2 entries were displayed.

# cifs100は拡張子も20種類分作成
> security anti-ransomware volume workload-behavior show -vserver vs_cifs11 -volume cifs100
                                         Vserver: vs_cifs11
                                          Volume: cifs100
                        File Extensions Observed: txt, png, exe, mp3, jpg, pdf,
                                                  dotx, xlsx, csv, pptx, pem,
                                                  aa1, aa2, aa3, aa4, aa5, aa9,
                                                  aa7, aa8, aa6
              Number of File Extensions Observed: 20
(中略)

# cifs101は拡張子は4種類分作成(条件に非適合)
> security anti-ransomware volume workload-behavior show -vserver vs_cifs11 -volume cifs101
                                         Vserver: vs_cifs11
                                          Volume: cifs101
                        File Extensions Observed: txt, zip, jpg, msi
              Number of File Extensions Observed: 4
(中略)
```
10日経過すると、以下のようにcifs100というVolumeのみARPが有効化されます。

```bash:
> security anti-ransomware volume show -vserver vs_cifs11 -volume cifs10*
Vserver    Volume           State            Dry Run Start Time
---------- ---------------- ---------------- ------------------
vs_cifs11  cifs100          enabled          -
vs_cifs11  cifs101          dry-run          6/25/2024 16:52:20
2 entries were displayed.
```
また、**ARPの通知設定を有効化していると、ARPの有効化時に以下のようなメールを通知させることができます。**
(丁度10日経過後の通知です)

<img width="600" alt="qiita-square" src=https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1268577/a18ee64f-2c9d-0db7-7c2a-b27ab39e64c4.png>


#### 1-2. 10日以降に条件に適合した場合

10日のうちに自動有効化の条件に適合できなかった場合は、**後日に条件へ適合したとしても直ぐには自動有効化されず30日後に自動有効化となる**ので、場合によっては任意のタイミングで手動有効化が必要になります。

以下は**10日のうちに自動有効化の条件に適合できなかったcifs101というVolumeに対して、数日後に条件適合したとしても直ぐには有効化はされず、30日後に自動有効化された内容**となります。



```bash:
# まだ学習期間の状態である事の確認
> date
Node      Date                     Time zone
--------- ------------------------ -------------------------
PS-C250-01
          Thu Jul 18 15:08:47 2024 Asia/Tokyo
PS-C250-02
          Thu Jul 18 15:08:47 2024 Asia/Tokyo


> security anti-ransomware volume show -vserver vs_cifs11 -volume cifs101

      Vserver Name: vs_cifs11
       Volume Name: cifs101
             State: dry-run
Dry Run Start Time: 6/25/2024 16:52:20
Attack Probability: none
   Attack Timeline: -
 Number of Attacks: -


# Volume使用率は5%を越えている
> df -h -vserver vs_cifs11 -volume cifs101
Filesystem               total       used      avail capacity  Mounted on
/vol/cifs101/             19GB     2280MB       16GB      11%  /cifs101
/vol/cifs101/.snapshot  1024MB       47MB      976MB       5%  /cifs101/.snapshot
2 entries were displayed.


# Volume内のファイル数も適合
df -i -vserver vs_cifs11 -volume cifs101
Filesystem               iused      ifree  %iused  Mounted on
/vol/cifs101/              252     622335      0%  /cifs101

# 拡張子も10種類分作成
security anti-ransomware volume workload-behavior show -vserver vs_cifs11 -volume cifs101
                                         Vserver: vs_cifs11
                                          Volume: cifs101
                        File Extensions Observed: txt, zip, jpg, msi, aa4, aa6,
                                                  aa5, aa1, aa2, aa3
              Number of File Extensions Observed: 10
(中略)


# 3日の拡張子追加が発生しなくても自動有効化されない
> date
Node      Date                     Time zone
--------- ------------------------ -------------------------
PS-C250-01
          Mon Jul 22 13:15:11 2024 Asia/Tokyo
PS-C250-02
          Mon Jul 22 13:15:11 2024 Asia/Tokyo
2 entries were displayed.

> security anti-ransomware volume show -vserver vs_cifs11 -volume cifs101

      Vserver Name: vs_cifs11
       Volume Name: cifs101
             State: dry-run
Dry Run Start Time: 6/25/2024 16:52:20
Attack Probability: none
   Attack Timeline: -
 Number of Attacks: -


# 30日後に自動有効化している事の確認
event log show -severity NOTICE -message-name arw.auto*
Time                Node             Severity      Event
------------------- ---------------- ------------- ---------------------------
7/25/2024 16:53:10  PS-C250-01       NOTICE        arw.auto.switch.enabled: Anti-ransomware has been automatically switched from learning mode to enabled on volume "cifs101" in SVM "vs_cifs11".

> security anti-ransomware volume show -vserver vs_cifs11 -volume cifs101

      Vserver Name: vs_cifs11
       Volume Name: cifs101
             State: enabled
Dry Run Start Time: -
Attack Probability: none
   Attack Timeline: -
 Number of Attacks: -
```
30日後にMail通知されている事が確認できます。
<img width="600" alt="qiita-square" src=https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1268577/b20fed4b-9357-b1d8-bfc4-3ef06da244c5.png>



### 2. 統計値の見方

**security anti-ransomware volume workload-behavior showコマンドを利用**することで、書き込まれている**拡張子の数や種類、高エントロピーの書き込みの割合や書き込み速度、ファイルの作成や削除、Rename数について確認**する事ができます。

**<font color="Red">統計値については、20分間のサンプリングで実施の為**</font>、結果確認までに暫く時間が掛かります。
サンプリング期間の記載は[KB](https://kb.netapp.com/on-prem/ontap/da/NAS/NAS-KBs/Understanding_ARP_snapshot_protection_and_attack_detection)を参照頂ければと思います。


```bash:
> security anti-ransomware volume workload-behavior show -vserver vs_cifs11 -volume cifs100
                                Vserver: vs_cifs11
                                          Volume: cifs100
                        File Extensions Observed: txt, png, exe, mp3, jpg, pdf,
                                                  dotx, xlsx, csv, pptx, pem,
                                                  aa1, aa2, aa3, aa4, aa5, aa9,
                                                  aa7, aa8, aa6
              Number of File Extensions Observed: 20

 Historical Statistics
              High Entropy Data Write Percentage: 86
   High Entropy Data Write Peak Rate (KB/Minute): 21380
              File Create Peak Rate (per Minute): 20
              File Delete Peak Rate (per Minute): 10
              File Rename Peak Rate (per Minute): 10
(中略)
```

#### 2-1. 観測済の拡張子について
**File Extensions ObservedやNumber of File Extensions Observed**から、ARP対象のVolumeに対して書き込まれた**ファイルの拡張子について確認**することができます。
上記の観測済の拡張子(File Extensions Observed)については、**出力のフォーマットエラーや切り捨てエラーを防ぐため<font color="Red">50個しか返されない</font>**[仕様](https://kb.netapp.com/on-prem/ontap/Ontap_OS/OS-KBs/Autonomous_Ransomware_Protection_workload_show_does_not_list_all_known_file_extensions)になっています。


```bash:
#　60種類の拡張子を書き込んだが、表示される拡張子は50個分
> security anti-ransomware volume workload-behavior show -vserver vs_cifs11 -volume cifs200
                                         Vserver: vs_cifs11
                                          Volume: cifs200
                        File Extensions Observed: txt, aa4, aa5, aa7, aa14,
                                                  aa16, aa22, aa23, aa25, aa28,
                                                  aa39, aa40, aa41, aa45, aa48,
                                                  aa49, aa56, aa59, aa1, aa3,
                                                  aa6, aa11, aa13, aa18, aa19,
                                                  aa21, aa24, aa26, aa29, aa34,
                                                  aa35, aa37, aa38, aa42, aa43,
                                                  aa44, aa50, aa55, aa2, aa8,
                                                  aa9, aa10, aa12, aa15, aa17,
                                                  aa20, aa30, aa31, aa32, aa33
              Number of File Extensions Observed: 60
(中略)
```

但し、**ARP有効後に検知したSurge Observed(異常検知)については、50以上の拡張子の表示がなされます。**
```bash:
#　Surge Observedでは書き込んだ61種類の拡張子が表示される
> security anti-ransomware volume workload-behavior show -vserver vs_cifs11 -volume cifs200
                                         Vserver: vs_cifs11
                                          Volume: cifs200
                        File Extensions Observed: txt, aa4, aa5, aa7, aa14,
                                                  aa16, aa22, aa23, aa25, aa28,
                                                  aa39, aa40, aa41, aa45, aa48,
                                                  aa49, aa56, aa59, aa1, aa3,
                                                  aa6, aa11, aa13, aa18, aa19,
                                                  aa21, aa24, aa26, aa29, aa34,
                                                  aa35, aa37, aa38, aa42, aa43,
                                                  aa44, aa50, aa55, aa2, aa8,
                                                  aa9, aa10, aa12, aa15, aa17,
                                                  aa20, aa30, aa31, aa32, aa33
              Number of File Extensions Observed: 121
(中略)

 Surge Observed
                                  Surge Timeline: -
              High Entropy Data Write Percentage: -
   High Entropy Data Write Peak Rate (KB/Minute): -
              File Create Peak Rate (per Minute): -
              File Delete Peak Rate (per Minute): -
              File Rename Peak Rate (per Minute): -
                  Newly Observed File Extensions: aa69, aa70, aa72, aa75, aa77,
                                                  aa81, aa83, aa87, aa89, aa90,
                                                  aa92, aa94, aa103, aa105,
                                                  aa116, aa117, aa118, aa119,
                                                  aa62, aa63, aa64, aa67, aa68,
                                                  aa71, aa73, aa74, aa76, aa78,
                                                  aa80, aa82, aa84, aa85, aa86,
                                                  aa91, aa93, aa96, aa98, aa99,
                                                  aa100, aa101, aa102, aa104,
                                                  aa106, aa107, aa108, aa110,
                                                  aa111, aa112, aa113, aa114,
                                                  aa120, aa65, aa66, aa79,
                                                  aa88, aa97, aa109, aa60,
                                                  aa61, aa115, aa95
        Number of Newly Observed File Extensions: 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
                                                  1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
                                                  1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
                                                  1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
                                                  1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
                                                  1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
                                                  1
```

#### 2-2. 高エントロピーのデータ書き込みについて
**ONTAPでは、書き込まれたファイル単位のエントロピー計算を実施していない**為、仮に**200GBの暗号化ファイルを20分間かけて書き込みを実施したとしても、以下のような値にはなりません。**

**High Entropy Data Write Peak Rate (KB/Minute): 10485760(10GB)**
(20分で200GBなら1分で10GBというような計算)

**ONTAPでは書き込まれたファイルを細かい単位で分割し、その小さい単位でエントロピー計算**をしているので暗号化ファイル内の一部でエントロピーが低い部分があれば、その部分は高エントロピーという扱いにはならない形です。

```bash:
> security anti-ransomware volume workload-behavior show -vserver vs_cifs11 -volume cifs100
                                Vserver: vs_cifs11
                                 Volume: cifs100
(中略)
 Historical Statistics
              High Entropy Data Write Percentage: 86
   High Entropy Data Write Peak Rate (KB/Minute): 21380
              File Create Peak Rate (per Minute): 20
              File Delete Peak Rate (per Minute): 10
              File Rename Peak Rate (per Minute): 10
(中略)
```

一般的な**エントロピー計算で用いられる関数について考察してみると、サイズが大きいファイルは計算に時間が掛かる事が予測される**ので、**ファイル単位のエントロピー計算は現実的では無い**という考え方もできるかと思います。

分かり易さ中心での説明となりますが、以下のような計算をしているので、時間がかかるイメージとなります。
- ファイル全体をスキャンして利用している文字を全て洗い出す
- 各文字列の出現割合を算出する
- 各文字の出現割合を以下の式に代入して、全文字分足し合わせる

```math
H(x) = - \sum_{x}P(x)\log_2 P(x)
```


**エントロピーに関しては、別の[記事](https://qiita.com/s_yosh1d/items/5e09176331bf846fb8be)に記載している**ので、参考にして頂けばと思います。



#### 2-3. ファイル作成、削除、Renameについて
**統計値については、20分間のサンプリングを実施**しているので、コマンド例のように
**File Create Peak Rate (per Minute): 1**
というような形になるには、**サンプリング期間内に20ファイルの作成が必要**になります。
(20ファイル作成を実施すれば、1分あたり1ファイルという形で平均化される)


```bash:
> security anti-ransomware volume workload-behavior show -vserver vs_cifs11 -volume cifs101
                                         Vserver: vs_cifs11
                                          Volume: cifs101
                        File Extensions Observed: txt, zip, jpg, msi
              Number of File Extensions Observed: 4

 Historical Statistics
              High Entropy Data Write Percentage: -
   High Entropy Data Write Peak Rate (KB/Minute): -
              File Create Peak Rate (per Minute): 1
              File Delete Peak Rate (per Minute): -
              File Rename Peak Rate (per Minute): -
(中略)
```

#### 2-4. Surge Observed(異常検知)
**ARPを有効化した後に、学習期間と違った振る舞いをすると表示**されるようになります。
**異常検知の検出にあたって、どの程度急増すると異常検知として扱うかについてパラメータ調整する事が可能**です。


検証環境では、少ないファイル数の再作成や新しい拡張子数でも検知できるようにパラメータ値(数値部分)を設定する事が考えられますが、[KBへの記載](https://kb.netapp.com/on-prem/ontap/da/NAS/NAS-KBs/Understanding_ARP_snapshot_protection_and_attack_detection)があるように、<font color="Red">**Surge Observedは学習期間が最小で30日実施されている事を前提に動作します。**</font>
(学習期間が短いと上手くファイル作成や削除、エントロピーのSurge検知できない)

|パラメータ  |説明  |
|---|---|
|high-entropy-data-surge-notify-percentage|過去の観測値と比較したエントロピーにおいて安全と考えられる急増%|
|file-create-rate-surge-notify-percentage|過去の観測値と比較したファイルcreateにおいて安全と考えられる急増%|
|file-delete-rate-surge-notify-percentage|過去の観測値と比較したファイルDeleteにおいて安全と考えられる急増%|
|file-rename-rate-surge-notify-percentage|過去の観測値と比較したファイルRenameにおいて安全と考えられる急増%|
|never-seen-before-file-extn-count-notify-threshold|Create/Rename操作で、過去に見たことのない拡張子数の閾値|
|never-seen-before-file-extn-duration-in-hours|	以前に見たことがない拡張子の継続時間を時間単位で表示(上記optionsとセット)|

なお、パラメータ値のデフォルトは、以下のようになっています。
- 急増したとみなす値は100%(学習期間の統計値と比較して)
- 拡張子は20種類以上
- 拡張子は24時間単位で計測

```bash:
# 検知の為のパラメータ値の確認
> security anti-ransomware volume attack-detection-parameters show -vserver vs_cifs11 -volume cifs200
                                             Vserver Name : vs_cifs11
                                              Volume Name : cifs200
            Is Detection Based on High Entropy Data Rate? : true
  Is Detection Based on Never Seen before File Extension? : true
                  Is Detection Based on File Create Rate? : true
                  Is Detection Based on File Rename Rate? : true
                  Is Detection Based on File Delete Rate? : true
           Is Detection Relaxing Popular File Extensions? : true
                High Entropy Data Surge Notify Percentage : 100
                 File Create Rate Surge Notify Percentage : 100
                 File Rename Rate Surge Notify Percentage : 100
                 File Delete Rate Surge Notify Percentage : 100
 Never Seen before File Extensions Count Notify Threshold : 20
       Never Seen before File Extensions Duration in Hour : 24
```


**Historical Statistics(学習時のデータ)やSurge Observed(ARP有効後の異常検知)のHigh Entropy Data Write Percentageについては上限は100**となっています。
**Historical Statisticsで51%以上の場合**、**検知の為のパラメータであるhigh-entropy-data-surge-notify-percentageが100％に設定すると**は、100%の上限を超えてしまう為、**Surge Observedとは見なされず監視できない形**になります。

本記事では、Surge Observedを検出しやすいように、パラメータ値の急増%や、拡張子の数を少なく設定して検証を実施しますが、恒常的なI/Oを30日以上かけた学習を実施していないので、拡張子のに関してのみ利用しています。


```bash:
> anti-ransomware volume attack-detection-parameters  show -vserver vs_cifs11 -volume cifs101
  (security anti-ransomware volume attack-detection-parameters show)
                                             Vserver Name : vs_cifs11
                                              Volume Name : cifs101
            Is Detection Based on High Entropy Data Rate? : true
  Is Detection Based on Never Seen before File Extension? : true
                  Is Detection Based on File Create Rate? : true
                  Is Detection Based on File Rename Rate? : true
                  Is Detection Based on File Delete Rate? : true
           Is Detection Relaxing Popular File Extensions? : true
                High Entropy Data Surge Notify Percentage : 10
                 File Create Rate Surge Notify Percentage : 10
                 File Rename Rate Surge Notify Percentage : 10
                 File Delete Rate Surge Notify Percentage : 10
 Never Seen before File Extensions Count Notify Threshold : 2
       Never Seen before File Extensions Duration in Hour : 1
```

以下のような表示をさせる為には、**学習期間が最小で30日実施し恒常的なI/Oがかかっている必要があります。**
```bash:
> anti-ransomware volume workload-behavior show -vserver vs_cifs11 -volume cifs101
  (security anti-ransomware volume workload-behavior show)
                                         Vserver: vs_cifs11
                                          Volume: cifs101
                        File Extensions Observed: txt, msi, exe, TMP, lnk,
                                                  dotx, jpg, tmp
              Number of File Extensions Observed: 8
(中略)
 Surge Observed
                                  Surge Timeline: 12/26/2023 10:21:31
              High Entropy Data Write Percentage: -
   High Entropy Data Write Peak Rate (KB/Minute): -
              File Create Peak Rate (per Minute): 53
              File Delete Peak Rate (per Minute): -
              File Rename Peak Rate (per Minute): -
                  Newly Observed File Extensions: -
        Number of Newly Observed File Extensions: -
```




### 3. ARP Snapshotの作成と管理
ARP SnapShotは通常のSnapshotとは異なる考え方が求められ、その運用方針も特徴的なものになっています。特に、<font color="Red">**ARP SnapShotではシステムの信頼性を維持するためにできるだけSnapShotを残す挙動**</font>になります。


**ARP Snapshotについて、簡単に纏めると以下のような特徴**があります。


- 通常のSnapShotとは別でARP Snapshotとして世代管理
- 最大世代まで到達すると、新規ARP Snapshot作成時に偶数世代のSnapshotが削除
- **パラメータ値通りに機能するのは攻撃の可能性がnoneの場合**
- arw.snap.normal.retain.interval.hoursを越えてもARP Snapshotが1つ保持される
- 攻撃の可能性がlowの場合、ARP SnapShot作成後に攻撃発生が無い場合、
5日後に攻撃可能性がlowで無くなる　(5日については調整不可)
- 攻撃の可能性がmoderateの場合、誤検知と設定するまでARP Snapshotを保持
- ARP SnapshotやSurge ObservedによるSnapshot作成間隔はvserver optionsで管理



**ARPSnapshotの世代管理や作成間隔については、vserver optionsを用いて設定(nodeのoptions)を変更**する事ができ、変更可能なパラメータは以下の通りです。

|パラメータ  |説明  |
|---|---|
|arw.snap.create.interval.hours|ARW Snapshotの作成間隔（時間）を指定|
|arw.snap.create.interval.hours.post.max.count|既に最大数のARW Snapshotとなっている状態の時、ARW Snapshotの間隔（時間）を指定|
|arw.snap.max.count |ARW Snapshotコピーの最大数|
|arw.snap.max.retain.interval.days|ARW Snapshotを保持できる最長期間（日数）を指定|
|arw.snap.new.extns.interval.hours|新しい拡張子の検出時に作成されるARP Snapshotの間隔|
|arw.snap.normal.retain.interval.hours |ARW Snapshotを保持する期間（時間）を指定|
|arw.snap.surge.interval.days |	surgeによるARW Snapshotの間隔（日数）を指定|

```bash:
#　設定世代数の確認
> vserver options -option-name arw* -vserver PS-C250-0*

PS-C250-01
    arw.snap.create.interval.hours    1                    (same value in local+partner recommended)
    arw.snap.create.interval.hours.post.max.count  4       (same value in local+partner recommended)
    arw.snap.max.count                5                    (same value in local+partner recommended)
    arw.snap.max.retain.interval.days  3                   (same value in local+partner recommended)
    arw.snap.new.extns.interval.hours  24                  (same value in local+partner recommended)
    arw.snap.normal.retain.interval.hours  48              (same value in local+partner recommended)
    arw.snap.surge.interval.days      1                    (same value in local+partner recommended)

PS-C250-02
    arw.snap.create.interval.hours    1                    (same value in local+partner recommended)
    arw.snap.create.interval.hours.post.max.count  4       (same value in local+partner recommended)
    arw.snap.max.count                5                    (same value in local+partner recommended)
    arw.snap.max.retain.interval.days  3                   (same value in local+partner recommended)
    arw.snap.new.extns.interval.hours  24                  (same value in local+partner recommended)
    arw.snap.normal.retain.interval.hours  48              (same value in local+partner recommended)
    arw.snap.surge.interval.days      1                    (same value in local+partner recommended)
14 entries were displayed.
```


#### 3-1. 通常のSnapshotとの世代管理について
**ARP Snapshotは、通常のスケジュールSnapshotとは別に世代管理されます。**
以下のCLIの出力例にあるように、通常のスケジュールSnapshot世代数に影響する事はありません。

```bash:
# 通常のSnapshotの世代管理の確認
> volume show -vserver vs_cifs11 -volume cifs300 -fields snapshot-policy
vserver   volume  snapshot-policy
--------- ------- ---------------
vs_cifs11 cifs300 hourly

# 時間単位で5世代作成という事の確認
> snapshot policy show -policy hourly
Vserver: PS-C250
                         Number of Is
Policy Name              Schedules Enabled Comment
------------------------ --------- ------- ----------------------------------
hourly                           1 true    -
    Schedule       Count  Prefix        SnapMirror Label    Retention Period
    -------------- -----  ------------- ------------------  ------------------
    hourly             5  hourly        -                   0 seconds


# 通常のsnapshotとARP Snapshotが合わせて8世代となっている事の確認
> snapshot show -vserver vs_cifs11 -volume cifs300
                                                                 ---Blocks---
Vserver  Volume   Snapshot                                  Size Total% Used%
-------- -------- ------------------------------------- -------- ------ -----
vs_cifs11 cifs300
                  hourly.2024-07-26_1205                  2.66MB     0%    0%
                  hourly.2024-07-26_1305                   236KB     0%    0%
                  Anti_ransomware_backup.2024-07-26_1356   208KB     0%    0%
                  hourly.2024-07-26_1405                   232KB     0%    0%
                  hourly.2024-07-26_1505                   248KB     0%    0%
                  Anti_ransomware_backup.2024-07-26_1514 18.18MB     0%    1%
                  hourly.2024-07-26_1605                  1.27MB     0%    0%
                  Anti_ransomware_backup.2024-07-26_1618 385.1MB     2%   14%
8 entries were displayed.
```

#### 3-2. ARP Snapshot世代管理による偶数世代の削除について

**ARP Snapshotでは設定値以上のSnapshotが作成される際には、既存のARP Snapshotの偶数世代のSnapshotを削除される仕様**で、これにより、直近のみのSnapshotを保持するのではなく、幅広い時間範囲のSnapshotが存在することを保証しています。

<img width="450" alt="qiita-square" src=https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1268577/68586916-b702-d137-7e23-563f914a0892.png>



以下は、**ARP Snapshotの最大世代数は5世代で設定した際の例**となります。
(世代と考えるよりも作成回数とした方が理解しやすいかもしれないです)

```bash:
#　設定世代数の確認
> vserver options -option-name arw.snap.max.count  -vserver PS-C250-0*

PS-C250-01
    arw.snap.max.count                5                    (same value in local+partner recommended)

PS-C250-02
    arw.snap.max.count                5                    (same value in local+partner recommended)
2 entries were displayed.



# 作成済のARP Snapshotの確認
> snapshot show -vserver vs_cifs11 -volume cifs300 -fields create-time
vserver   volume  snapshot                               create-time
--------- ------- -------------------------------------- ------------------------
vs_cifs11 cifs300 Anti_ransomware_backup.2024-07-27_2107 Sat Jul 27 21:07:40 2024
vs_cifs11 cifs300 Anti_ransomware_backup.2024-07-27_2208 Sat Jul 27 22:08:39 2024
vs_cifs11 cifs300 Anti_ransomware_backup.2024-07-27_2313 Sat Jul 27 23:13:11 2024
vs_cifs11 cifs300 Anti_ransomware_backup.2024-07-28_0014 Sun Jul 28 00:14:06 2024
vs_cifs11 cifs300 Anti_ransomware_backup.2024-07-28_0115 Sun Jul 28 01:15:59 2024
5 entries were displayed.


#追加でARP Snapshotが作成された際の世代の変化(6回目の作成)
#偶数世代が削除されて5世代が4世代になっている
> event log show -severity NOTICE -message-name arw.snapshot.created
Time                Node             Severity      Event
------------------- ---------------- ------------- ---------------------------
7/28/2024 02:18:19  PS-C250-01       NOTICE        arw.snapshot.created: ARP snapshot created on volume "cifs300" (UUID: "0ec4d9e0-4961-11ef-b600-d039ea5905a2") in SVM "vs_cifs11" (UUID: "09ec4844-27c4-11ef-b600-d039ea5905a2") at "2024-07-28_0218". Reason: "High entropy writes detected".
7/28/2024 01:15:59  PS-C250-01       NOTICE        arw.snapshot.created: ARP snapshot created on volume "cifs300" (UUID: "0ec4d9e0-4961-11ef-b600-d039ea5905a2") in SVM "vs_cifs11" (UUID: "09ec4844-27c4-11ef-b600-d039ea5905a2") at "2024-07-28_0115". Reason: "High entropy writes detected".
7/28/2024 00:14:06  PS-C250-01       NOTICE        arw.snapshot.created: ARP snapshot created on volume "cifs300" (UUID: "0ec4d9e0-4961-11ef-b600-d039ea5905a2") in SVM "vs_cifs11" (UUID: "09ec4844-27c4-11ef-b600-d039ea5905a2") at "2024-07-28_0014". Reason: "High entropy writes detected".
7/27/2024 23:13:11  PS-C250-01       NOTICE        arw.snapshot.created: ARP snapshot created on volume "cifs300" (UUID: "0ec4d9e0-4961-11ef-b600-d039ea5905a2") in SVM "vs_cifs11" (UUID: "09ec4844-27c4-11ef-b600-d039ea5905a2") at "2024-07-27_2313". Reason: "High entropy writes detected".
7/27/2024 22:08:39  PS-C250-01       NOTICE        arw.snapshot.created: ARP snapshot created on volume "cifs300" (UUID: "0ec4d9e0-4961-11ef-b600-d039ea5905a2") in SVM "vs_cifs11" (UUID: "09ec4844-27c4-11ef-b600-d039ea5905a2") at "2024-07-27_2208". Reason: "High entropy writes detected".
7/27/2024 21:07:40  PS-C250-01       NOTICE        arw.snapshot.created: ARP snapshot created on volume "cifs300" (UUID: "0ec4d9e0-4961-11ef-b600-d039ea5905a2") in SVM "vs_cifs11" (UUID: "09ec4844-27c4-11ef-b600-d039ea5905a2") at "2024-07-27_2107". Reason: "High entropy writes detected"..

> snapshot show -vserver vs_cifs11 -volume cifs300 -fields create-time
vserver   volume  snapshot                               create-time
--------- ------- -------------------------------------- ------------------------
vs_cifs11 cifs300 Anti_ransomware_backup.2024-07-27_2107 Sat Jul 27 21:07:40 2024
vs_cifs11 cifs300 Anti_ransomware_backup.2024-07-27_2313 Sat Jul 27 23:13:11 2024
vs_cifs11 cifs300 Anti_ransomware_backup.2024-07-28_0115 Sun Jul 28 01:15:59 2024
vs_cifs11 cifs300 Anti_ransomware_backup.2024-07-28_0218 Sun Jul 28 02:18:19 2024
4 entries were displayed.
```

偶数世代が削除された後は、最大設定世代数までARP Snapshotを作成し、再度偶数世代を削除するという事を繰り返します。


#### 3-3. arw.snap.create.interval.hours.post.max.countの動作について

本来であれば、本記事ようにのARP Snapshotを最大5世代にしている場合、6世代目を作成する際にはarw.snap.create.interval.hours.post.max.countの時間が適用されるはずですが、仕様としてはさらにその次の世代の作成時に利用されます。

つまり、**arw.snap.max.countの値に2を加えた数にあたるSnapshot作成時にarw.snap.create.interval.hours.post.max.count の設定に準拠する形**となります。
現時点では仕様ですが内部的に不具合(Burt 1596508)として登録済みですので、今後仕様が修正される可能性があります。

```bash:
#最大世代数に達すると4時間経たないとSnapshotを作成できない設定
> vserver options -option-name arw.snap.create.interval.hours* -vserver PS-C250-0*

PS-C250-01
    arw.snap.create.interval.hours    1                    (same value in local+partner recommended)
    arw.snap.create.interval.hours.post.max.count  4       (same value in local+partner recommended)

PS-C250-02
    arw.snap.create.interval.hours    1                    (same value in local+partner recommended)
    arw.snap.create.interval.hours.post.max.count  4       (same value in local+partner recommended)
4 entries were displayed.


#偶数世代が削除される6世代目が1時間後に作成できている形
> event log show -severity NOTICE -message-name arw.snapshot.created
Time                Node             Severity      Event
------------------- ---------------- ------------- ---------------------------
7/28/2024 02:18:19  PS-C250-01       NOTICE        arw.snapshot.created: ARP snapshot created on volume "cifs300" (UUID: "0ec4d9e0-4961-11ef-b600-d039ea5905a2") in SVM "vs_cifs11" (UUID: "09ec4844-27c4-11ef-b600-d039ea5905a2") at "2024-07-28_0218". Reason: "High entropy writes detected".
7/28/2024 01:15:59  PS-C250-01       NOTICE        arw.snapshot.created: ARP snapshot created on volume "cifs300" (UUID: "0ec4d9e0-4961-11ef-b600-d039ea5905a2") in SVM "vs_cifs11" (UUID: "09ec4844-27c4-11ef-b600-d039ea5905a2") at "2024-07-28_0115". Reason: "High entropy writes detected".
7/28/2024 00:14:06  PS-C250-01       NOTICE        arw.snapshot.created: ARP snapshot created on volume "cifs300" (UUID: "0ec4d9e0-4961-11ef-b600-d039ea5905a2") in SVM "vs_cifs11" (UUID: "09ec4844-27c4-11ef-b600-d039ea5905a2") at "2024-07-28_0014". Reason: "High entropy writes detected".
7/27/2024 23:13:11  PS-C250-01       NOTICE        arw.snapshot.created: ARP snapshot created on volume "cifs300" (UUID: "0ec4d9e0-4961-11ef-b600-d039ea5905a2") in SVM "vs_cifs11" (UUID: "09ec4844-27c4-11ef-b600-d039ea5905a2") at "2024-07-27_2313". Reason: "High entropy writes detected".
7/27/2024 22:08:39  PS-C250-01       NOTICE        arw.snapshot.created: ARP snapshot created on volume "cifs300" (UUID: "0ec4d9e0-4961-11ef-b600-d039ea5905a2") in SVM "vs_cifs11" (UUID: "09ec4844-27c4-11ef-b600-d039ea5905a2") at "2024-07-27_2208". Reason: "High entropy writes detected".
7/27/2024 21:07:40  PS-C250-01       NOTICE        arw.snapshot.created: ARP snapshot created on volume "cifs300" (UUID: "0ec4d9e0-4961-11ef-b600-d039ea5905a2") in SVM "vs_cifs11" (UUID: "09ec4844-27c4-11ef-b600-d039ea5905a2") at "2024-07-27_2107". Reason: "High entropy writes detected".


> snapshot show -vserver vs_cifs11 -volume cifs300 -fields create-time
vserver   volume  snapshot                               create-time
--------- ------- -------------------------------------- ------------------------
vs_cifs11 cifs300 Anti_ransomware_backup.2024-07-27_2107 Sat Jul 27 21:07:40 2024
vs_cifs11 cifs300 Anti_ransomware_backup.2024-07-27_2313 Sat Jul 27 23:13:11 2024
vs_cifs11 cifs300 Anti_ransomware_backup.2024-07-28_0115 Sun Jul 28 01:15:59 2024
vs_cifs11 cifs300 Anti_ransomware_backup.2024-07-28_0218 Sun Jul 28 02:18:19 2024
4 entries were displayed.


#7世代目は4時間後に作成成功する事の確認(1時間後だと作成されない)
> event log show -severity NOTICE -message-name arw.snapshot.created
Time                Node             Severity      Event
------------------- ---------------- ------------- ---------------------------
7/28/2024 06:21:50  PS-C250-01       NOTICE        arw.snapshot.created: ARP snapshot created on volume "cifs300" (UUID: "0ec4d9e0-4961-11ef-b600-d039ea5905a2") in SVM "vs_cifs11" (UUID: "09ec4844-27c4-11ef-b600-d039ea5905a2") at "2024-07-28_0621". Reason: "High entropy writes detected".
7/28/2024 02:18:19  PS-C250-01       NOTICE        arw.snapshot.created: ARP snapshot created on volume "cifs300" (UUID: "0ec4d9e0-4961-11ef-b600-d039ea5905a2") in SVM "vs_cifs11" (UUID: "09ec4844-27c4-11ef-b600-d039ea5905a2") at "2024-07-28_0218". Reason: "High entropy writes detected".
7/28/2024 01:15:59  PS-C250-01       NOTICE        arw.snapshot.created: ARP snapshot created on volume "cifs300" (UUID: "0ec4d9e0-4961-11ef-b600-d039ea5905a2") in SVM "vs_cifs11" (UUID: "09ec4844-27c4-11ef-b600-d039ea5905a2") at "2024-07-28_0115". Reason: "High entropy writes detected".
7/28/2024 00:14:06  PS-C250-01       NOTICE        arw.snapshot.created: ARP snapshot created on volume "cifs300" (UUID: "0ec4d9e0-4961-11ef-b600-d039ea5905a2") in SVM "vs_cifs11" (UUID: "09ec4844-27c4-11ef-b600-d039ea5905a2") at "2024-07-28_0014". Reason: "High entropy writes detected".
7/27/2024 23:13:11  PS-C250-01       NOTICE        arw.snapshot.created: ARP snapshot created on volume "cifs300" (UUID: "0ec4d9e0-4961-11ef-b600-d039ea5905a2") in SVM "vs_cifs11" (UUID: "09ec4844-27c4-11ef-b600-d039ea5905a2") at "2024-07-27_2313". Reason: "High entropy writes detected".
7/27/2024 22:08:39  PS-C250-01       NOTICE        arw.snapshot.created: ARP snapshot created on volume "cifs300" (UUID: "0ec4d9e0-4961-11ef-b600-d039ea5905a2") in SVM "vs_cifs11" (UUID: "09ec4844-27c4-11ef-b600-d039ea5905a2") at "2024-07-27_2208". Reason: "High entropy writes detected".
7/27/2024 21:07:40  PS-C250-01       NOTICE        arw.snapshot.created: ARP snapshot created on volume "cifs300" (UUID: "0ec4d9e0-4961-11ef-b600-d039ea5905a2") in SVM "vs_cifs11" (UUID: "09ec4844-27c4-11ef-b600-d039ea5905a2") at "2024-07-27_2107". Reason: "High entropy writes detected".


> snapshot show -vserver vs_cifs11 -volume cifs300 -fields create-time
vserver   volume  snapshot                               create-time
--------- ------- -------------------------------------- ------------------------
vs_cifs11 cifs300 Anti_ransomware_backup.2024-07-27_2107 Sat Jul 27 21:07:40 2024
vs_cifs11 cifs300 Anti_ransomware_backup.2024-07-27_2313 Sat Jul 27 23:13:11 2024
vs_cifs11 cifs300 Anti_ransomware_backup.2024-07-28_0115 Sun Jul 28 01:15:59 2024
vs_cifs11 cifs300 Anti_ransomware_backup.2024-07-28_0218 Sun Jul 28 02:18:19 2024
vs_cifs11 cifs300 Anti_ransomware_backup.2024-07-28_0621 Sun Jul 28 06:21:50 2024
5 entries were displayed.
```


#### 3-4. ARP Snapshot保持期限の動作について

短い時間で状態変化を確認したいので、ARPSnapshotの世代保持期間を以下のように変更しています。

- ARW Snapshotを保持する期間は12時間
- ARW Snapshotを保持できる最長期間は1日


```bash:
#最大世代数に達すると4時間経たないとSnapshotを作成できない設定
> vserver options -option-name arw.snap.normal.retain.interval.hours   -vserver PS-C250-0*

PS-C250-01
    arw.snap.normal.retain.interval.hours  12              (same value in local+partner recommended)

PS-C250-02
    arw.snap.normal.retain.interval.hours  12              (same value in local+partner recommended)
2 entries were displayed.

PS-C250::> vserver options -option-name arw.snap.max.retain.interval.days  -vserver PS-C250-0*

PS-C250-01
    arw.snap.max.retain.interval.days  1                   (same value in local+partner recommended)

PS-C250-02
    arw.snap.max.retain.interval.days  1                   (same value in local+partner recommended)
2 entries were displayed.
```

#### 攻撃の可能性がnoneの場合(パラメータ通りの動作確認)

高エントロピーデータをWriteして攻撃の可能性が無いARP SnapShotを作成し、時間経過によるARP Snapshotの保持期間について確認します。

攻撃の可能性がnoneの場合は、以下のような挙動となります。
- **arw.snap.normal.retain.interval.hoursが経過すると1世代だけ残る**
- **arw.snap.max.retain.interval.daysが経過するとARP Snapshotは全て削除**


```bash:
# 攻撃の可能性がnoneとなっている事の確認
> anti-ransomware volume show -vserver vs_cifs11 -volume cifs300
  (security anti-ransomware volume show)

      Vserver Name: vs_cifs11
       Volume Name: cifs300
             State: enabled
Dry Run Start Time: -
Attack Probability: none
   Attack Timeline: -
 Number of Attacks: -


# 現在時刻とSnapshotの状態を確認
> date; snapshot show -vserver vs_cifs11 -volume cifs300
Node      Date                     Time zone
--------- ------------------------ -------------------------
PS-C250-01
          Tue Jul 30 01:13:05 2024 Asia/Tokyo
PS-C250-02
          Tue Jul 30 01:13:05 2024 Asia/Tokyo
2 entries were displayed.

                                                                 ---Blocks---
Vserver  Volume   Snapshot                                  Size Total% Used%
-------- -------- ------------------------------------- -------- ------ -----
vs_cifs11 cifs300
                  Anti_ransomware_backup.2024-07-29_1741 21.68MB     0%    1%
                  Anti_ransomware_backup.2024-07-29_1936 47.32MB     0%    2%
                  Anti_ransomware_backup.2024-07-29_2037 182.8MB     1%    6%
3 entries were displayed.


# ARP SnapShot作成後に、12時間以上1日未満が経過した際の現在時刻とSnapshotの状態を確認
> date; snapshot show -vserver vs_cifs11 -volume cifs300
Node      Date                     Time zone
--------- ------------------------ -------------------------
PS-C250-01
          Tue Jul 30 09:42:52 2024 Asia/Tokyo
PS-C250-02
          Tue Jul 30 09:42:52 2024 Asia/Tokyo
2 entries were displayed.

                                                                 ---Blocks---
Vserver  Volume   Snapshot                                  Size Total% Used%
-------- -------- ------------------------------------- -------- ------ -----
vs_cifs11
         cifs300
                  Anti_ransomware_backup.2024-07-29_2037 182.8MB     1%    6%

# ARP SnapShot作成後に、1日が経過した状態のARP Snapshot
> date; snapshot show -vserver vs_cifs11 -volume cifs300
Node      Date                     Time zone
--------- ------------------------ -------------------------
PS-C250-01
          Tue Jul 30 21:29:01 2024 Asia/Tokyo
PS-C250-02
          Tue Jul 30 21:29:01 2024 Asia/Tokyo
2 entries were displayed.

There are no entries matching your query.
```

ARP Snapshotが削除された際のlogについてはブラウザからClusterのIPにspiアクセスし、mgwd.logから確認する事ができます。
**https://management_LIF_IP/spi/node_name/etc/log/mlog/mgwd.log**

```bash:
# DownloadしたlogをLinuxで確認
> cat mgwd.log
(中略)
00000016.0135089d 03513200 Tue Jul 30 2024 20:37:57 +09:00 [kern_mgwd:error:3140] volume->removeSnapshotOwner succeeded [ARW_LOG src/tables/antiransomware/anti_ransomware_volume.cc:1394 in 'create_imp']
00000016.0135089e 03513200 Tue Jul 30 2024 20:37:57 +09:00 [kern_mgwd:debug:3140] Snapshot Anti_ransomware_backup.2024-07-29_2037 deleted. vol = cifs300, vs = vs_cifs11 [ARW_LOG src/tables/antiransomware/anti_ransomware_volume.cc:1401 in 'create_imp']
(中略)
```


## 参考及びリンク
[vserver modify](https://docs.netapp.com/us-en/ontap-cli-9141//vserver-modify.html)

[Autonomous Ransomware Protection workload show does not list all known file extensions](https://kb.netapp.com/on-prem/ontap/Ontap_OS/OS-KBs/Autonomous_Ransomware_Protection_workload_show_does_not_list_all_known_file_extensions)

[Understanding ARP snapshot protection and attack detection](https://kb.netapp.com/on-prem/ontap/da/NAS/NAS-KBs/Understanding_ARP_snapshot_protection_and_attack_detection)

[Modify options for automatic Snapshot copies](https://docs.netapp.com/us-en/ontap/anti-ransomware/modify-automatic-shapshot-options-task.html)

[情報量とエントロピー【自分用メモ】](https://qiita.com/s_yosh1d/items/5e09176331bf846fb8be)

[ONTAPのSecurity機能について9【Autonomous Ransomware Protection(ARP)】](https://qiita.com/s_yosh1d/items/a5d01c142469498821ad)