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