ONTAPのSecurity機能について4【ONTAPイメージの検証】


## はじめに
[過去の記事](https://qiita.com/s_yosh1d/items/45a68066f1080ecaff03)では、ONTAPは直接exeのようなファイルを実行できない点については確認しましたが、元々のOSイメージ自体に不正なプログラム混在させることで不正アクセスが可能なのではないか？という疑問点が出て来るかと思います。

本記事では、ONTAPのUpgrade時に利用しているOSイメージを、Upgrade時にONTAP側で利用するイメージを検証するのかどうかを実際に試してみたいと思います。

![002.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1268577/076e4c21-e9ce-0004-adba-667216ba0611.png)

## 何をしたい？できる？
- <font color="Red">**変更を加えたONTAPイメージを使うとUpgradeに失敗する事の確認**</font>


## イメージ検証とは
ONTAPではBoot時やUpgrade時においてイメージ検証を実施しますが、違いは以下の通りです。

- **Boot時におけるイメージの検証**
  - ONTAP 9.4以降、UEFI BIOSを採用するシステムでセキュアブートが有効
  - AFF A800、AFF A220、FAS2750、FAS2720システム等
  - 電源投入時、ロードされる各モジュールに関連付けられた署名で、セキュアブートキーのホワイトリスト・データベースを検証
  - 各モジュールが検証され、ロードされた後ブートプロセスはONTAP初期化を続行
  - モジュールで署名の検証が失敗した場合、システムは再起動

- **Upgrade時におけるイメージの検証**
  - ONTAP 9.3以降の機能
  - 導入されたONTAPイメージが、NetAppで作成されたものであることを確認


## 実施手順
手順例では、ステップを分かりやすくするために、DiagモードでUpgradeの手順を一つずつ実施しています。

#### 1. イメージ内のファイルに追記したONTAPイメージのハッシュ値を確認

Linux機で、イメージ内のファイルを改変したONTAPイメージのハッシュ値を確認します。
イメージをダウンロードできるサポートサイト上のハッシュ値と異なっている事が確認できるかと思います。(ONTAPイメージは9.7P21を使ってます)

<img width="600" alt="qiita-square" src=https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1268577/0732653f-841a-c686-9de6-2794047b51bb.png>

```bash:
> md5sum 97P21_q_image.tgz
71a767d62388abff159ded227d6fc140  97P21_q_image.tgz

>  sha256sum 97P21_q_image.tgz
32d0ad827fec1e9b79896e88fdd2fd3de6d94832a58cb6671bc316b796d184b7  97P21_q_image.tgz
```


**2. ONTAPイメージのダウンロード**
Linux側でHTTPサーバを立ち上げます。
(Python3の場合は、python -m http.server 8000のような形)

```bash:
> ls
97P21_q_image.tgz

> python -m SimpleHTTPServer 8000
Serving HTTP on 0.0.0.0 port 8000 ...
```

ONTAP側でイメージのダウンロードを実施します。
```bash:
> set diag
Warning: These diagnostic commands are for use by NetApp personnel only.
Do you want to continue? {y|n}: y

*> system image get -node ps-2650-cl-01 -package http://192.168.1.100:8000/97P21_q_image.tgz

Software get http://.../97P21_q_image.tgz started on node ps-2650-cl-01
Downloading package. This may take up to 10 minutes.
9% downloaded
Download complete.
Software get http://.../97P21_q_image.tgz completed on node ps-2650-cl-01.
```


**2. ONTAPイメージのInstall**
ダウンロードしたイメージのInstallを実施すると構成される各ファイルの検証がなされ
改変したファイルを見つけるとIntallがFailとなり失敗します。

```bash:
*> system image update -node ps-2650-cl-01 -package 97P21_q_image.tgz

Warning: The recommended best-practice is to use the automated non-disruptive update procedure if you are attempting an upgrade or a
         minor version downgrade. Refer to the Clustered Data ONTAP Upgrade and Revert/Downgrade Guide for details.
Do you want to continue? {y|n}: y

Software update started on node ps-2650-cl-01. Updating image2 with package 97P21_q_image.tgz.
Listing package contents.
Decompressing package contents.
Invoking script (install phase). This may take up to 60 minutes.
Mode of operation is UPDATE
Current image is image1
Alternate image is image2
Versions are compatible
Available space on boot device is 15424 MB
Required  space on boot device is 2118 MB
Kernel binary matches install machine type
external keymanager check script has run successfully.
Getting ready to install image
Syncing device...
Extracting to /cfcard/x86_64/freebsd/image2...
x netboot/VERSION
x netboot/COMPAT.TXT
<中略>
ERROR: MD5 checksum failure on Package file: 'netboot/COMPAT.TXT'.
Install Failed.
Install Failed. x netboot/VERSION
<中略>
ERROR: MD5 checksum failure on Package file: 'netboot/COMPAT.TXT'.
Error: command failed: Install Failed. Install Failed. x netboot/VERSION
<中略>
ERROR: MD5 checksum failure on Package file: 'netboot/COMPAT.TXT'.
```



## 余談
ONTAPやFirmwareのUpgradeの際にリモートアクセスが制限されていて、データセンターで作業しなくてはいけないような場合には、現行のFASやAFFだと**USBからイメージをコピーする事ができます。**
利用するUSBは、**FAT形式(試したのはFAT32です)でフォーマットが必要**になり、NTFSですと以下のエラーが表示されます。

Error: command failed: Install failed. FAT|ext2 formatted USB mass storage not found (usb0). 
Insert appropriately formatted device or try again

以下はBMCのイメージをダウンロードしてますが、上記のONTAPのイメージのダウンロードと同じコマンドであることが確認できるかと思います。
```bash:
*> system node image get -package file://usb0/BMC_FW_308-04079_13.5P1.zip -replace-package true -node ps-8300-cl-01                   

Software get file://.../BMC_FW_308-04079_13.5P1.zip started on node ps-8300-cl-01
Downloading package. This may take up to 20 minutes.
Download complete.
Software get file://.../BMC_FW_308-04079_13.5P1.zip completed on node ps-8300-cl-01.
```


## 参考及びリンク
[NetApp Knowledge Base](https://kb-ja.netapp.com/Advice_and_Troubleshooting/Data_Storage_Software/ONTAP_OS/Upgrade_validation_results_in_%22Failed_to_verify_the_signatures_of_the_image.%22)
[ONTAP アップグレード解決ガイド](https://kb-ja.netapp.com/Advice_and_Troubleshooting/Data_Storage_Software/ONTAP_OS/ONTAP_Upgrade_Resolution_Guide)
[Upgrade ONTAP の概要](https://docs.netapp.com/ja-jp/ontap/upgrade/index.html)