CGroup Namespace
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Learn & practice GCP Hacking:
HackTricks Training GCP Red Team Expert (GRTE)
基本情報
cgroup名前空間は、名前空間内で実行されているプロセスのためのcgroup階層の隔離を提供するLinuxカーネルの機能です。cgroupsは、制御グループの略で、プロセスを階層的なグループに整理し、CPU、メモリ、I/Oなどのシステムリソースの制限を管理および強制するためのカーネル機能です。
cgroup名前空間は、以前に議論した他の名前空間タイプ(PID、マウント、ネットワークなど)とは異なる独立した名前空間タイプではありませんが、名前空間の隔離の概念に関連しています。Cgroup名前空間はcgroup階層のビューを仮想化し、cgroup名前空間内で実行されているプロセスは、ホストや他の名前空間で実行されているプロセスとは異なる階層のビューを持ちます。
仕組み:
新しいcgroup名前空間が作成されると、それは作成プロセスのcgroupに基づいたcgroup階層のビューから始まります。これは、新しいcgroup名前空間内で実行されるプロセスが、作成プロセスのcgroupに根ざしたcgroupサブツリーに制限された、全体のcgroup階層のサブセットのみを表示することを意味します。
cgroup名前空間内のプロセスは、自分のcgroupを階層のルートとして見ることになります。これは、名前空間内のプロセスの視点から、自分のcgroupがルートとして表示され、他のサブツリーの外にあるcgroupを見ることもアクセスすることもできないことを意味します。
cgroup名前空間はリソースの隔離を直接提供するわけではありません; それはcgroup階層のビューの隔離のみを提供します。リソースの制御と隔離は、cgroupサブシステム(例:cpu、メモリなど)自体によって依然として強制されます。
CGroupsに関する詳細情報は、以下を確認してください:
CGroupsラボ:
異なる名前空間を作成する
CLI
新しいインスタンスの /proc
ファイルシステムを --mount-proc
パラメータを使用してマウントすることで、新しいマウント名前空間がその名前空間に特有のプロセス情報の正確で隔離されたビューを持つことを保証します。
Docker
プロセスがどの名前空間にあるかを確認する
すべてのCGroup名前空間を見つける
CGroup ネームスペースに入る
また、ルートでない限り他のプロセスネームスペースに入ることはできません。そして、ディスクリプタがそれを指していない限り(例えば/proc/self/ns/cgroup
)、他のネームスペースに入ることはできません。
参考文献
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Learn & practice GCP Hacking:
HackTricks Training GCP Red Team Expert (GRTE)
Last updated