GNU/Linux >> Linux の 問題 >  >> Linux

サンドボックス化のために、Linux プロセスのソケット作成を無効にする方法は?

ptrace 最も明白なツールのようですが、それ以外は…

util-linux[-ng] にはコマンド unshare があります 、カーネルの clone を使用します /unshare インターフェイス。 unshare -nまで新しいプロセスを実行すると (または clone(CLONE_NEWNET) )、それが作成するすべてのネットワーク ソケットは、別の名前空間にあります。これはカーネル リソースの問題を解決しませんが、プロセスをサンドボックス化します。

Linux カーネルは、prctl(PR_SET_SECCOMP, 1) で入力されるモードである seccomp もサポートしています。 これにより、プロセス (実際にはスレッド) が read 以外のシステムコールを呼び出さなくなります 、 writeexit 、および sigreturn .これは非常に効果的なサンドボックスですが、変更されていないコードで使用するのは困難です。

socket を許可しない SELinux ドメインを定義できます /bind /等。呼び出し、その型への動的遷移を実行します。これには (明らかに) SELinux ポリシーを積極的に適用するシステムが必要です。 (おそらく、AppArmor と TOMOYO でも同様のことが可能ですが、私はそれらのどれにもあまり詳しくありません。)


systrace を見てみましょう - ソケットに限定されませんが、汎用の syscall ポリシー ジェネレーター/エンフォーサーです。引用:

GNU/Linux への移植が完了し、カーネル パッチが Marius Eriksen によって積極的に維持されています。 ptrace バックエンドを使用して、カーネルを変更せずに実行できます。

免責事項 - Linux で試したことはありません。


Linux
  1. Linux –非特権ユーザーのシステムビープ音を無効にする方法は?

  2. ニンテンドーWii用のLinuxカーネル?

  3. Linux カーネルの copy_from_user は内部でどのように機能しますか?

  1. Linuxでゾンビプロセスを強制終了する方法

  2. Linuxにvtopをインストールする方法

  3. Linux でプロセスのヒープ サイズを確認する方法

  1. Linuxデスクトップでカーネルをアップグレードする方法

  2. Linuxマシンでrootユーザーのリモートログインを無効にする方法

  3. Linux –カーネルでUser_namespacesを有効にする方法は? (非特権の `unshare`の場合。)?