ONTAPのSecurity機能について8【外部USBポートの無効化】

# はじめに
NetApp Storage OSであるONTAPは、クラウドや仮想化環境以外にオンプレミス環境で利用するハードウェア上にInstallされる形で利用することができます。

ハードウェアであるという事は、Netwotkのポートやシリアルポート、USBポートなどが搭載された筐体を使用する事になりますが、**本記事ではONTAPのハードウェア筐体でUSBポートを無効化する方法について記載**します。

<img width="600" alt="qiita-square" src=https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1268577/00ad118e-e58f-46e1-91d3-75bbd1871da7.png>

## USBのポートを無効化する理由

一般的にはUSBの使用を禁止する主な理由は以下のようなセキュリティ関連の問題が考えられます。
- データ漏洩
- マルウェア感染
- 不正なソフトウェアのインストール

**ONTAPでUSBメモリを接続するような場合は、OS UpgradeやFiremware Updateの実行時にHTTPSやFTPによるイメージ転送ではなく、USBメモリからコピーするような利用方法**が考えられます。
それ以外にもCoreファイルの持ち出しの際にも利用できます。

過去の記事にある[リモートコード実行はできない](https://qiita.com/s_yosh1d/items/45a68066f1080ecaff03)といった内容や[OSイメージの検証](https://qiita.com/s_yosh1d/items/63966bf46debfa8d6a49)といった機能を搭載しているので一見安全のように見えますが、**取得したlogの入ったUSBメモリをどこかに置き忘れてしまったり、内部犯の持ち出しまでは対応できないので**USBメモリの使用を制限または禁止するポリシーを採用する事でより安全な運用を確立する事が可能になります。
**なお、USBポート無効化はONTAP9.8以降でコマンドが用意されています。**

## 何をしたい？できる？
<font color="Red">**USBポートの無効化**</font>



## 記事における環境情報
- ONTAP  : 9.10.1
- オンプレミスのA220


## 設定手順

#### 1. USBメモリを接続

機器の背面にあるUSBポートへUSBメモリを接続します。

:::note warn
**Node2のみに接続した例です**
:::
<img width="600" alt="qiita-square" src=https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1268577/9c4028ec-d9b6-61ee-4ce5-454460f3a597.png>


#### 2. 外部USBポートのステータス確認
Advanced Modeでの確認になりますが、
無効化がfalseとなっており、Node2については接続されている旨が確認できます

```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

*> system node usb-ports show
Node                  Disabled? Disabled on Next Boot? Supported? Devices Connected to Ports
--------------------- --------- ---------------------- ---------- --------------------------
PS-A220-01            false     false                  true       false
PS-A220-02            false     false                  true       true
2 entries were displayed.
```



#### 3. USBメモリに置いているImageの確認

USBメモリ上にあるImageファイルを確認する事ができます。

```bash:
*> system image package external-device show -node PS-A220-02
Node                     Device          Package File Name
------------------------ --------------- -------------------------------
PS-A220-02               usb0            9101P16_q_image.tgz
PS-A220-02               usb0            qual_devices.zip
2 entries were displayed.
```

#### 4. USBメモリのImageを使ってDQPの更新を実施してみる

Disk Qualification Package（DQP）をダウンロードしてインストールしてみます。

DQPには、ONTAPが新しく認定されたすべてのドライブと連携するための適切なパラメータが含まれているので、使用しているONTAPバージョンのDQPに新しく認定されたドライブの情報が含まれていない場合、ONTAPにはドライブを適切に設定するための情報が無い状態になります。


```bash:
# 適用前の状態を確認
*> storage dqp show
Node             Package Date     Version
---------------- ---------------- ---------
PS-A220-01       20210613         3.18
PS-A220-02       20210613         3.18
2 entries were displayed.


#Node2へ新しいDQPの適用
*> storage firmware download -node PS-A220-02 -package-url file://usb0/qual_devices.zip
Firmware download started.
Unpacking package contents.
Firmware downloaded.


# 適用前の状態を確認(Package Dateが変化している事を確認)
*> storage dqp show
Node             Package Date     Version
---------------- ---------------- ---------
PS-A220-01       20210613         3.18
PS-A220-02       20230501         3.18
```

#### 5. USB ポートの無効化

:::note warn
**設定後に再起動(or Takeover/Giveback)が必要です**
:::

```bash:
*> system node usb-ports modify -node * -is-disabled-next-boot true

ALERT: A reboot is required for changes to take effect.
2 entries were modified.
```

#### 5. Nodeの再起動
本記事ではTakeover/Givebackを実行して、1Nodeずつ設定を有効化します。
(Node毎に繰り返す)

```bash:
> storage failover takeover -ofnode PS-A220-01

Warning: A takeover will be initiated. Once the partner node reboots, a giveback
         will be automatically initiated. Do you want to continue?
          {y|n}: y


> storage failover show
                              Takeover
Node           Partner        Possible State Description
-------------- -------------- -------- -------------------------------------
PS-A220-01     PS-A220-02     -        Waiting for giveback
PS-A220-02     PS-A220-01     false    In takeover, Auto giveback will be
                                       initiated in 337 seconds
2 entries were displayed.


> storage failover giveback -ofnode PS-A220-01
Info: Run the storage failover show-giveback command to check giveback status.
```

#### 6. USB ポートが無効化している事の確認

USBメモリを接続していても認識しない事を確認します。
```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


*> system node usb-ports show
Node                  Disabled? Disabled on Next Boot? Supported? Devices Connected to Ports
--------------------- --------- ---------------------- ---------- --------------------------
PS-A220-01            true      true                   true       false
PS-A220-02            true      true                   true       false
2 entries were displayed.


*> system image package external-device show -node PS-A220-02
There are no entries matching your query.
Error: PS-A220-02 ERROR: FAT|ext2 formatted USB mass storage not found (usb0).
       Insert appropriately formatted device or try again
```



## 参考及びリンク
[system node usb-ports show](https://docs.netapp.com/us-en/ontap-cli-9111/system-node-usb-ports-show.html)
[system node usb-ports modify](https://docs.netapp.com/us-en/ontap-cli-9111/system-node-usb-ports-modify.html)
[How to prepare a USB drive to use in the ONTAP boot_recovery procedure ](https://kb.netapp.com/onprem/ontap/os/Prepare_USB_drive_to_use_in_ONTAP_boot_recovery_procedure)