OTP加密工具
自Citrix ADC版本13.0构建41.20起,OTP密钥数据以加密格式存储,而非纯文本格式,以增强安全性。以加密格式存储OTP密钥是自动的,不需要手动干预。
以前,Citrix ADC设备将OTP密钥作为纯文本存储在活动目录中。以纯文本格式存储OTP密钥会构成安全威胁,因为恶意攻击者或管理员可以通过查看其他用户的共享密钥来利用数据。
OTP加密工具具有以下优势:
- 即使您的旧设备使用旧格式(纯文本),也不会导致任何数据丢失。
- 与旧Citrix网关版本的向后兼容性支持有助于集成以及与现有设备及新设备一起使用。
- OTP加密工具可帮助管理员同时迁移所有用户的所有OTP密钥数据。
注意
OTP加密工具不会加密或解密KBA注册数据或电子邮件注册数据。
OTP加密工具的使用
OTP加密工具可用于执行以下操作:
- 加密。以加密格式存储OTP密钥。该工具提取向Citrix ADC注册的设备的OTP数据,然后将纯文本格式的OTP数据转换为加密格式。
- 解密。将OTP密钥恢复为纯文本格式。
- 更新证书。管理员可以随时将证书更新为新证书。管理员可以使用该工具输入新证书并使用新证书数据更新所有条目。证书路径必须是绝对路径或相对路径。
重要
- 必须在Citrix ADC设备中启用加密参数才能使用OTP加密工具。
- 41.20对于向构建之前的Citrix ADC注册的设备,必须执行以下操作:
- 将13.0 Citrix ADC设备升级到13.0构建41.20。
- 在设备上启用加密参数。
- 使用OTP Secret迁移工具,将OTP秘密数据从纯文本格式迁移到加密格式。
纯文本格式的OTP密钥数据
示例:
#@devicename=<16或更多字节>&tag=<64bytes>&,
正如您所看到的,旧格式的起始模式始终为“# @”,结束模式始终为“&”。"设备名称= "与结束模式之间的所有数据构成用户OTP数据。
加密格式的OTP密钥数据
OTP数据的新加密格式为以下格式:
示例:
{" otpdata ":{"设备":{“device1”:“value1”、“device2”:“value2 ”, ... } } }
其中,value1为孩子+ 4 +密码数据的base64编码值
密码数据的结构如下:
{secret:<16字节secret>, tag:< 64字节tag值> alg: <算法使用>(非强制,默认为sha1,非默认时指定算法)}
- 在“设备”中,您有每个名称的值。该值为base64encode(孩子).base64encode (IV) .base64encode (cipherdata)。
- 在标准AES算法中,四始终作为前16或32字节的密码数据发送。您可以遵循同样的模式。
- 尽管密钥保持不变,但每台设备的第四将有所差别。
OTP加密工具设置
OTP加密工具位于目录\ var \ netscaler \ otptool
中。您必须从Citrix ADC源下载代码,然后使用所需的广告凭据运行该工具。
- 使用OTP加密工具的必备条件:
- 在运行此工具的环境中安装python 3.5或更高版本。
- 安装pip3或更高版本。
- 执行以下命令:
- pip安装让。自动安装要求
- python main.py。调用OTP加密工具。必须根据迁移OTP密钥数据的需要提供所需的参数。
- 该工具可以位于壳牌提示符中的
\ var \ netscaler \ otptool
。 - 使用所需的广告凭据运行该工具。
OTP加密工具界面
下图显示了一个示例OTP加密工具界面。该接口包含为加密/解密/证书升级必须定义的所有参数。此外,还记录了每个参数的简要描述。
操作参数
必须定义操作参数才能使用OTP加密工具进行加密,解密或证书升级。
下表总结了一些可以使用OTP加密工具和相应的操作参数值的场景。
场景 | 操作参数值和其他参数 |
---|---|
在同一属性中将纯文本OTP密钥转换为加密格式 | 输入操作参数值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 . python3 main.py -Host 192.168.2.1 -Port 636 -username ldapbind_user@aaa.local -search_base cn=users,dc=aaa,dc=local |
将纯文本OTP密钥转换为不同属性中的加密格式 | 输入操作参数值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 . python3 main.py -Host 192.168.2.1 -Port 636 -username ldapbind_user@aaa.local -search_base cn=users,dc=aaa,dc=local |
将加密的条目转换回纯文本 | 输入操作参数值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 . python3 main.py -Host 192.0.2.1 -Port 636 -username ldapbind_user@aaa.local -search_base cn=users,dc=aaa,dc=local |
将证书更新为新证书 | 输入操作参数值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 -target_attribute userparameters -operation 2 -cert_path aaatm_wild_all. python3 main.py -Host 192.0.2.1 -Port 636 -username ldapbind_user@aaa.local -search_base cn=users,dc=aaa,dc=localcert -new_cert_path aaatm_wild_all_new.cert |
CERT_PATH参数
CERT_PATH参数指定Citrix ADC中用于加密数据的证书。用户必须为所有三项操作(即加密、 **解密和 **更新证书)提供此参数。
关于证书的注意事项
- 用户必须提供与Citrix ADC中全局绑定的相同证书以进行用户数据加密。
- 证书必须在同一文件中包含Base64编码的公共证书及其对应的RSA私钥。
- 证书的格式必须是PEM或证书。证书必须遵守X509格式。
- 此工具不接受密码保护的证书格式和.pfx文件。在向工具提供证书之前,用户必须将 PFX 证书转换为.cert。
SEARCH_FILTER参数
SEARCH_FILTER参数用于筛选广告域或用户。此搜索筛选器的格式与Citrix ADC中LDAP操作命令中使用的LDAP搜索筛选器格式相同。
在Citrix ADC设备中启用加密选项
要加密纯文本格式,必须在Citrix ADC设备中启用加密选项。
要使用CLI启用OTP加密数据,请在命令提示符下键入:
set aaa otpparameter [-encryption (ON | OFF)]说明
示例:
设置aaa otpparameter -encryption ON
OTP加密工具用例
OTP加密工具可用于以下用例。
向Citrix ADC设备版本13.0构建41.20中注册新设备
向Citrix ADC设备版本13.0构建41。x中注册新设备时,如果启用了加密选项,OTP数据将以加密格式保存。您可以避免手动干预。
如果未启用加密选项,OTP数据将以纯文本格式存储。
迁移版本13.0构建41.20之前注册的设备的OTP数据
必须执行以下操作来加密向13.0构建41.20之前的Citrix ADC设备中注册的设备的OTP密钥数据。
- 使用转换工具将OTP数据从纯文本格式迁移到加密格式。
- 在Citrix ADC设备上启用“加密”参数。
- 要使用CLI启用加密选项,请执行以下操作:
设置aaa otpparameter -encryption ON
- 要使用GUI启用加密选项,请执行以下操作:
- 导航到安全(安全)> AAA -应用程序流量(AAA -应用程序流量),然后单击身份验证设置(身份验证设置)部分下的修改认证AAA OTP参数(更改身份验证AAA OTP参数)。
- 在3 .配置AAA OTP参数(配置AAA OTP参数)页面上,选择OTP秘密加密(OTP密钥加密),然后单击好吧(确定)。
- 使用有效的广告凭据登录。
- 如果需要,请注册其他设备(可选)。
- 要使用CLI启用加密选项,请执行以下操作:
将加密数据从旧证书迁移到新证书
如果管理员想要将证书更新为新证书,该工具将提供用于更新新证书数据条目的选项。
使用CLI将证书更新为新证书
在命令提示符下,键入:
示例:
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. python3 main.py -Host 192.0.2.1 -Port 636 -username ldapbind_user@aaa.local -search_base cn=users,dc=aaa,dc=localcert -new_cert_path aaatm_wild_all_new.cert
注意
- 证书必须包含私钥和公钥。
- 目前,该功能仅针对OTP提供。
将设备升级到具有加密功能的13.0构建41.20后注册的设备,重新加密或迁移到新证书
管理员可以在已使用证书加密的设备上使用该工具,并可以使用新证书更新该证书。
将加密数据转换回纯文本格式
管理员可以解密OTP密钥并将其恢复为原始纯文本格式。OTP加密工具以加密格式扫描所有用户的 OTP 密钥,并将其转换为解密格式。
使用CLI将证书更新为新证书
在命令提示符下,键入:
示例:
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列表。这些日志是因格式错误而生成的,也可能是由于其他原因造成的。