この製品のドキュメントセットは、偏向のない言語を使用するように配慮されています。このドキュメントセットでの偏向のない言語とは、年齢、障害、性別、人種的アイデンティティ、民族的アイデンティティ、性的指向、社会経済的地位、およびインターセクショナリティに基づく差別を意味しない言語として定義されています。製品ソフトウェアのユーザインターフェイスにハードコードされている言語、RFP のドキュメントに基づいて使用されている言語、または参照されているサードパーティ製品で使用されている言語によりドキュメントに例外が存在する場合があります。シスコのインクルーシブ ランゲージの取り組みの詳細は、こちらをご覧ください。
シスコは世界中のユーザにそれぞれの言語でサポート コンテンツを提供するために、機械と人による翻訳を組み合わせて、本ドキュメントを翻訳しています。ただし、最高度の機械翻訳であっても、専門家による翻訳のような正確性は確保されません。シスコは、これら翻訳の正確性について法的責任を負いません。原典である英語版(リンクからアクセス可能)もあわせて参照することを推奨します。
このガイドでは、エアギャップモードでSecure Malware Analyticsアプライアンスを更新する手順の概要を説明します。
注:エアギャップモードでアプライアンスを維持すると、その効果が失われる可能性があります。先に進む前に、セキュリティと機能の間のトレードオフを考慮してください。
次の項目に関する知識があることが推奨されます。
次の項目に関する知識があることが推奨されます。
このドキュメントの情報は、デフォルト設定の管理されたラボ環境にあるデバイスに基づいています。稼働中のネットワークで作業を行う場合は、作業を進める前に、コマンドの影響について十分に理解したうえで慎重に作業してください。
ほとんどのセキュアマルウェア分析アプライアンスはインターネットに接続し、オンライン更新プロセスを使用します。ただし、一部のアプライアンスは内部ネットワーク内に限定して保持されます(エアギャップ)。このアプローチは効果が低下するため、シスコでは推奨しません。このガイドでは、エアギャップアプライアンスをメンテナンスする必要があるユーザのためのオフライン更新プロセスについて説明します。
オフラインのSecure Malware Analyticsのアップデートについては、シスコは要求に応じてアップデートメディアを提供します。このドキュメントで説明されているオフライン更新プロセスに従ってください。
メディア:Airgap(オフライン)アップデートメディアは、要求に応じてSecure Malware Analyticsサポートから提供されます。これは、USBドライブまたはHDD(十分なサイズ)にコピーできるISOファイルです。
SIZE:アップデートメディアのサイズはサポートされるバージョンによって異なり、新しい仮想マシンの導入によって大幅に増加する可能性があります。 現在のリリースでは、 サイズはdesyncツールを含めて約30 GBです。 これにより、VM関連の変更に対する差分更新が可能になります。
アップグレードブートサイクル: airgapアップデートメディアがブートされるたびに、アップグレード先の次のリリースが判別され、その次のリリースに関連付けられているコンテンツがアプライアンスにコピーされます。アプライアンスの実行中に実行する必要がある前提条件チェックがリリースに含まれていない場合は、特定のリリースでもパッケージのインストールを開始できます。リリースにそのようなチェックや、そのようなチェックを追加する可能性がある更新プロセスの一部に対するオーバーライドが含まれている場合、ユーザがOpAdminにログインしてOpAdmin > Operations > Update Applianceで更新を呼び出すまで、実際には更新は適用されません。
インストール前フック:その特定のアップグレードにインストール前フックが存在するかどうかに応じて、アップグレードが直ちに実行されるか、アプライアンスが通常の動作モードに戻ります。これにより、ユーザーは通常の管理インターフェイスを使用して、手動でそのアップグレードを開始できます。
必要に応じて繰り返し:このような各メディアブートサイクルでは、最終的なターゲットリリースへの1ステップのみがアップグレード(またはアップグレードの準備)されます。ユーザは目的の宛先リリースにアップグレードするために必要な回数だけブートする必要があります。
CIMCメディアは、エアギャップ更新ではサポートされていません。
使用されるサードパーティコンポーネントのライセンスの制約により、UCS M3ハードウェアがEOL(サポート終了)を迎えると、1.xリリース用のアップグレードメディアを使用できなくなります。したがって、EOLの前にUCS M3アプライアンスを交換するか、アップグレードすることが重要です。
移行:対象のリリースのリリースノートに、次のバージョンがインストールされる前に移行が必須であるシナリオが含まれている場合、アプライアンスが使用不能な状態にならないように、再起動の前にこれらの手順に従ってください。
注:特に2.1.4よりも新しい最初の2.1.xリリースでは、複数のデータベース移行が実行されます。これらの移行が完了するまで続行することは安全ではありません。詳細については、『Threat Gridアプライアンス2.1.5移行ノート』を参照してください。
2.1.3より前のリリースからairgapアップグレードメディアを使用する場合、個々のライセンスから取得した暗号キーが使用されるため、アプライアンスごとにカスタマイズする必要があります。(ユーザが目に見える唯一の効果は、2.1.3より前のオリジンバージョンをサポートするように構築されたメディアを使用する場合、Secure Malware Analyticsではこれらのアプライアンスに事前にインストールされたライセンスが必要であり、構築されたリストに含まれないアプライアンスではメディアが機能しないことです)。
リリース2.1.3以降では、airgapメディアは汎用であり、お客様情報は必要ありません。
まず、このページで利用可能なエアギャップ型バージョンを確認します:アプライアンスバージョンのルックアップテーブル
1. TACサポートリクエストをオープンし、オフラインアップデートメディアを入手します。この要求には、アプライアンスのシリアル番号とアプライアンスのビルド番号が含まれます。
2. TACサポートでは、インストールに基づいて更新されたISOを提供します。
3. ISOイメージをブータブルUSBに書き込みます。USBは、オフライン更新がサポートされている唯一のデバイス/方法です。
ファイル名はTGA Airgap Update 2.16.2-2.17.2に更新されています。
つまり、このメディアは最小バージョン2.16.2を実行しているアプライアンスに使用でき、アプライアンスをバージョン2.17.2にアップグレードできることを意味します。
次の項目に関する知識があることが推奨されます。
このドキュメントの情報は、LinuxベースのOS(CentOS、RedHatなど)に基づいています。
このドキュメントの情報は、デフォルト設定の管理されたラボ環境にあるデバイスに基づいています。稼働中のネットワークで作業を行う場合は、作業を進める前に、コマンドの影響について十分に理解したうえで慎重に作業してください。
GOプログラミング言語のインストール
# wget https://go.dev/dl/go1.23.1.linux-amd64.tar.gz
# tar -xzf go1.23.1.linux-amd64.tar.gz
# mv go /usr/local
desyncコマンドが失敗しない場合は、インストール後にこれらの3つのコマンドを実行します
# export GOROOT=/usr/local/go
# export GOPATH=$HOME/Projects/Proj1
# export PATH=$GOPATH/bin:$GOROOT/bin:$PATH
GOバージョンは、次の方法で確認できます。
# go version
ステップ 1:Secure Malware Analyticsサポートから提供されたZIPファイル(desync.linuxおよび.caibxファイルを含む)の内容をマシン上の同じディレクトリにローカルでコピーします。
ステップ 2:ファイルを保存したディレクトリに移動します。
以下に例を挙げます。
# cd MyDirectory/TG
ステップ 3:pwdコマンドを実行して、ディレクトリ内にいることを確認します。
# pwd
ステップ 4:desync.linuxコマンドと.caibxファイルが含まれているディレクトリ内に移動したら、任意のコマンドを実行してダウンロード処理を開始します。
注:これらは、さまざまなISOバージョンの例です。Secure Malware Analyticsサポートの指示に従って、.caibxファイルを参照してください。
バージョン2.16.2 ~ 2.17.2 ISOの場合:
# desync extract -k -s s3+https://s3.amazonaws.com/sma-appliance-airgap-update airgap-update-2.16.2ag-2.17.2.caibx airgap-update-2.16.2ag-2.17.2.iso
バージョン2.4.3.2 ~ 2.5 ISOの場合:
# desync extract -k -s s3+https://s3.amazonaws.com/threatgrid-appliance-airgap-update airgap-update-2.4.3.2-2.5.caibx airgap-update-2.4.3.2-2.5.iso
バージョン2.5 ~ 2.7.2ag ISOの場合:
# desync extract -k -s s3+https://s3.amazonaws.com/threatgrid-appliance-airgap-update airgap-update-2.5-2.7.2ag.caibx airgap-update-2.5-2.7.2ag.iso
ダウンロードが開始されると、経過表示バーが表示されます。
注:お客様の環境におけるアップグレードメディアのダウンロード速度およびサイズが、ISOの作成時間に影響を与える可能性があります。
ダウンロードしたファイルのMD5と、サポートが提供するバンドルで入手可能なファイルを比較して、ダウンロードしたISOの整合性を確認してください。
ダウンロードが完了すると、ISOが同じディレクトリに作成されます。
マシンにUSBをプラグインし、ddコマンドを実行してブート可能なUSBドライブを作成します。
# dd if=airgap-update.iso of=/dev/<MY_USB> bs=64M
ここで、<MY_USB>はUSBキーの名前です(山カッコは省略)。
USBドライブを挿入し、アプライアンスの電源を入れるか再起動します。シスコのブートアップ画面で、F6キーを押してBoot Menuに入ります。
ヒント:
帯域幅に影響する可能性があるため、営業時間後またはオフピーク時にダウンロードを実行します。
ツールを停止するには、端末を閉じるか、Ctrl+c/Ctrl+zを押します。
続行するには、同じコマンドを実行してダウンロードを再開します。
GOプログラミング言語のインストール
CMD runコマンドを閉じてから再び開き、次の点を確認します。
go version
go install github.com/folbricht/desync/cmd/desync@latest
In case desync is not working using above command then change directory to C drive and run this command:
git clone https://github.com/folbricht/desync.git
注:gitコマンドが機能しない場合は、https://git-scm.com/download/winからGitをダウンロードしてインストールできます。
次に、次の2つのコマンドを1つずつ実行します。
cd desync/cmd/desync
go install
\$HOME/go/bin/desync extract -k -s s3+https://s3.amazonaws.com/sma-appliance-airgap-update airgap-update-2.16.2ag-2.17.2.caibx airgap-update-2.16.2ag-2.17.2.iso
この特定のリカバリUSBを作成するには、Rufusバージョン2.17を使用することが重要です。重要なddオプションを使用できます。このリポジトリには、すべてのRUFUSバージョンがあります。
アップデートメディアは、アップグレードパスの次のリリースを判別し、そのリリースのコンテンツをアプライアンスにコピーします。アプライアンスでは、アップグレードが即座に実行されるか、リブートして通常の動作モードに戻ります。これにより、OpAdminに入り、アップグレードを手動で開始できます。
ISOブートプロセスが完了したら、Secure Malware Analyticsアプライアンスを再起動して動作モードに戻します。
ポータルUIにログインし、アップグレードが安全かどうかを示す警告などを確認してから、次に進みます。
USBがまだエンドポイントに接続されていない状態で、コマンド「lsblk | grep -iE 'disk|part'を実行します。
xsilenc3x@Alien15:~/testarea/usb$ lsblk | grep -iE 'disk|part'
sda 8:0 0 931.5G 0 disk
├─sda1 8:1 0 128M 0 part
└─sda2 8:2 0 931.4G 0 part /media/DATA
nvme0n1 259:0 0 238.5G 0 disk
├─nvme0n1p1 259:1 0 650M 0 part
├─nvme0n1p2 259:2 0 128M 0 part
├─nvme0n1p3 259:3 0 114.1G 0 part
├─nvme0n1p4 259:4 0 525M 0 part /boot
├─nvme0n1p5 259:5 0 7.6G 0 part [SWAP]
├─nvme0n1p6 259:6 0 38.2G 0 part /
├─nvme0n1p7 259:7 0 62.7G 0 part /home
├─nvme0n1p8 259:8 0 13.1G 0 part
└─nvme0n1p9 259:9 0 1.1G 0 part
xsilenc3x@Alien15:~/testarea/usb$
USBスティックが接続された後。
xsilenc3x@Alien15:~/testarea/usb$ lsblk | grep -iE 'disk|part'
.sda 8:0 0 931.5G 0 disk
├─sda1 8:1 0 128M 0 part
└─sda2 8:2 0 931.4G 0 part /media/DATA
sdb 8:16 1 3.7G 0 disk
└─sdb1 8:17 1 3.7G 0 part /media/xsilenc3x/ARCH_201902 <--------- not observed when the USB was not connected
nvme0n1 259:0 0 238.5G 0 disk
├─nvme0n1p1 259:1 0 650M 0 part
├─nvme0n1p2 259:2 0 128M 0 part
├─nvme0n1p3 259:3 0 114.1G 0 part
├─nvme0n1p4 259:4 0 525M 0 part /boot
├─nvme0n1p5 259:5 0 7.6G 0 part [SWAP]
├─nvme0n1p6 259:6 0 38.2G 0 part /
├─nvme0n1p7 259:7 0 62.7G 0 part /home
├─nvme0n1p8 259:8 0 13.1G 0 part
└─nvme0n1p9 259:9 0 1.1G 0 part
xsilenc3x@Alien15:~/testarea/usb$
これにより、/devのUSBデバイスが「/dev/sdb」であることが確認されます。
USBスティックが接続された後に確認する他の方法:
コマンドdmesgは、いくつかの情報を提供します。USBを接続したら、dmesgコマンドを実行します。 | grep -iE 'usb|attached'を実行します。
xsilenc3x@Alien15:~/testarea/usb$ dmesg | grep -iE 'usb|attached'
[842717.663757] usb 1-1.1: new high-speed USB device number 13 using xhci_hcd
[842717.864505] usb 1-1.1: New USB device found, idVendor=0781, idProduct=5567
[842717.864510] usb 1-1.1: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[842717.864514] usb 1-1.1: Product: Cruzer Blade
[842717.864517] usb 1-1.1: Manufacturer: SanDisk
[842717.864519] usb 1-1.1: SerialNumber: 4C530202420924105393
[842717.865608] usb-storage 1-1.1:1.0: USB Mass Storage device detected
[842717.866074] scsi host1: usb-storage 1-1.1:1.0
[842718.898700] sd 1:0:0:0: Attached scsi generic sg1 type 0
[842718.922265] sd 1:0:0:0: [sdb] Attached SCSI removable disk <-------
xsilenc3x@Alien15:~/testarea/usb$
コマンドfidskはサイズに関する情報を提供し、この情報は確認に使用できます:sudo fdisk -l /dev/sdb。
xsilenc3x@Alien15:~/testarea/usb$ sudo fdisk -l /dev/sdb
Disk /dev/sdb: 3.7 GiB, 4004511744 bytes, 7821312 sectors <-------
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x63374e06
Device Boot Start End Sectors Size Id Type
/dev/sdb1 * 0 675839 675840 330M 0 Empty
/dev/sdb2 116 8307 8192 4M ef EFI (FAT-12/16/32)
xsilenc3x@Alien15:~/testarea/usb$
注:「dd」コマンドを実行する前に、必ずUSBをアンマウントしてください。
例のUSBデバイスがマウントされていることを確認します。
xsilenc3x@Alien15:~/testarea/usb$ sudo mount -l | grep -i sdb
/dev/sdb1 on /media/xsilenc3x/ARCH_201902 type vfat (rw,nosuid,nodev,relatime,uid=1000,gid=1000,fmask=0022,dmask=0022,codepage=437,iocharset=iso8859-1,shortname=mixed,showexec,utf8,flush,errors=remount-ro,uhelper=udisks2) [ARCH_201902]
USBデバイスをアンマウントするには、sudo umount /dev/sdb1を使用します。
xsilenc3x@Alien15:~/testarea/usb$ sudo umount /dev/sdb1
デバイスが「マウント済み」として認識されないことを再確認します。
xsilenc3x@Alien15:~/testarea/usb$ sudo mount -l | grep -i sdb
ddコマンドのoflag=syncおよびstatus=progressオプション。
多数のデータ・ブロックを書き込む場合、「status=progress」オプションは現在の書き込み操作の情報を提供します。これは、「dd」コマンドがページキャッシュに書き込み中かどうかを確認するのに便利です。このコマンドを使用すると、すべての書き込み操作の進行状況と合計時間を秒単位で表示できます。
使用しない場合、「dd」は進行状況に関する情報を提供せず、「dd」が戻る前に書き込み操作の結果のみが提供されます:
[rootuser@centos8-01 tga-airgap]$ dd if=/dev/zero of=testfile.txt bs=1M count=8192
8192+0 records in
8192+0 records out
8589934592 bytes (8.6 GB, 8.0 GiB) copied, 5.03493 s, 1.7 GB/s
[rootuser@centos8-01 tga-airgap]$
使用すると、書き込み操作に関するリアルタイム情報が1秒ごとに更新されます。
[rootuser@centos8-01 tga-airgap]$ dd if=/dev/zero of=testfile.txt bs=1M count=8192 status=progress
8575254528 bytes (8.6 GB, 8.0 GiB) copied, 8 s, 1.1 GB/s <----------------
8192+0 records in
8192+0 records out
8589934592 bytes (8.6 GB, 8.0 GiB) copied, 8.03387 s, 1.1 GB/s
[rootuser@centos8-01 tga-airgap]
注:TGAオフラインアップグレードプロセスの公式ドキュメントでは、通知されるコマンドは次のとおりです。dd if=airgap-update.iso of=/dev/<MY_USB> bs=64M
いくつかのテストの後、次の例が観察されます。
ddを含む10MBのファイルを/dev/zeroデバイスを使用して作成した場合。
1M x 10 = 10M(10240 kB +ダーティファイルページキャッシュ内の以前のシステムデータ= 10304 kB —>これは、「dd」の最後にあるダーティページキャッシュで認識される内容です)。
[rootuser@centos8-2 testarea]$ cat /proc/meminfo | grep -iE 'dirty' && dd if=/dev/zero of=testfile.txt bs=1M \
count=10 status=progress && cat /proc/meminfo | grep -iE 'dirty' && date +%s
Dirty: 92 kB
10+0 records in
10+0 records out
10485760 bytes (10 MB, 10 MiB) copied, 0.0138655 s, 756 MB/s
Dirty: 10304 kB <----- dirty page cache after "dd" returned | data still to be written to the block device
1633260775 <---- epoch time
[rootuser@centos8-2 testarea]$ cat /proc/meminfo | grep -iE 'dirty' && date +%s
Dirty: 10372 kB
1633260778
[rootuser@centos8-2 testarea]$ cat /proc/meminfo | grep -iE 'dirty' && date +%s
Dirty: 10380 kB
1633260779
[rootuser@centos8-2 testarea]$ cat /proc/meminfo | grep -iE 'dirty' && date +%s
Dirty: 10404 kB
1633260781
[rootuser@centos8-2 testarea]$ cat /proc/meminfo | grep -iE 'dirty' && date +%s
Dirty: 10412 kB
1633260782
[rootuser@centos8-2 testarea]$ cat /proc/meminfo | grep -iE 'dirty' && date +%s
Dirty: 10424 kB
1633260783
[rootuser@centos8-2 testarea]$ cat /proc/meminfo | grep -iE 'dirty' && date +%s
Dirty: 10436 kB
1633260785
[rootuser@centos8-2 testarea]$ cat /proc/meminfo | grep -iE 'dirty' && date +%s
Dirty: 0 kB <--- data in the dirty page cache flushed = written to the block device
1633260786 <---- epoch time
[rootuser@centos8-2 testarea]$
```
1633260786 - 1633260775 = 11 seconds
注:「dd」コマンドが返された後、ブロックデバイスへの書き込み操作が完了せず、11秒後に認識されました。
TGA ISOを使用してブート可能なUSBを作成する際に「dd」コマンドを使用した場合、11秒前にエンドポイントからUSBを取り外してしまっていた場合、ブート可能なUSBに破損したISOが含まれていました。
説明:
ブロックデバイスは、ハードウェアデバイスへのバッファアクセスを提供します。これにより、ハードウェアデバイスを使用する際にアプリケーションに抽象化レイヤが提供されます。
ブロック・デバイスを使用すると、アプリケーションはサイズの異なるデータ・ブロックで読み取り/書き込みを行うことができます。このread()/writes()はページ・キャッシュ(バッファ)に適用され、ブロック・デバイスに直接適用されることはありません。
カーネル(読み取り/書き込みを行うアプリケーションではない)は、バッファ(ページキャッシュ)からブロックデバイスへのデータの移動を管理します。
したがって
が指示されていない場合、アプリケーション(この場合は「dd」)はバッファのフラッシュを制御できません。
オプション''oflag=sync''は、各出力ブロック(''dd''が提供)がページキャッシュに置かれた後に(カーネルによる)同期物理書き込みを強制する。
oflag=syncは、このオプションを使用しない場合に比べて「dd」のパフォーマンスを低下させます。しかし、このオプションを有効にすると、「dd」からのwrite()呼び出しごとに、ブロックデバイスへの物理的な書き込みが確実に行われます。
テスト:「dd」コマンドの「oflag=sync」オプションを使用して、「dd」コマンドの戻り値でダーティ・ページ・キャッシュ・データに対するすべての書込み操作が完了したことを確認します。
[rootuser@centos8-2 testarea]$ cat /proc/meminfo | grep -iE 'dirty' && dd if=/dev/zero of=testfile.txt bs=1M \
count=10 oflag=sync status=progress && cat /proc/meminfo | grep -iE 'dirty' && date +%s
Dirty: 60 kB
10+0 records in
10+0 records out
10485760 bytes (10 MB, 10 MiB) copied, 0.0841956 s, 125 MB/s
Dirty: 68 kB <---- No data remaining in the dirty page cache after "dd" returned
1633260819
[rootuser@centos8-2 testarea]$ cat /proc/meminfo | grep -iE 'dirty' && date +%s
Dirty: 36 kB
1633260821
[rootuser@centos8-2 testarea]$
ダーティ・ページ・キャッシュへの書き込み操作でデータが残っていない。
書き込み操作は、「dd」コマンドが返される前(または同時)に適用されました(前回のテストの11秒後ではありません)。
「dd」コマンドが返された後、書き込み操作に関連するダーティページキャッシュにデータがなかったこと=ブータブルUSBの作成に問題がなかったこと(ISOチェックサムが正しければ)を確認します。
注:このタイプのケースを扱う際には、「dd」コマンドのこのフラグ(oflag=sync)を考慮してください。
利用可能なツールを使用して「DD」オプションを使用してHDDがフォーマットされていることを確認する必要があり、メディアは後でドライブにコピーする必要があります。このフォーマットを使用しないと、このメディアを読み取ることができません。
「DD」フォーマットを使用してメディアをHDD/USBにロードしたら、それをTGAアプライアンスに接続してデバイスを再起動する必要があります。
これはデフォルトのブートメニュー選択画面です。「F6」を押してデバイスを起動し、ブートメディアを選択する必要があります
デバイスが入力を認識すると、デバイスはブート選択メニューに入るように求められます。
これは、異なるTGAモデル間で異なる可能性があるプロンプトです。理想的には、このメニュー自体からブートメディア(アップグレードファイルシステム)を使用して起動するオプションが表示されますが、表示されない場合は「EFIシェル」にログインする必要があります。
「startup.sh」スクリプトが終了する前に「ESC」を押して、EFIシェルに移動する必要があります。EFIシェルにログインすると、この場合に検出されるパーティションは、3つのファイルシステム(fs0:、fs1:、fs2)であることがわかります。
正しいファイルシステムの識別:
ファイル・システムが見つからない場合:
ブートメディア(アップグレードファイルシステム)でデバイスをブートするには、「bootx64.efi」ファイルを実行する必要があります。
fs0:\efi\boot\bootx64.efi
参考のために、他のファイルシステムの内容も表示しました。
fs1:これはメインのブートファイルシステムです。
fs2:これはリカバリイメージのブートファイルシステムです。
マウントされたブートメディアを含む正しいファイルシステムを確認します。これは、異なるファイルシステムをブラウズし、「.efi」ブートファイルを確認することで実行できます
注:実際のブートメディア(アップグレードファイルシステム)のシーケンスは、この場合は「fs0:」であり、他のデバイスによっても異なる場合があります。
名前とパスは異なる場合がありますが、現在のすべてのイメージで同じにする必要があります。
正しいブートメディア(アップグレードファイルシステム)を見つけるのに役立つチェックリスト:
改定 | 発行日 | コメント |
---|---|---|
3.0 |
18-Sep-2024 |
手順はこのドキュメントで更新されました。 |
2.0 |
09-Nov-2021 |
初版リリース |
1.0 |
08-Nov-2021 |
初版 |