为使用 LD_PRELOAD 功能的应用程序配置允许列表
注意:
使用 LD_PRELOAD 功能配置允许列表仅面向适用于 Linux 的 Citrix Workspace 应用程序。
如果其他正在运行的应用程序使用 LD_PRELOAD,App Protection 会阻止启动受保护的会话。 如果有正版应用程序或者获得了管理员批准,则可以使用允许列表功能。 要允许使用其他使用 LD_PRELOAD 的应用程序,必须配置允许列表。
如果其他使用 LD_PRELOAD 的应用程序正在运行,App Protection 会停止启动受保护的会话。 但是,如果有合法的应用程序或者管理员批准,可以使用允许列表功能。 要允许这些应用程序运行,您需要设置允许列表。
可以使用以下步骤将具有预加载功能的应用程序添加到允许列表:
- 确定阻止启动受保护的 VDA/应用程序会话的进程。
- 为允许列表创建配置文件并添加已识别的进程。
确定阻止启动受保护的 VDA 的流程
当 AppProtection 由于使用 LD_PRELOAD 而阻止启动受保护的 VDA 时,请使用 LD_PRELOAD 验证进程。 可以将真实流程添加到允许列表中。
要使用 LD_PRELOAD
识别进程,请使用以下脚本。 使用 .sh
扩展名将其保存并在终端窗口中以 sudo
的形式运行:
#!/bin/bash
for pid in /proc/*/; do
pid=${pid%*/}
pid=${pid##*/}
environ_file="/proc/$pid/environ"
if [[ ! -f "$environ_file" ]]; then
continue
fi
ld_preload_entry=$(tr '\0' '\n' < "$environ_file" | grep -w "LD_PRELOAD")
if [[ -n "$ld_preload_entry" ]]; then
cmdline_file="/proc/$pid/cmdline"
cmdline=$(tr '\0' ' ' < "$cmdline_file" | awk '{print $1}')
echo "\"$ld_preload_entry\" : \"$cmdline\""
fi
done
<!--NeedCopy-->
根据前面脚本的输出,确定导致受保护的 VDA 启动失败的进程,并将这些进程添加到允许列表中。
下面是显示输出结果的示例图像,其中包含带有预加载列表的应用程序列表。
创建允许列表配置文件
出于安全原因,默认情况下不安装进程允许列表配置文件。 您需要在第一次需要时创建此配置文件。
- 在“$ICAROOT/config/”文件夹中创建一个名为 AppProtection_Preload_Allowlist.json 的空文件。
-
按以下格式添加流程详细信息:
{ "LD_PRELOAD_PATH1" : "PROCESS_PATH1", "LD_PRELOAD_PATH2" : "PROCESS_PATH2" } <!--NeedCopy-->
下面是显示新添加的配置的示例图像:
- 保存该文件,然后使用以下命令设置 AppProtection_Preload_Allowlist.json 文件的权限。
sudo chmod 644 $ICAROOT/config/AppProtection_Preload_Allowlist.json
注意:
为了防止冗余,配置条目中允许使用最少的正则表达式。 必须检查特殊的正则表达式字符,并使用双反斜杠 (\) 进行转义。
- 例如,假设脚本输出如下所示:
LD_PRELOAD=:/snap/blue-recorder/126/$LIB/bindtextdomain.so" : "/snap/blue-recorder/126/blue-recorder
- 您可以看到输出包含“.”、“$”,这是正则表达式模式中的特殊字符。 因此,您必须使用反斜线对其进行转义,如下所示:
LD_PRELOAD=:/snap/blue-recorder/126/\\$LIB/bindtextdomain\\.so" : "/snap/blue-recorder/126/blue-recorder
- 要使用数字 126 之类的可变元素,可以使用正则表达式来创建更通用的允许列表条目:
LD_PRELOAD=:/snap/blue-recorder/\\d+/\\$LIB/bindtextdomain\\.so" : "/snap/blue-recorder/\\d+/blue-recorder