22

他の人のコードをローカルで実行するWebサービスを作りたいです。当然、コードの特定の「サンドボックス」ディレクトリへのアクセスを制限して、サーバーの他の部分(DB、メインWebサーバーなど)に接続できないようにします。

これを行うための最良の方法は何ですか?

VMware/Virtualboxを実行します。

  • +私はそれが得るのと同じくらい安全だと思います。誰かがなんとか「ハッキング」したとしても、ゲストマシンをハッキングするだけです。

  • +プロセスが使用するCPUとメモリを制限できます

  • +セットアップが簡単-VMを作成するだけ

  • -サンドボックスディレクトリをホストからゲストに「接続」するのが難しい

  • -VMを管理するために余分なメモリとCPUを浪費する

恵まれないユーザーを実行します。

  • +余分なリソースを無駄にしません

  • +サンドボックスディレクトリは単なるディレクトリです

  • ?CPUとメモリを制限できませんか?

  • ?十分安全かどうかわかりません

その他の方法で?

Fedora Core 8を実行しているサーバー、JavaおよびC++で記述された「その他の」コード

4

9 に答える 9

15

CPU とメモリを制限するには、プロセスのグループに制限を設定します (POSIX リソース制限は個々のプロセスにのみ適用されます)。これは、cgroups を使用して実行できます。

たとえば、メモリ cgroups ファイルシステムをマウントしてメモリ起動を制限するには、次のようにします。

# mount cgroup -t cgroup -o memory /cgroups/memory

次に、グループごとに新しいサブディレクトリを作成します。

# mkdir /cgroups/memory/my-users

制約したいプロセス (ここでは PID "1234" のプロセス) をこのグループに入れます。

# cd /cgroups/memory/my-users
# echo 1234 >> tasks

グループの合計メモリ制限を設定します。

# echo 1000000 > memory.limit_in_bytes

グループ内のプロセスが子プロセスを fork する場合、それらもグループ内になります。

上記のグループは、常駐メモリ制限を設定します (つまり、制約されたプロセスは、より多くのメモリを使用するのではなく、スワップを開始します)。他の cgroup では、CPU 時間など、他のことを制限できます。

サーバー プロセスをグループに入れる (すべてのユーザーを含むシステム全体が制限内に収まるようにする) か、サーバーに新しいセッションを新しいグループに入れるようにさせることができます。

于 2009-05-10T18:40:37.523 に答える
9

codepad.org/about ページを読むと、いくつかのクールなアイデアが得られるかもしれません。

http://codepad.org/about

于 2009-04-28T03:19:07.850 に答える
1

ulimit恵まれないユーザーがマシンをDOSする能力を制限する方法については、友人たちをチェックしてください。

于 2009-04-27T09:25:43.797 に答える
1

Ideone APIを使用する- 最も簡単な方法です。

于 2010-08-11T10:34:17.263 に答える
1

SELinux のポリシーの設定について少し学習してみてください。Red Hatボックスを実行している場合は、デフォルトのディストリビューションにパッケージ化されているため、問題ありません.

これは、コードがアクセスできないものを知っている場合に役立ちます。または、逆のことを行って、特定のものへのアクセスのみを許可することもできます。

ただし、これらのポリシーは複雑であり、提示したい時間よりも多くの投資が必要になる場合があります。

于 2009-05-10T19:17:37.900 に答える
1

Apache サーバーのコンテナーとして lxc を使用してみてください

于 2011-01-15T06:45:14.790 に答える
1
  1. 権限のないユーザーで実行すると、ローカルの攻撃者が脆弱性を悪用して権限を昇格することができます。
  2. VM でのコードの実行を許可することも安全ではない可能性があります。最近のVMWare 脆弱性レポートが示しているように、攻撃者はホスト システムにアクセスできます。

私の意見では、そもそもシステムでネイティブ コードを実行できるようにすることは、セキュリティの観点からは得策ではありません。ネイティブコードの実行を許可することを再検討する必要があるかもしれません。これにより、確実にリスクが軽減されます。

于 2009-04-27T09:43:03.317 に答える
0

このことにどれだけの労力を注ぎたいかわかりませんが、VPS Web ホストのように Xen を実行できますか?

http://www.xen.org/

これにより、他のユーザーや基本システムを危険にさらすことなく、サーバーの小さな部分で完全なルート アクセスが許可されます。

于 2009-05-10T18:51:24.337 に答える