新しい Linux サーバーに Tenable Nessus を移行する
Linux にインストールされている Tenable Nessus スキャナーまたは Tenable Nessus Manager のライフサイクル中に、あるサーバーから別のサーバーへの移行が必要になる場合があります。次のトピックでは、同一プラットフォーム間、クロスプラットフォーム、クロスアーキテクチャの移行手順の概要と、いくつかの考慮事項を示します。
前提条件
ターゲットサーバーに Tenable Nessus のターゲットバージョンがサポートしているオペレーティングシステムがあり、他のすべてのシステム要件とハードウェア要件を満たしていることを確認してください。
次に、Tenable Nessus バージョンがソースサーバーとターゲットサーバーで同じであることを確認します。
/opt/nessus/sbin/nessusd -v コマンドを実行して、両方のサーバーのバージョンを確認します。ソースバージョンがターゲットバージョンよりも古い場合は、次のいずれかを実行します。
-
ソースサーバーの Tenable Nessus をターゲットサーバーと同じバージョンにアップグレードします。
-
ターゲットサーバーの Tenable Nessus をソースサーバーと同じバージョンにダウングレードします。
-
Tenable Core で Tenable Nessus をダウングレードするには、ターゲットサーバーで pkexec /usr/libexec/tenablecore/backup/applicationDowngrade.sh コマンドを実行し、ダウングレードする Tenable Nessus バージョンを選択してから、[Enter] を押します。
注意: Tenable Core Oracle Linux 8 (OL8) のコックピットの制限により、Tenable Core OL8 のターミナルでこのコマンドを実行することはできません。代わりに Secure Shell (SSH) セッションで実行する必要があります。
-
その他のオペレーティングシステムで Tenable Nessus をダウングレードするには、Tenable Nessus をアンインストールしてから、ソースサーバーのバージョンと一致するバージョンをインストールします。
-
データを転送する
次の 2 つのオプションのいずれかを使用して、ソースサーバーからターゲットサーバーにデータを転送します。どちらのオプションも、移行に必須ではない特定のディレクトリ (バックアップとログを含む) を除外します。それらのディレクトリは必要に応じて個別にバックアップしてください。リモート同期は、バックアップを作成、転送、復元する必要がないため、高速なオプションです。
注意
-
すべてのコマンドは root として実行する必要があります。
-
非 root ユーザー (お使いのアカウントで sudo の権限昇格が許可されている) 場合、sudo -i コマンドを使用し、非 root ユーザーのパスワードを再度入力することで、root プロンプトに切り替えることができます。
-
一部のオペレーティングシステムでは、tar コマンドをコピーして貼り付けると、「tar: 無効なオプション -- '▒'」 エラーが表示される場合があります。コマンドを手動で入力することで、この問題を解決できます。

-
開始する前に、バックアップを作成するのに十分なディスク容量がソースサーバーにあることを確認してください。次のコマンドを実行すると、ファイルを作成せずにバックアップに必要な時間とディスク容量の両方を見積もることができます。
time tar --exclude={'bin*','lib*','sbin*','var/nessus/backups*','var/nessus/logs*','var/nessus/plugin*','var/nessus/remote*','var/nessus/report-engine*','var/nessus/templates/tmp*','var/nessus/tmp*','var/nessus/tools*','var/nessus/www*'} -Ppczf - /opt/nessus | wc -c | numfmt --to=iec-i
出力の例
[root@ness01 ~]# time tar --exclude={'bin*','lib*','sbin*','var/nessus/backups*','var/nessus/logs*','var/nessus/plugin*','var/nessus/remote*','var/nessus/report-engine*','var/nessus/templates/tmp*','var/nessus/tmp*','var/nessus/tools*','var/nessus/www*'} -Ppczf - /opt/nessus | wc -c | numfmt --to=iec-i
43Mi
real 0m7.158s
user 0m7.074s
sys 0m0.362s
-
次のコマンドを実行して、利用可能なマウントポイントのいずれかに、見積もられたサイズのバックアップを保存するのに十分なディスク容量があるかどうかを確認します。
df -h
-
十分なディスク容量がある場合は、次のコマンドを実行してソースサーバーに適切なタイミングでバックアップを生成します。/path/to をバックアップを保存するのに十分なディスク容量があることを確認したパスに変更します。
service nessusd stop
tar –-exclude={'bin*','lib*','sbin*','var/nessus/backups*','var/nessus/logs*','var/nessus/plugin*','var/nessus/remote*','var/nessus/report-engine*','var/nessus/templates/tmp*','var/nessus/tmp*','var/nessus/tools*','var/nessus/www*'} -Ppczf /path/to/nessus_backup.tar.gz /opt/nessus
-
次のコマンドを実行して、十分なディスク容量があるターゲットサーバー上の場所に nessus_backup.tar.gz を転送します。
scp /path/to/nessus_backup.tar.gz root@:/path/to
出力の例
[root@ness01 ~]# scp /tmp/nessus_backup.tar.gz root@ness01_target:/tmp
The authenticity of host 'ness01_target (1.2.3.4)' can't be established.
ECDSA key fingerprint is SHA256:oarLiSLC4L+z8ts5/qAwhV9JYtqLNy8Eia1IBqh8gso.
ECDSA key fingerprint is MD5:32:3d:4b:3d:4b:e4:78:ce:4b:87:16:ce:f0:ac:f5:82.
Are you sure you want to continue connecting (yes/no)?〇
Warning: Permanently added 'ness01_target' (ECDSA) to the list of known hosts.
root@ness01_target's password:
nessus_backup.tar.gz 100% 3049MB 186.2MB/s 00:16
-
ターゲットサーバーで、次のコマンドを実行してバックアップを抽出します。/path/to をターゲットサーバーに転送されたバックアップパスに変更します。
tar -xvf /path/to/nessus_backup.tar.gz -C /

-
rsync がソースサーバーとターゲットサーバーの両方で使用可能であること、およびソースサーバーからターゲットサーバーに root としてログインできることを確認します。rsync コマンドがいずれのサーバーでも出力を返さない場合は、Red Hat ベースのオペレーティングシステムでは yum install rsync コマンド、Debian ベースのオペレーティングシステムでは dpkg -i rsync コマンドを実行してインストールできます。
-
ソースサーバーで次のコマンドを実行して、同期されないディレクトリを除き、Tenable Nessus によって消費されるディスク容量を確認します。
du -sh --exclude{"bin*","lib*","sbin*","var/nessus/backups*","var/nessus/logs*","var/nessus/plugin*","var/nessus/remote*","var/nessus/report-engine*","var/nessus/templates/tmp*","var/nessus/tmp*","var/nessus/tools*","var/nessus/www*"} /opt/Nessus
-
ターゲットサーバーに同量以上の空き容量があることを確認してから、次のコマンドを実行してソースとターゲットの両方のサーバーでサービスを停止します。
service nessusd stop
-
ソースサーバーで次のコマンドを実行して、ファイルをターゲットサーバーに同期します。<target IP address> を実際のターゲット IP アドレスに変更します。
rsync -ravz --exclude={'bin*','lib*','sbin*','var/nessus/backups*','var/nessus/logs*','var/nessus/plugin*','var/nessus/remote*','var/nessus/report-engine*','var/nessus/templates/tmp*','var/nessus/tmp*','var/nessus/tools*','var/nessus/www*'} /opt/nessus/* root@<target IP address>:/opt/nessus/
出力の例
[root@ness01 ~]# rsync -ravz --exclude={'bin*','lib*','sbin*','var/nessus/backups*','var/nessus/logs*','var/nessus/plugin*','var/nessus/remote*','var/nessus/report-engine*','var/nessus/templates/tmp*','var/nessus/tmp*','var/nessus/tools*','var/nessus/www*'} /opt/nessus/* [email protected]:/opt/nessus/
[email protected]'s password:
sending incremental file list
etc/nessus/
etc/nessus/nessus-fetch.db
etc/nessus/nessus-fetch.db-shm
etc/nessus/nessus-fetch.db-wal
etc/nessus/nessusd.db
etc/nessus/nessusd.db-journal
var/nessus/
var/nessus/.__db_ok
var/nessus/global.db
var/nessus/global.db-shm
var/nessus/global.db-wal
var/nessus/nessus-service.version
var/nessus/nessus.version
var/nessus/tenable_links.json
var/nessus/tenable_rss_feeds.json
var/nessus/terrascan.db
var/nessus/upgrades.db
var/nessus/users/
var/nessus/users/admin/
var/nessus/users/admin/policies.db
var/nessus/users/admin/auth/
var/nessus/users/admin/auth/admin
var/nessus/users/admin/auth/hash
var/nessus/users/admin/auth/rules
var/nessus/users/admin/reports/
var/nessus/users/admin/reports/361da43c-fda9-960c-49e8-d52d3b60280b1d615196a27e8acb
var/nessus/users/admin/reports/361da43c-fda9-960c-49e8-d52d3b60280b1d615196a27e8acb.name
var/nessus/users/admin/reports/361da43c-fda9-960c-49e8-d52d3b60280b1d615196a27e8acb.ts
var/nessus/users/nessus_ms_agent/
var/nessus/users/nessus_ms_agent/tmp/
var/nessus/users/nessus_ms_agent/tmp/e5a9ba0be43e72ab/
var/nessus/users/test/
var/nessus/users/test/policies.db
var/nessus/users/test/auth/
var/nessus/users/test/auth/hash
var/nessus/users/test/auth/rules
var/nessus/users/test/files/
var/nessus/users/test/reports/
sent 2,317,224 bytes received 5,953 bytes 172,087.19 bytes/sec
total size is 335,189,932 speedup is 144.28
調整
ターゲットサーバーで次の手順を実行して、データの転送または復元後に一貫した正常な状態になるようにします。
-
nessuscli の実行時に FIPS モジュールエラーが表示されないようにし、正しいプラットフォーム固有のバイナリが配置されるようにするには、Red Hat または Debian ベースのオペレーティングシステム用の適切なコマンドを使用して、強制的な Tenable Nessus アップグレードを実行します。
Red Hat ベースのオペレーティングシステム
rpm -Uvh --force /tmp/Nessus-<version>.x86_64.rpm
注意: Tenable Core の Oracle Linx 8 インスタンスで、yum download Nessus コマンドを実行して、最新の Tenable Nessus RPM ファイルを現在の作業ディレクトリにダウンロードできます。Tenable Core の古いインスタンスで yumdownloader Nessus を実行しても同じ結果が得られます。
Debian ベースのオペレーティングシステム
dpkg --force-all -I /tmp/Nessus-<version>.amd64.deb
-
ターゲットサーバーで Tenable Nessus サービスを開始します。
service nessusd start
-
プラグインのダウンロードを許可し、「Could not validate this preference file.Have installation files been copied from another system?」(この環境設定ファイルを検証できませんでした。インストールファイルが別のシステムからコピーされていますか?) のエラーが出ないようにするため、Tenable Nessus にログインし、[Settings] (設定) > [Overview] (概要) に移動してライセンスを再度適用してください。同じライセンスを再利用するには、まず https://community.tenable.com/s/productsでリセットしてください。ライセンスの適用後、Tenable Nessus でサインアウトします。
注意
-
オンラインで更新するように設定されている場合、Tenable Nessus はその直後に更新を試行し、ログイン画面に「Plugins are compiling, Nessus functions will limited be limited until compilation is complete」(プラグインのコンパイル中です。Nessus の機能はコンパイルが完了するまで制限されます) と最大 20 分間表示されます。この間、backend.log には「<[info] [globaldb] Waiting for Nessus to be ready>」(<[info] [globaldb] Nessus の準備ができるまで待機します>) と記録されます。ログインしてデータがすべて揃っていることは確認できますが、これが完了するまでスキャンを実行することはできません。完了すると、ユーザーインターフェースには「Plugins are doned compiling」(プラグインのコンパイルが完了しました) と表示され、backend.log には「[info] [globaldb] cleanup is starts」([info] [globaldb] クリーンアップを開始しています) および他のアクティビティが表示されます。
tail -f /opt/nessus/var/nessus/logs/backend.log コマンドを使用して、backend.log の進行状況を監視できます。
該当する場合、Tenable Nessus Manager はエージェント DB ファイルの生成も開始します。これにはさらに 10 分かかります。次に、Tenable Nessus Manager により、フィードが新しいエージェントコアバージョンを提供しているかどうかが確認されます。新しいエージェントコアバージョンがある場合、ダウンロードされます。
-
エアギャップ環境にある Tenable Nessus のインストールでは、プラグインの手動更新が必要です。プラグインの更新後、次のコマンドを使用して、Tenable Nessus Manager 用のエージェント DB ファイルの生成を強制的に行えます。
/opt/nessus/sbin/nessuscli manager generate-plugins –force
-
Tenable Nessus Manager クラスターノード間の情報交換は、事前共有されたシークレットに依存しています。たとえば、nessuscli fix --reset を実行した場合や、新しい証明書が生成されたり、カスタム CA が Tenable Nessus Manager の親にアップロードされたりした場合、「Invalid certificate signature」(無効な証明書の署名) エラーが子ノードの backend.log に表示されることがあります。その場合は、Invalid Certificate signature on cluster nodes (クラスターノードでの無効な証明書の署名) に従い、事前共有されたシークレットをリセットし、ノード間の通信を再度有効にしてください。
-
ホスト名と IP アドレスを設定する
スタンドアロンの Tenable Nessus は、異なるホスト名や IP アドレスを使用する可能性があります。ただし、エージェントはどちらか一方にリンクされるため、Tenable Nessus Manager ターゲットサーバーはソースサーバーと同じ IP アドレスとホスト名を持つ必要があります。データを転送した後、ソースサーバーのホスト名と IP アドレスをメモしておきます。その後、ソースサーバーをシャットダウンして、そのホスト名と IP アドレスをターゲットサーバーに割り当てます。
注意
-
Tenable Nessus Manager ターゲットサーバーに異なるホスト名や IP アドレスが使用されている場合、以前のホスト名または IP アドレスにリンクされたエージェントのコンソールではステータスがオフラインになります。これを修正するには、ターゲットサーバーに再リンクされる前に、各エージェントの Tenable タグ (/etc/tenable_tag または HKLM\SOFTWARE\Tenable\TAG) を削除する必要があります。
-
エージェントの再リンクを試みる前に Tenable タグを削除しないと、Tenable Nessus Manager にはすでに同じ Tenable タグの付いたエージェントがあるため 409 エラーが発生します。
-
Tenable タグを削除した後、service nessusagent restart を使用してエージェントサービスを再起動し、新しいタグを作成してください。
-
新しい Tenable タグが付いたエージェントを再リンクすると、Tenable Nessus Manager コンソールのエージェントが更新されます。
-
次の 2 つのオプションのいずれかを使用して、ホスト名を設定します。

-
ソースサーバーをシャットダウンします。
-
ターゲットサーバーで次のコマンドを root として実行し、ホスト名を変更します。
hostname <hostname>
注意: ホスト名を変更しても、コマンドプロンプトには即座には反映されません。「exit」と入力してから再度ログインすると、新しいホスト名が表示されます。再起動後に新しいホスト名になっていない場合は、/etc/hostname の名前を直接変更してください。

-
ターゲットサーバーで root として以下のコマンドを実行し、目的のホスト名を設定します。
hostname <new hostname>
-
「exit」と入力してから再度ログインすると、新しいホスト名が表示されます。
ターゲットサーバーの IP アドレスを変更するには、ip a 出力で変更する IP アドレスに関連付けられているインターフェース名を特定してから、Red Hat ベースのオペレーティングシステムでは /etc/sysconfig/network-scripts/ifcfg-<network interface name>、Debian ベースのオペレーティングシステムでは /etc/network/interfaces で IP アドレスを変更し、サーバーを再起動します。