Linuxはユーザー名前空間機能をサポートしています。 この機能により、プロセスは異なるユーザーIDとグループIDを異なるユーザー名前空間に持ち、権限を分離できます。 ただし、ユーザー名前空間機能を有効にすると、システムに対する特権エスカレーション攻撃のリスクが高まります。 攻撃者は、システムの脆弱性を悪用して特権権限を取得し、システム権限制御をエスケープする可能性があります。 このトピックでは、Alibaba Cloud Linux 2および3オペレーティングシステムのユーザー名前空間のセキュリティ強化を設定する方法について説明します。 カーネルパラメーターを変更して、特定のビジネスシナリオに対応できます。
ユーザー名前空間のセキュリティ強化の設定
ビジネス要件に基づいて次のパラメーターを設定し、リスクを軽減できます。
user.max_user_namespacesパラメーターを設定して、各レベルの親名前空間の下に作成できる子名前空間の最大数を指定します。
e kernel.us ners_max_levelパラメーターを設定して、名前空間の最大ネスト深度を指定します。
CAP_SYS_ADMIN権限を持たない非特権ユーザーに名前空間を作成する権限を付与するには、kernel.unprivileged_userns_cloneパラメーターを設定します。
user.max_user_namespaces
値0は、ユーザー名前空間機能が無効になっていることを示し、名前空間が作成されないようにします。
各レベルの親名前空間の下に作成できる子名前空間の最大数を照会します。
/proc
インターフェイスcat /proc/sys/user/max_user_namespaces
sysctl
インターフェイスsysctl -n user.max_user_namespaces
各レベルの親名前空間の下に作成できる子名前空間の最大数を指定します。
<namespaces>
を、各レベルの親名前空間の下に作成する子名前空間の最大数に置き換えます。 たとえば、名前空間の作成を無効にする場合は、<namespaces>
パラメーターを0
に設定します。/proc
インターフェイスsudo sh -c 'echo <namespaces> > /proc/sys/user/max_user_namespaces'
sysctl
インターフェイスsudo sysctl -w user.max_user_namespaces=<namespaces>
kernel.us erns_max_level
制限事項
カーネルバージョン4.19.91-27以降のAlibaba Cloud Linux 2
カーネルバージョン5.10.134-12以降のAlibaba Cloud Linux 3
e kernel.usのerns_max_levelパラメータの有効値: 0 ~ 33
。 値0は、ユーザー名前空間機能が無効であることを示します。 デフォルト値: 33。ネイティブカーネルの動作と一致します。
名前空間の最大ネスト深度を照会します。
/proc
インターフェイスcat /proc/sys/kernel/userns_max_level
sysctl
インターフェイスsysctl -n kernel.userns_max_level
名前空間の最大ネスト深度を指定します。
<levels>
を、ネストされたユーザー名前空間の最大レベル数に置き換えます。 たとえば、ユーザー名前空間機能を無効にする場合は、<levels>
パラメーターを0
に設定します。/proc
インターフェイスsudo sh -c 'echo <levels> > /proc/sys/kernel/userns_max_level'
sysctl
インターフェイスsudo sysctl -w kernel.userns_max_level=<levels>
kernel.unprivileged_userns_clone
制限事項
カーネルバージョン4.19.91-27以降のAlibaba Cloud Linux 2
カーネルバージョン5.10.134-12以降のAlibaba Cloud Linux 3
非特権ユーザーが名前空間を作成できるようにすると、特権エスカレーション攻撃のリスクが高まる可能性があります。 kernel.unprivileged_userns_cloneパラメータの有効値:
1: CAP_SYS_ADMIN権限を持たない非特権ユーザーは、ネイティブカーネルの動作と一致する名前空間を作成できます。
0: CAP_SYS_ADMIN権限を持たない非特権ユーザーは、名前空間を作成できません。 この場合、CAP_SYS_ADMIN権限を持つ特権ユーザーのみが名前空間を作成できます。
CAP_SYS_ADMIN権限を持たない非特権ユーザーが名前空間を作成できるかどうかを照会します。
/proc
インターフェイスcat /proc/sys/kernel/unprivileged_userns_clone
sysctl
インターフェイスsysctl -n kernel.unprivileged_userns_clone
CAP_SYS_ADMIN権限を持たない非特権ユーザーがビジネス要件に基づいて名前空間を作成できるかどうかを指定します。
/proc
インターフェイスecho 0 > /proc/sys/kernel/unprivileged_userns_clone
sysctl
インターフェイスsysctl -w kernel.unprivileged_userns_clone=0