はじめに
このドキュメントでは、Cisco Eメールセキュリティアプライアンス(ESA)のクラスタ内のアプライアンス(ASA)から設定を保存するためにバッチコマンドを使用する方法について説明します。これは、すべてのバージョンのAsyncOS for ESAで使用できます。
AsyncOSバージョン8.5より前のバージョンでは、クラスタアプライアンスは、Cisco ESAに設定を復元するために使用する使用可能な設定を保存できませんでした。アプライアンスから使用可能な設定を取得するには、アプライアンスをクラスタから削除し、設定をスタンドアロンアプライアンスとして保存する必要がありました。
前提条件
注:この記事は概念実証であり、サンプルとして提供されています。これらの手順は正常にテストされていますが、この記事は主にデモと説明を目的としています。カスタムスクリプトは、シスコの範囲およびサポート対象外です。Cisco Technical Assistance Center(TAC)は、カスタム外部スクリプトの作成、更新、トラブルシューティングを行いません。 スクリプトを作成する前に、最終的なスクリプトを作成する際にスクリプトに関する知識があることを確認してください。
クラスタ内のESAから次の情報を収集します。
- IPアドレスとホスト名
- クラスタ名
- クラスタ・グループ名(該当する場合)
ESAが実行するリビジョンに応じてCLIバッチが変更されるため、使用しているAsyncOS for Email SecurityのバージョンのCLIリファレンスガイドを参照してください。
次のテクニカルノートを読んで理解してください。
クラスタ内のアプライアンスの設定ファイルバックアップの自動化またはスクリプト作成
バージョン8.5よりも前のAsyncOSでは、クラスタ内でsaveconfigまたはmailconfigコマンドを使用して設定を保存しようとすると、ESAによって次の警告が生成されます。
WARNING: Clustered machines do not support loadconfig. Your configuration file has
complete data for the entire cluster, but cannot be used to restore a configuration.
[an error occurred while processing this directive]
AsyncOSバージョン8.5以降では、保存済み設定にマシンレベルの設定とクラスタ設定の両方が含まれるようになりました。これについては、バージョン8.5以降のユーザガイドで詳しく説明しています。詳細については、『エンドユーザガイド』を参照してください。
クラスタ内の各アプライアンスの設定をバックアップする必要はありません。ただし、ネットワーク内に複数のクラスタが存在し、クラスタごとに複数のグループが設定されている場合もあります。すべてのアプライアンスをクラスタから削除し、設定を保存して、クラスタに再度手動で参加させることは非常に困難です。
これらのコマンドは、ESAにログインし、クラスタからESAを削除し、設定を保存またはメール送信して、再度クラスタに参加する場合に使用できます。
最初に、クラスタ内のESAのマシン名とシリアル番号、およびグループ名を知っておくことが重要です。これは、CLIでclusterconfig listと入力すると取得できます。
(Cluster ESA1_ESA2)> clusterconfig list
Cluster esaA_esaB
=====================
Group Main_Group:
Machine ESA1.local (Serial #: 0000E878109A-G091111)
Machine ESA2.local (Serial #: 0000E878525D-9091111)
[an error occurred while processing this directive]
クラスタからアプライアンスを削除するには、clusterconfig removemachine <appliance name>コマンドを使用します。
(Cluster ESA1_ESA2)> clusterconfig removemachine ESA1.local
Please wait, this operation may take a minute...
Machine ESA1.local removed from the cluster.
[an error occurred while processing this directive]
saveconfigコマンドを使用して、設定をパスワード付きでアプライアンスに保存します。前述のように、「loadconfigコマンドを使用して、マスクされたパスワードを持つファイルをロードすることはできません。」 そのため、プロンプトが表示されたら、必ずNを入力してください。
ESA1.local> saveconfig
Do you want to mask the password? Files with masked passwords cannot be loaded
using loadconfig command. [Y]> n
File written on machine "esaA.local" to the location
"/configuration/C100V-0000E878109A-G091111-20140909T184724.xml".
Configuration saved.
[an error occurred while processing this directive]
または、mailconfigを使用して、有効な電子メール受信者に設定を電子メールで送信します。前述のように、「loadconfigコマンドを使用して、マスクされたパスワードを持つファイルをロードすることはできません。」 そのため、プロンプトが表示されたら、必ずNを入力してください。
ESA1.local> mailconfig
Please enter the email address to which you want to send the configuration file.
Separate multiple addresses with commas.
[]> joe@example.com
Do you want to mask the password? Files with masked passwords cannot be loaded
using loadconfig command. [Y]> n
The configuration file has been sent to joe@example.com.
[an error occurred while processing this directive]
最後に、clusterconfig batchコマンドを使用して、アプライアンスをクラスタに再参加させます。
clusterconfig join [--port=xx] <ip_of_remote_cluster> <admin_username>
<admin_password> <groupname>
[an error occurred while processing this directive]
前の例を続行するには、次のコマンドを使用します。
esaA.local> clusterconfig join --port=22 172.16.6.161 admin ironport Main_Group
Joining a cluster takes effect immediately, there is no need to commit.
(Cluster ESA1_ESA2)>
[an error occurred while processing this directive]
前の例で「Cluster ESA1_ESA2)」と記載されているように、コマンドプロンプトがクラスタレベルの名前に自動的に変更されます。
高度な自動化またはスクリプト化された設定ファイルバックアップ
外部ホスト(UNIX/Linux/OSX)から、プロセスのスクリプトを作成するために前述のコマンドを使用できます。
次に、スクリプトに書き込まれるプロセス全体の例を示します。ここでは、クラスタがセキュアシェル(SSH)ポート22上で動作することを前提としています。
#! /bin/bash
#
# Script to save the ESA config, then copy locally via SCP. This is assuming you
wish to
# have the cluster in SSH via port 22. This script has been written and tested against
# AsyncOS 9.0.0-390 (01/15/2014).
#
# *NOTE* This script is a proof-of-concept and provided as an example basis. While
these steps have
# been successfully tested, this script is for demonstration and illustration purposes.
Custom
# scripts are outside of the scope and supportability of Cisco. Cisco Technical
Assistance will
# not write, update, or troubleshoot custom external scripts at any time.
#
# <SCRIPT>
#
# $HOSTNAME & $HOSTNAME2 can be either the FQDN or IP address of the ESAs in cluster.
#
HOSTNAME= [IP/HOSTNAME ESA1]
HOSTNAME2= [IP/HOSTNAME ESA2]
#
# $MACHINENAME is the local name for ESA1.
#
MACHINENAME= [MACHINENAME AS LISTED FROM 'clusterconfig list']
#
# $USERNAME assumes that you have preconfigured SSH key from this host to your ESA.
# http://www.cisco.com/c/en/us/support/docs/security/email-security-appliance/
118305-technote-esa-00.html
#
USERNAME=admin
#
# $BACKUP_PATH is the directory location on the local system.
#
BACKUP_PATH= [/local/path/as/desired]
#
# Following will remove ESA1 from cluster in order to backup standalone config.
# "2> /dev/null" at the end of string will quiet any additional output of the
clustermode command.
#
echo "|=== PHASE 1 ===| REMOVING $MACHINENAME FROM CLUSTER"
ssh $USERNAME@$HOSTNAME "clustermode cluster; clusterconfig removemachine
$MACHINENAME" 2> /dev/null
#
# $FILENAME contains the actual script that calls the ESA, issues the 'saveconfig'
command.
# The rest of the string is the cleanup action to reflect only the <model>-
<serial number>-<timestamp>.xml.
#
echo "|=== PHASE 2 ===| BACKUP CONFIGURATION ON ESA"
FILENAME=`ssh -q $USERNAME@$HOSTNAME "saveconfig y 1" | grep xml | sed -e
's/\/configuration\///g' | sed 's/\.$//g' | tr -d "\""`
#
# The 'scp' command will secure copy the $FILENAME from the ESA to specified
backup path, as entered above.
# The -q option for 'scp' will disable the copy meter/progress bar.
#
echo "|=== PHASE 3 ===| COPY XML FROM ESA TO LOCAL"
scp -q $USERNAME@$HOSTNAME:/configuration/$FILENAME $BACKUP_PATH
#
# Following will re-add ESA1 back into cluster.
#
echo "|=== PHASE 4 ===| ADDING $MACHINENAME BACK TO CLUSTER"
ssh $USERNAME@$HOSTNAME "clusterconfig join $HOSTNAME2 admin ironport
Main_Group" 2> /dev/null
#
echo "|=== COMPLETE ===| $FILENAME successfully saved to $BACKUP_PATH"
#
# </SCRIPT>
#
[an error occurred while processing this directive]
スクリプトに組み込まれている主なコマンドを次に示します。
- クラスタからESA1を削除します。
ssh $USERNAME@$HOSTNAME "clustermode cluster; clusterconfig removemachine
$MACHINENAME" 2> /dev/null
[an error occurred while processing this directive]
- スタンドアロン設定ファイルのダウンロード:
FILENAME=`ssh -q $USERNAME@$HOSTNAME "saveconfig y 1" | grep xml | sed -e 's/
\/configuration\///g' | sed 's/\.$//g' | tr -d "\""`
[an error occurred while processing this directive]
- ESA1からローカルホストにXMLをコピーします。
scp -q $USERNAME@$HOSTNAME:/configuration/$FILENAME $BACKUP_PATH
[an error occurred while processing this directive]
- ESA1をクラスタに戻します。
ssh $USERNAME@$HOSTNAME "clusterconfig join $HOSTNAME2 admin ironport
Main_Group" 2> /dev/null
[an error occurred while processing this directive]
実行中のスクリプトの完全な例は、次のようになります。
my_host$ ./cluster_backup
|=== PHASE 1 ===| REMOVING ESA1.local FROM CLUSTER
Please wait, this operation may take a minute...
Machine ESA1.local removed from the cluster.
|=== PHASE 2 ===| BACKUP CONFIGURATION ON ESA
|=== PHASE 3 ===| COPY XML FROM ESA TO LOCAL
|=== PHASE 4 ===| ADDING ESA1.local BACK TO CLUSTER
Joining a cluster takes effect immediately, there is no need to commit.
|=== COMPLETE ===| C100V-0000E878109A-G091111-20150116T192955.xml successfully
saved to /Users/saved_esa_configurations/
[an error occurred while processing this directive]
関連情報