OTP暗号化ツール
-
古い形式 (プレーンテキスト) を使用している古いデバイスがあっても、データが失われることはありません。
-
古いバージョンのNetScaler Gateway との下位互換性がサポートされているため、既存のデバイスと新しいデバイスの統合とサポートに役立ちます。
-
OTP暗号化ツールは、管理者が一度にすべてのユーザーのすべてのOTP秘密データを移行するのに役立ちます。
OTP暗号化ツールの使用
-
暗号化。OTP シークレットを暗号化された形式で保存します。このツールは、NetScalerに登録されたデバイスのOTPデータを抽出し、プレーンテキスト形式のOTPデータを暗号化形式に変換します。
-
復号化。OTP シークレットをプレーンテキスト形式に戻します。
-
証明書を更新します。管理者は、いつでも証明書を新しい証明書に更新できます。管理者は、ツールを使用して新しい証明書を入力し、すべてのエントリを新しい証明書データで更新できます。証明書パスは、絶対パスまたは相対パスのいずれかである必要があります。
-
OTP暗号化ツールを使用するには、NetScalerアプライアンスで暗号化パラメータを有効にする必要があります。
-
ビルド41.20より前にNetScalerに登録されているデバイスの場合は、次の手順を実行する必要があります。
-
Upgrade the 13.0 Citrix ADC appliance to 13.0 build 41.20.
-
Enable the encryption parameter on the appliance.
-
Use the OTP Secret migration tool to migrate OTP secret data from plain text format to encrypted format.
-
-
OTP 暗号化ツールは単一値のユーザー属性のみをサポートします。複数値のユーザー属性はサポートされていません。
プレーンテキスト形式の OTP シークレットデータ
#@devicename=<16 or more bytes>&tag=<64bytes>&,
"devicename="および終了パターンの間のすべてのデータは、ユーザーOTPデータを構成します。
暗号化された形式の OTP シークレットデータ
{
"otpdata”: {
“devices”: {
“device1”: “value1”,
“device2”: “value2”, …
}
}
}
{
secret:<16-byte secret>,
tag : <64-byte tag value>
alg: <algorithm used> (not mandatory, default is sha1, specify the algorithm only if it is not default)
}
-
「デバイス」には、それぞれの名前に対する価値があります。値は base64 エンコード (KID) .base64 エンコード (IV) .base64 エンコード (暗号データ) です。
-
KID は、OTP シークレットデータ暗号化に使用される証明書を識別するために使用されるキー ID 値です。キー ID は、OTP シークレットデータの暗号化に複数の証明書を使用する場合に特に役立ちます。
-
標準の AES アルゴリズムでは、IV は常に最初の 16 バイトまたは 32 バイトの暗号データとして送信されます。同じモデルに従うことができます。
-
IVはデバイスごとに異なりますが、キーは変わりません。
OTP 暗号化ツールのセットアップ
\var\netscaler\otptoolにあります。NetScalerソースからコードをダウンロードし、必要なAD資格情報を使用してツールを実行する必要があります。
-
OTP 暗号化ツールを使用するための前提条件は次のとおりです。
-
このツールを実行している環境に python 3.5 以降のバージョンをインストールします。
-
pip3 以降のバージョンをインストールします。
-
-
次のコマンドを実行します:
-
pip install-r requirements.txt。要件を自動的にインストールします。
-
python main.py。OTP 暗号化ツールを起動します。OTP シークレットデータの移行の必要性に応じて、必要な引数を指定する必要があります。
-
-
このツールは、
\var\netscaler\otptoolのシェルプロンプトから見つけることができます。 -
必要な AD 認証情報を使用してツールを実行します。
OTP 暗号化ツールインターフェイス
オペレーション引数
| シナリオ | 演算引数の値とその他の引数 |
|---|---|
| プレーンテキスト OTP シークレットを同じ属性で暗号化された形式に変換する | OPERATION 引数の値に 0 を入力し、ソース属性とターゲット属性に同じ値を指定します。例: python3 main.py -Host 192.0.2.1 –Port 636 -username ldapbind_user@aaa.local -search_base cn=users,dc=aaa,dc=local -source_attribute unixhomedirectory -target_attribute unixhomedirectory -operation 0 -cert_path aaatm_wild_all.cert |
| プレーンテキスト OTP シークレットを別の属性で暗号化された形式に変換する | OPERATION 引数の値に 0 を入力し、ソース属性とターゲット属性に対応する値を指定します。例: python3 main.py -Host 192.0.2.1 –Port 636 -username ldapbind_user@aaa.local -search_base cn=users,dc=aaa,dc=local -source_attribute unixhomedirectory -target_attribute userparameters -operation 0 -cert_path aaatm_wild_all.cert |
| 暗号化されたエントリをプレーンテキストに変換し直す | OPERATION 引数の値に 1 を入力し、ソース属性とターゲット属性に対応する値を指定します。例: python3 main.py -Host 192.0.2.1 –Port 636 -username ldapbind_user@aaa.local -search_base cn=users,dc=aaa,dc=local -source_attribute unixhomedirectory -target_attribute userparameters -operation 1 -cert_path aaatm_wild_all.cert |
| 証明書を新しい証明書に更新する | OPERATION 引数の値に 2 を入力し、対応する引数に以前の証明書と新しい証明書の詳細をすべて入力します。例: python3 main.py -Host 192.0.2.1 –Port 636 -username ldapbind_user@aaa.local -search_base cn=users,dc=aaa,dc=local -source_attribute unixhomedirectory -operation 2 -cert_path aaatm_wild_all.cert –new_cert_path aaatm_wild_all_new.cert |
CERT_PATH 引数
certkey.mergedを作成します。
$ cat certificate.cert certificate.key > certkey.merged
$
-
ユーザーは、ユーザーデータの暗号化のためにNetScalerアプライアンスでグローバルにバインドされているのと同じ証明書を提供する必要があります。
-
証明書には、Base64 でエンコードされたパブリック証明書とそれに対応する RSA 秘密鍵を同じファイルに含める必要があります。
-
証明書の形式は PEM または CERT のいずれかである必要があります。証明書は X509 形式に準拠している必要があります。
-
パスワードで保護された証明書形式および.pfx ファイルは、このツールでは受け入れられません。ユーザーは、ツールに証明書を提供する前に、PFX 証明書を.cert に変換する必要があります。
検索フィルタ引数
-
-search_filter "(sAMAccountName=OTP*)": SAMAccountNames (ユーザーログオン名) が「OTP」で始まるユーザーをフィルタリングします。 -
-search_filter "(objectCategory=person)": person タイプのオブジェクトカテゴリをフィルタリングします。 -
-search_file "(objectclass=*)": すべてのオブジェクトをフィルタリングします。
NetScalerアプライアンスでの暗号化オプションの有効化
set aaa otpparameter [-encryption ( ON | OFF )]
set aaa otpparameter -encryption ON
OTP 暗号化ツールの使用例
NetScalerアプライアンスバージョン13.0ビルド41.20に新しいデバイスを登録する
13.0 build 41.20 より前に登録されたデバイスの OTP データを移行する
-
変換ツールを使用して、OTP データをプレーンテキスト形式から暗号化形式に移行します。
-
NetScalerアプライアンスで「暗号化」パラメーターを有効にします。
-
CLI を使用して暗号化オプションを有効にするには、次の手順を実行します。
-
set aaa otpparameter -encryption ON
-
-
GUI を使用して暗号化オプションを有効にするには、次の手順を実行します。
-
有効な AD 資格情報を使用してログインします。
-
必要な場合は、追加のデバイスを登録します (オプション)。
-
暗号化されたデータを古い証明書から新しい証明書に移行する
python3 main.py -Host 192.0.2.1 –Port 636 -username ldapbind_user@aaa.local -search_base cn=users,dc=aaa,dc=local -source_attribute unixhomedirectory -target_attribute userparameters -operation 2 -cert_path aaatm_wild_all.cert –new_cert_path aaatm_wild_all_new.cert
-
証明書には秘密鍵と公開鍵の両方が含まれている必要があります。
-
現在、この機能は OTP に対してのみ提供されています。
アプライアンスを暗号化して 13.0 build 41.20 にアップグレードした後に登録されたデバイスの再暗号化または新しい証明書への移行
暗号化されたデータをプレーンテキスト形式に変換し直す
python3 main.py -Host 192.0.2.1 –Port 636 -username ldapbind_user@aaa.local -search_base cn=users,dc=aaa,dc=local -source_attribute unixhomedirectory -target_attribute userparameters -operation 1
トラブルシューティング
-
app.log。すべての主要な実行ステップと、エラー、警告、および失敗に関する情報を記録します。
-
unmodified_users.txt。プレーンテキスト形式から暗号化形式にアップグレードされなかったユーザ DN の一覧が含まれます。これらのログは、形式のエラーとして生成されるか、他の理由が原因である可能性があります。