ONTAPのSecurity機能について1【FPolicy編】

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

## 何をしたい？できる？
<font color="Red">**ランサムウエアで作成される怪しい拡張子のファイルの書き込みをさせない**</font>

## FPolicyとは
NFSとCIFS領域に対して、**ファイル拡張子に基づいたフィルタリングを実施する機能**です。
特定の拡張子のファイルの書き込みを許可する/しないを設定することができます。

ONTAP OS内でFPolicy Engineを持っているので、**外部のFPolicyサーバはの用意は必須ではありません**が、複数のONTAPをPolicyベースで管理する際に役立ちます。
これはHostsファイルとDNSサーバのような関係に似ており、個々で設定できるが管理台数が多い場合には、共通するものを纏めて設定した方が効率が良いといった意味合いになります。
![Fpolicy01.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1268577/b7413e12-f653-302e-1426-3c2c34e97e65.png)

## 設定手順

コマンド例では、**CIFS用の領域に、.cryptと.lockedという拡張子を持つファイルの書き込みを禁止する設定例**です。

例で指定されている以下のパラメータは、環境によって異なる内容なので適宜変更して下さい。
 * 仮想Storage(SVM)名：cifs100
 * CIFS用Volume名：testvol100
 * 作成するEvent名：event01
 * 作成するPolicy名：policy01


#### 1. Policyに含めるイベント作成
**イベント作成**
CIFSというプロトコルで、ファイル作成操作を対象とする例です。
```bash:
> vserver fpolicy policy event create -vserver cifs100 -event-name event01 -volume-operation true -protocol cifs -file-operations create
```
**設定値の確認**
```bash:
> vserver fpolicy policy event show -vserver cifs100

          Event                        File                       Is Volume
Vserver   Name               Protocols Operations    Filters      Operation
--------- ------------------ --------- ------------- ------------ ------------
cifs100   event01            cifs      create        -            true
```

#### 2. 操作イベントをPolicyとして作成
**Policy作成**
```bash:
> vserver fpolicy policy create -vserver cifs100 -policy-name policy01 -events event01 -engine native -is-mandatory true
```

**設定値の確認**
```bash:
> vserver fpolicy policy show -vserver cifs100
  Vserver      Policy       Events     Engine        Is Mandatory  Privileged
               Name                                                Access
-------------- -----------  ---------- ------------- ------------  -----------
cifs100        policy01     event01    native        true          no
```

#### 3. 対象とする拡張子や対象Volumeを指定
禁止 or 許可の設定となりますが、この例では指定した拡張子を禁止する手順です。
**拡張子の無いファイルの書き込みを許可する場合**
```bash:
> vserver fpolicy policy scope create -vserver cifs100 -policy-name policy01 -file-extensions-to-include crypt,locked -volumes-to-include testvol100
```

**設定値の確認**
```bash:
> vserver fpolicy policy scope show -vserver cifs100 -instance

                   Vserver: cifs100
                    Policy: policy01
         Shares to Include: -
         Shares to Exclude: -
        Volumes to Include: testvol100
        Volumes to Exclude: -
Export Policies to Include: -
Export Policies to Exclude: -
File Extensions to Include: crypt, locked
File Extensions to Exclude: -
```


**拡張子の無いファイルの書き込みを制限する場合**
```bash:
> set advanced
Warning: These advanced commands are potentially dangerous; use them only when directed to do so by NetApp personnel.
Do you want to continue? {y|n}: y　　<==yを入力します
```
```bash:
*> vserver fpolicy policy scope create -vserver cifs100 -policy-name policy01 -file-extensions-to-include crypt,locked -volumes-to-include testvol100 -is-monitoring-of-objects-with-no-extension-enabled true
```
**設定値の確認**
```bash:
*> vserver fpolicy policy scope show -vserver cifs100 -instance

                                           Vserver: cifs100
                                            Policy: policy01
                                 Shares to Include: -
                                 Shares to Exclude: -
                                Volumes to Include: testvol100
                                Volumes to Exclude: -
                        Export Policies to Include: -
                        Export Policies to Exclude: -
                        File Extensions to Include: crypt, locked
                        File Extensions to Exclude: -
    Is File Extension Check on Directories Enabled: true
Is Monitoring of Objects with No Extension Enabled: true
```


#### 4. FPolicyの対象とするPolicy有効化
```bash:
> vserver fpolicy enable -vserver cifs100 -policy-name policy01 -sequence-number 1
```
**設定値の確認**
```bash:
> vserver fpolicy show -vserver cifs100
                                      Sequence
Vserver       Policy Name               Number  Status   Engine
------------- ----------------------- --------  -------- ---------
cifs100       policy01                       1  on       native
```

#### 5. ファイルを作成して挙動の確認
cryptという拡張子のファイルの書き込みが失敗する事が確認できます。
![fpolicy02.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1268577/fb586811-b730-6b1b-c505-4f151df6ff06.png)

![fpolicy03.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1268577/f5edfb66-28e4-e99b-103b-dcc53c622961.png)


## 【更新情報】ONTAP9.11.1以降のシステムについて
ONTAP9.11以降では、**System Manager(GUIの管理画面)のINSIGHTから、Native Fpolicyを使ってランサムウエア対策で既に分かっている一般的なランサムウェアの拡張子のフィルタリング設定を数クリックで実施できる**形になっています。
(約4000近くの拡張子がFilterされます)
![001.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1268577/d9014d7f-023a-ad66-ef81-5acc21033e8d.png)

**GUIの設定画面で確認できる拡張子の一覧をコピーやダウンロードできますので、CLIで別途設定といった事も可能**です。
CLIの設定時には、拡張子の一覧にある!や、#や、;については""(ダブルクォーテーション)で囲って設定するといった修正が必要になります。
![002.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1268577/d8692e76-3842-3549-280a-76f18b65e573.png)



## どういう時に使うか
#### ファイルサーバ用途で、特定の拡張子ファイルを書き込ませない
・ユーザのメールファイル(PST)の書き込みを禁止
#### ランサムウエア対策機能の+αでフィルタリングも実施
・ONTAPのランサムウエア対策機能では学習モードで振る舞いを学習している際は無防備なので設定
**・ランサムウエア対策で既に分かっている一般的なランサムウェアの拡張子を禁止**
**(特に以下の拡張子)**
micro, encrypted, locked, crypto, crypt, crinf, r5a, XRNT, XTBL, R16M01D05, pzdc, good, LOL!, OMG!, RDM, RRK, encryptedRSA, crjoker, EnCiPhErEd, LeChiffre,_crypt, Locky, SUPERCRYPT, CTBL, CTB2, WNCRY, ad4c, HD
### 最近の情報Security事案
[IPA](https://www.ipa.go.jp/security/vuln/10threats2022.html)の公表している情報セキュリティ10大脅威2022によると、**社会的に影響が大きかったと考えられる情報セキュリティにおける事案の組織部門ではランサムウエアが1位となっています。**


特に最近では、不特定多数への攻撃から企業・組織を標的に攻撃し、データ、システムの復旧と窃取したデータを公開しないことと引き換えに身代金を要求といった多重脅迫がなされております。
その為、**Backup取得だけでは無く、システムに侵入されないような対策や侵入を前提とした内部対策も必要**となります。

こういった攻撃からの対策としては、以下のような項目が考えられます。
- **システム管理者や従業員で行う事前対策**
<font color="Red">・事業継続に必要なデータのBackup取得</font>
・添付ファイルやリンクを安易にクリックしない
・サポートの切れたOSの利用停止、移行、脆弱性情報の収集およびセキュリティパッチの適用
<font color="Red">・フィルタリングツール（メール、ウェブ）やセキュリティソフトの活用</font>
・ネットワーク分離や共有サーバー等へのアクセス権の最小化

- **経営層で行う事前対策**
・迅速かつ継続的に対応できる組織内体制（CSIRT）の構築
・対策予算の確保と継続的な対策の実施

- **システム管理者や従業員で行う発生時の対応**
・CSIRTへ連絡
・Backupからの復旧
・復号ツールの活用
・影響調査および原因の追究、対策の強化

## ONTAPのSecurity機能一覧
参考としてONTAPのSecurity機能一覧を記載します。

|機能|概要|ライセンス|
|:---|:---|:--|
|イメージ検証|Upgradeにおけるイメージが本物のONTAPであることをUpgrade時に検証され、起動時も署名済みのONTAPイメージがブートローダで検証|無償|
|Storage管理アカウント|RBAC機能で、定義されたロールに許可されるレベルにユーザの管理アクセスを制限し管理者は割り当てたロール別にユーザを管理|無償|
|CLI,GUIによるシステム管理|CLIにおけるSSHログイン試行失敗の最大回数の設定機能やGUIにおける多要素認証(MFA)の実装|無償|
|Storageシステム監査|syslogを外部サーバへTLS経由での転送が可能|無償|
|データ暗号化|自己暗号化ドライブの利用や、Volume、AggregateレベルでのSoftware暗号化機能を実装|無償|
|SnapShot機能|ポインター情報だけをコピーする為、パフォーマンス劣化の発生しないオンラインBackupを取得する機能|無償|
|データ複製(Mirror)、CloudBackup|既存ネットワーク環境を使用して、IPベースでのレプリケーションで、初期転送時はその時点で存在する全データをコピーするが、初期転送後はSnapshotによって取得された変更データブロックのみを転送|<font color="Red">有償</font>|
|TLS/SSL管理|セキュアな通信と管理機能にTLS 1.1とTLS 1.2を使用|無償|
|CA 署名デジタル証明書の作成|Storage Virtual Machine（SVM）がSSLサーバとして認証されるようにするため、serverタイプのデジタル証明書をクラスタまたはSVMにインストールを実施可能|無償|
|Online Certificate Status Protocol (OCSP)|OCSPを使用することで、Certificate Revocation List（CRL; 証明書失効リスト）を要求しなくてもデジタル証明書の現在の状態を判断可能|無償|
|TPM|ONTAP 9.8 以降では、 TPM チップと TPM ライセンスを搭載したプラットフォームで、ノードキー暗号化キーを生成してシールし、 OKM のキー階層の最高レベルを保護|無償|
|NASファイルシステムのローカル アカウント|CIFS サーバをワークグループ内に設定可能|無償|
|NAS ファイルシステムの監査(Audit)|ファイルサーバにおけるファイル操作のlogを取得することが可能|無償|
|CIFS SMB の署名と封印|	SMBの署名のStorageとクライアントの間のトラフィックを保護や、SMB暗号化による封印もサポート|無償|
|NFS の保護|Export PolicyによるNFSへのアクセス制御|無償|
|Kerberos 5 とkrb5p|	128-bitおよび256-bitのKerberos向けAES暗号化をサポート|無償|
|Lightweight Directory Access　Protocol の署名と封印|LDAPサーバへのクエリの際にセッションのSecurityを保護するための署名と封印をサポート|無償|
|FPolicy|拡張子によるフィルタリングといったファイルのアクセス権限を監視および設定|無償|
|論理インターフェイスの保護|ファイアウォールPolicyにおけるセキュアな通信|無償|
|プロトコルとポートの保護|プロトコルとポートのフィルタリング|無償|
|SnapLock機能|一度書き込んだデータを読み出せるが変更は不可能なWORM（Write Once Read Many）機能|<font color="Red">有償</font>|
|SSHv2 の管理|AES、3DES、SHA-256、SHA-512など、最新のSSH暗号とキー交換機能|無償|
|ランサムウェア対策機能|機械学習に基づくランサムウェアの自動検知を搭載し、先手を打って攻撃から保護(SnapShot自動取得)|<font color="Red">有償</font>|
|Multi-Tenant Key Management|個々のテナントやStorage仮想マシン（SVM）で、NVE向けKMIPを使用して独自のキーを保持|<font color="Red">有償</font>|
## 参考及びリンク
[FPolicyの設定](https://docs.netapp.com/ja-jp/ontap/pdfs/sidebar/FPolicy_%E3%81%AE%E8%A8%AD%E5%AE%9A%E3%82%92%E4%BD%9C%E6%88%90%E3%81%97%E3%81%BE%E3%81%99.pdf)

[ONTAPのSecurity機能](https://www.netapp.com/ja/cyber-resilience/data-protection/ontap-security/)

[Configure native FPolicy](https://docs.netapp.com/us-en/ontap/insights-configure-native-fpolicy-task.html)

[How to remove a file extension from a native FPolicy configuration created by System Manager using System Manager to recreate the policy](https://kb.netapp.com/on-prem/ontap/da/NAS/NAS-KBs/How_to_remove_a_file_extension_from_a_native_FPolicy_configuration_created_by_System_Manager_using_System_Manager_to_recreate_the_policy)