ONTAPのSecurity機能について7【AntiVirus機能(Deep Instinctとの連携)】

# はじめに
NetApp Storageである**ONTAPはシステムをマルウェアやウイルスから保護し、データの安全性を維持する為に外部のVirusScanサーバと連携が出来る**Security機能を持っています。
2024年1月の段階では、**深層学習を利用したDeep Instinctと連携が取れる**ようになっています。

**Deep InstinctはAIを活用する事で、未知のウイルスに対しても予測し防御**しますので、次世代型アンチウイルスやEDR(Endpoint Detection and Response)をすり抜けるようなマルウェアに対しても**高い検知率で予防が可能**となり、感染予防対策を重視した運用が可能になります。

また、**検知や隔離が自動化されている為、運用部門の負荷を軽減**し、セキュリティ対策に対する総保有コストを最適化することができます。

<img width="600" alt="qiita-square" src=https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1268577/00bd27c0-1c82-7ea5-de87-a7fed644b65c.png>

## 何をしたい？できる？
<font color="Red">**Deep Instinct社のStorage AgentのInstall**</font>
<font color="Red">**ONTAP側VirusScanの設定**</font>
**ファイルサイズの違いによるVirusScanサーバのCPU利用率の比較**
**VirusScanの設定有無によるWrite速度の違いを測定**

## ONTAPにおけるAntiVirus連携
**ONTAPのVirusScanは**、サードパーティ製のVirus対策SoftwareとONTAPを組み合わせた機能で、**どのファイルを何時Scanするか柔軟に制御する事ができます。**

|ベンダー|製品|
|:---|:---|
|Trellix(旧Macfee) |Endpoint Security Storage Protection|
|Broadcom(旧Symantec) |Symantec Protection Engine for Network Attached Storage|
|Trend Micro|ServerProtect for Storage|
|Sentinel One|Threat Detection for NetApp|
|Deep Instinct |Deep Instinct Prevention for Storage|



VirusScan処理は、サードパーティベンダーのVirus対策ソフトウェアをInstallしているサーバ上で実行され、**VirusScanサーバにインストールされる ONTAP Antivirus Connectorを使い、ONTAPとVirus対策Software間の通信の処理を実施**します。

ONTAPのVirusScanでは、以下のOn-Access ScanとOn-Demand Scanの実行が可能です。

 - **On-Access Scan：**　　
ClinetからONTAPへのファイルのOpen, Read, Rename, Closeの際にVirusScan
 - **On-Demand Scan：**
Scan処理をスケジュールに基づいて実行され、ScanしたファイルのScanテータスを更新するため、 SMB 経由で次回にアクセスされた時に（ファイル変更無い場合は）ファイルアクセスレイテンシが低減
    
<img width="600" alt="qiita-square" src=https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1268577/df063d4c-6641-c419-a047-420a7f56c3bb.png>

## 記事における環境情報
本記事では、以下の環境で実施した内容となります。
**分かり易くするために、Network構成は単純化しています。**
- ONTAP  : 9.13.1
- Windows Active Directory環境
- VirusScan:Windows Server 2019
(**推奨の4core cpu＋16GB Memoryで構成**)

<img width="600" alt="qiita-square" src=https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1268577/883eec1c-6872-f457-708f-7e9c589ec246.png>


## 設定手順

手順内で指定されているSVM名やPool名といったパラメータは、環境により異なるので適宜変更して下さい。

#### 1. Deep Instinctの管理コンソール内の操作
:::note warn
**事前にテナント払い出しをDeep Instinct社側で実施頂く必要があります。**
:::


##### 1-1. Deep Instinctの管理コンソールへログイン
用意されたテナントへWebブラウザを使いアクセスします。
<img width="600" alt="qiita-square" src=https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1268577/738c2b63-b3f0-b7db-7e31-b168f3fadcfa.png>

<img width="600" alt="qiita-square" src=https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1268577/51e367e3-154f-db1b-ce4c-b66d25bf2900.png>

##### 1-2. Protected Storage作成及びPolicy適用

画面左側の[Asset]から[Protected Storage]を選択し、
表示された画面の右上から[Create Protected Storage]をクリックします。

<img width="400" alt="qiita-square" src=https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1268577/3f2e60be-d7fd-3e58-ff46-fc8d8c6875cc.png>

<img width="600" alt="qiita-square" src=https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1268577/093019ac-033f-8194-7f89-6b07cce49478.png>


表示された画面で任意のProtected Storage名を入力、
**VenderはNetAPP(VScan)を選択**し、PolicyもDefaultのものを選択します。

:::note warn
**個別にPolicy作成は実施しない手順例です。**
:::

<img width="400" alt="qiita-square" src=https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1268577/8183a435-5ab0-2627-a983-c409199af789.png>


##### 1-3. Storage AgentのDownload

画面左側の[Setting]から[Deproyment]を選択します。

<img width="400" alt="qiita-square" src=https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1268577/02468b4a-29de-0bbb-1be3-6a2acbeeaf94.png>



表示された画面の[Download Installation File]からStorage AgentのDownloadを実施します。
![010.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1268577/7e2a9912-ca8a-0fc8-ffe2-db35365e97e1.png)


表示画面ではInstall時に必要なTokenが確認でき、作成したProtected Storageを選択すると画面下方にInstall時に利用するパラメータを確認する事ができます。

![011.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1268577/b1bd7652-089f-be0f-7dce-78c59c811522.png)

#### 2. Storage AgentとのONTAP Antivirus ConnectorのInstall
用意したVirus Scanサーバに、Deep Instinct Prevention for StorageのStorage Agentと
ONTAP Antivirus ConnectorのInstallを実施します。

##### 2-1. Deep Instinct Prevention for StorageのStorage Agent Install
Downloadしたexeファイルをクリックし、Installを実行します。
表示された画面では、管理コンソールからStorage AgentをDownloadする際に画面下方で確認できるFQDN、Token、IDを入力します。

<img width="400" alt="qiita-square" src=https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1268577/1a961902-f3e7-611f-2cd5-a3b320d9310e.png>

Installが成功すると、管理コンソール上でConectivity StatusがOnlineとなっているStorage agentの表示が確認できるようになります。
![013.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1268577/eed301cd-9758-974a-c649-b0b4344ef857.png)

また、Windowsの画面右下のアイコンを右クリックして[コンソールの表示]を選択し、
表示された画面からコンソールを日本語表示に切り替える事もできます。
![014.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1268577/d5ca6e78-afd3-5214-9ba9-98acb7a6b143.png)

<img width="400" alt="qiita-square" src=https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1268577/90fbfe39-5aef-5330-dd9a-d324ff85ee2c.png>

##### 2-2. ONTAP Antivirus Connector (AVConnector)のInstall
ONTAP Antivirus Connector(AVConnector)を取得する為、[NetAppのサポートサイト](https://mysupport.netapp.com)にログインし、画面上方の[DOWNLOADS]=>[Downloads]を選択します。
<img width="500" alt="qiita-square" src=https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1268577/3909c40a-37e7-a237-0669-4845d3220e1a.png>


表示された画面で、ONTAP Antivirus Connectorを選択します。

<img width="450" alt="qiita-square" src=https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1268577/9ff9a600-edbf-98de-7447-265aa2003b49.png>


利用されているONTAPがサポートされているものを取得します。

<img width="450" alt="qiita-square" src=https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1268577/5657f705-da84-7a87-a38b-5d78fd1a7a0e.png>

<img width="450" alt="qiita-square" src=https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1268577/b3fc7d66-0daf-4bdb-5bad-52bb30ad6f73.png>


次にStorage AgentをInstallしたサーバに対してONTAP Antivirus Connector(AVConnector)のInstallを実施します。


:::note warn
Install時に入力するアカウントはONTAPで設定する特権ユーザと同じにします。
:::

<img width="400" alt="qiita-square" src=https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1268577/06755e52-28c1-a311-0c81-7d62051b648c.png>

<img width="400" alt="qiita-square" src=https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1268577/ac1858f8-1d67-187f-1d93-90b46111615a.png>


AVConnectorでSVMの管理LIFのIPとvsadminという管理ユーザを登録する為、ONTAP上で対象SVMのvsadminを指定できるようにパスワード設定とアカウントのアンロックを実施します。

:::note warn
vsadminへのPassword設定やUnLockを未実施の環境でのみ必要となります。
:::
```bash:
> security login show -vserver dpinst_cifs

Vserver: dpinst_cifs
                                                                 Second
User/Group                 Authentication                 Acct   Authentication
Name           Application Method        Role Name        Locked Method
-------------- ----------- ------------- ---------------- ------ --------------
vsadmin        http        password      vsadmin          yes    none
vsadmin        ontapi      password      vsadmin          yes    none
vsadmin        ssh         password      vsadmin          yes    none
3 entries were displayed.

##Passwordの設定
> security login password  -vserver dpinst_cifs -username vsadmin

Enter a new password:
Enter it again:

##アカウントのUnlock
> security login unlock -vserver dpinst_cifs -username vsadmin

> security login show -vserver dpinst_cifs

Vserver: dpinst_cifs
                                                                 Second
User/Group                 Authentication                 Acct   Authentication
Name           Application Method        Role Name        Locked Method
-------------- ----------- ------------- ---------------- ------ --------------
vsadmin        http        password      vsadmin          no     none
vsadmin        ontapi      password      vsadmin          no     none
vsadmin        ssh         password      vsadmin          no     none
3 entries were displayed.
```


次にAVConnectorでSVMの管理LIFと管理アカウントの登録を実施します。
本記事で利用するSVMのNetwork構成は以下の通りです。
```bash:
> network interface show -vserver dpinst_cifs
            Logical    Status     Network            Current       Current Is
Vserver     Interface  Admin/Oper Address/Mask       Node          Port    Home
----------- ---------- ---------- ------------------ ------------- ------- ----
dpinst_cifs
            data01       up/up    192.168.10.150/24  PS-8200cl-01  a0a     true
            mgmt         up/up    192.168.10.149/24  PS-8200cl-01  a0a     true
2 entries were displayed.
```

<img width="400" alt="qiita-square" src=https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1268577/84f594ca-4611-051c-3ab9-5f7d3bed8858.png>

<img width="400" alt="qiita-square" src=https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1268577/40022a24-71ab-b68d-9475-7cc369a6ada2.png>


#### 3. ONTAP側のVirus Scan設定の実施
次にONTAP側の設定を実施します。

##### 3-1. Scanner Poolの作成
Virus ScanサーバをIPかFQDNで入力し、特権ユーザはAVConnectorのInstall時に指定したアカウントを利用します。
```bash:
> vserver vscan scanner-pool create -vserver dpinst_cifs -scanner-pool pool01 -hostnames 192.168.10.151 -privileged-users ps-sc\vscanadmin
```

##### 3-2. Scanner Policyの適用
Scanner Policyを適用する事で、Scanner Poolがアクティブ化されます。
```bash:
> vserver vscan scanner-pool apply-policy -vserver dpinst_cifs -scanner-pool pool01 -scanner-policy primary

> vserver vscan scanner-pool show -vserver dpinst_cifs -scanner-pool pool01

                                    Vserver: dpinst_cifs
                               Scanner Pool: pool01
                             Applied Policy: primary
                             Current Status: on
         Cluster on Which Policy Is Applied: PS-8200cl
                  Scanner Pool Config Owner: vserver
       List of IPs of Allowed Vscan Servers: 192.168.10.151
List of Host Names of Allowed Vscan Servers: 192.168.10.151
                   List of Privileged Users: ps-sc\vscanadmin
```
scanner-policyは本記事のようなVscan Serversが1台構成のような場合はPrimaryを指定します。(切り替え先としての設定では無いので)
|scanner-policy|説明|
|:---|:---|
|Primary |scanner-poolをActive化する|
|Secondary|Primaryのscanner-poolに設定したVscan Serverが1つも接続されていない場合にのみActive化|
|Idle|scanner-poolを非Activeにする|



##### 3-3. On-Access Scanの設定

**ClinentからCIFS経由でファイルのOpen, Read, Rename, Closeの度にVirus Checkを実⾏させるために、On-Access Scanの設定**を行います。

コマンド例では、CIFSのファイルで最大5GBまでのファイルのScanを行い、PNGファイル(拡張子がpng)についてはVirus Checkの対象外という設定例となります。

```bash:
> vserver vscan on-access-policy create -vserver dpinst_cifs -policy-name testpolicy01 -protocol CIFS -filters scan-ro-volume -max-file-size 5GB -file-ext-to-exclude "png"
```

Virus Scan処理をトリガーするSMB共有での処理の定義(vscan-fileop-profile)を確認します。
```bash:
> cifs share show -vserver dpinst_cifs -share-name cifs01 -fields vscan-fileop-profile
vserver     share-name vscan-fileop-profile
----------- ---------- --------------------
dpinst_cifs cifs01     standard
```
|Profile|説明|
|:---|:---|
|no-scan |なし|
|Standard|open, close, rename|
|Strict|open, read, close, rename|
|Write only|close(修正ファイルのみ)|


作成したOn-Access ScanのPolicyを有効化します。
**デフォルトでdefault_CIFSというPolicyが有効化されているので、デフォルトのものを無効化して作成したPolicyを有効化**します。

```bash:
> vserver vscan on-access-policy disable -vserver dpinst_cifs -policy-name default_CIFS

> vserver vscan on-access-policy enable  -vserver dpinst_cifs -policy-name testpolicy01
```

##### 3-4. On-Demand Scanの設定
Virus Scan処理をスケジュールに基づいて実行できるようにOn-Demand Scanの設定を実施します。

```bash:
> > vserver vscan on-demand-task create -vserver dpinst_cifs -task-name test-tesk01 -scan-paths "/cifs01" -report-directory "/report" -schedule daily -max-file-size 5GB -file-ext-to-exclude "png"


> vserver vscan on-demand-task show -vserver dpinst_cifs -task-name test-tesk01

                           Vserver: dpinst_cifs
                         Task Name: test-tesk01
                List of Scan Paths: /cifs01
             Report Directory Path: /report
                      Job Schedule: daily
Max File Size Allowed for Scanning: 5GB
            File Paths Not to Scan: -
       File Extensions Not to Scan: png
           File Extensions to Scan: *
      Scan Files with No Extension: true
           Request Service Timeout: 5m
                    Cross Junction: true
               Directory Recursion: true
                     Scan Priority: low
                  Report Log Level: info
        Expiration Time for Report: 0s
```

##### 3-5. SVMへのVirus Scanの有効化

```bash:
> vserver vscan enable -vserver dpinst_cifs
```


#### 4. クライアントからファイルアクセス時の挙動確認
WindowsクライアントからVirus Scan対象のCIFS共有へファイル作成を行います。
<img width="400" alt="qiita-square" src=https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1268577/9bcd7528-d9a8-c157-ab29-2589608ef837.png>
Virus Scanサーバのコンソール画面でScanが動作する事を確認します。
<img width="400" alt="qiita-square" src=https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1268577/aea7d33f-c754-8331-9572-69e9b1c2ba50.png>


Cloud上の管理コンソールでも確認する事ができます。
<img width="600" alt="qiita-square" src=https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1268577/3d8d1f5b-d3be-3e0d-b114-8bd526f3d14c.png>


## 参考1：ファイルサイズによるVirus Scanサーバの負荷確認

クラウド上で定義されているPolicyでは、Defaultで200MBまでのファイルまでScanを行う設定となっているので、**100M～1KBのファイルサイズをコピーした時のVirusScanサーバにおけるCPU利用率を比較**してみた所、**1MB以上ではファイルサイズの大きい方が高負荷**になる傾向が確認できました。

**100MB x 10**
<img width="400" alt="qiita-square" src=https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1268577/ce5b273b-94a7-1c73-1c42-80bca7d9c7e0.png>

**10MB x 100**
<img width="400" alt="qiita-square" src=https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1268577/b7048a43-0e04-f56c-ef81-f8103aaf462d.png>

**1MB   x 1000**
<img width="400" alt="qiita-square" src=https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1268577/957192ad-720d-34e4-bb7a-dd2ad225fd7e.png>

**100KB x 10000**
<img width="400" alt="qiita-square" src=https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1268577/41fdb129-32ca-bf33-0338-31f9a4dc7348.png>


**10KB  x 100000**
<img width="400" alt="qiita-square" src=https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1268577/39eba38e-bb6e-fa07-3bd7-604918ed8bca.png>

**1KB  x 1000000**
<img width="400" alt="qiita-square" src=https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1268577/119862b9-4f04-3b41-3282-d250e3afa936.png>



## 参考2：ファイルサイズによるCopy時間の比較
以下は、ONTAP側でqos statistics volume performance showコマンドを利用し、アクセス対象のVolumeでIOPSが発生している時間を測定した結果となります。

|対象ファイル|VirusScan無効時のCopy時間|VirusScan有効時のCopy時間|
|:---|:---|:---|
|100MB x10 |5秒|6秒|
|10MB x100 |6秒|7秒|
|1MB x1000 |14秒|20秒|
|100KB x10000 |80秒|112秒|

## 参考及びリンク
[What are the supported Vscan (Antivirus) vendors for ONTAP? ](https://kb.netapp.com/onprem/ontap/da/NAS/What_are_the_supported_Vscan_Antivirus_vendors_for_ONTAP)
[ONTAPのSecurity機能](https://www.netapp.com/ja/cyber-resilience/data-protection/ontap-security/)
[About NetApp virus scanning](https://docs.netapp.com/ja-jp/ontap/antivirus/file-protection-virus-scanning-concept.html)
[Deep Instict](https://www.deepinstinct.com/ja/why-deep-instinct)