ゲームサーバーホスティングとセキュリティ

ゲームサーバーホスティングとセキュリティ

私はゲームサーバーを設定する趣味プロジェクトのための小さなコントロールパネルを開発しています。しかし、セキュリティに関する懸念があり、意見を聞きたいです。

私の最初の考えアイデアは、コントロールパネルを「リモートで」(Webフロントエンドと対話)ユーザーとして実行し、ゲームサーバーを設定するときに、次のようにすべてホームフォルダのサブディレクトリに移動することです。

/home/paneluser/servers/server1/
/home/paneluser/servers/server2/
/home/paneluser/servers/server3/

ただし、ユーザーはFTPを介してこれらのサブディレクトリにアクセスできるため、マルウェアをアップロード(実行ファイルの変更など)して他のサーバー上のファイルに簡単にアクセスしたり、ファイルを削除したりできます。

私の2番目の考え独自のユーザー(root?)でコントロールパネルの「リモート」を実行し、各サーバーに対して別々のユーザーを作成し、適切なユーザーとして起動します。

私の3番目の考え最初のものを拡張し、実行可能ファイルが外部ファイルにアクセスできない一種のサンドボックスですべてのサーバーを実行することです。しかし、技術的にこれがどのように行われるのか、さらに可能かもしれません。

それでは、最善のアプローチが何であるか疑問に思います。それとも他のより良い方法がありますか?

答え1

2番目の考えは、コントロールパネルの「リモート」を独自のユーザー(root?)として実行し、各サーバーに対して別々のユーザーを作成し、適切なユーザーとして起動することでした。

これは最善の解決策ではありませんが、学習の利益のためにとにかく批判します。すぐに最善の解決策を探しますが、それが重要です。

私の言葉に従って繰り返してください。可能であれば、ネットワーク接続サービスをrootとして実行しないでください。(この場合、できるアプリケーションを制御するので役に立ちます。)

これを行う正しい方法は、root で始まるデーモンを使用するが権限のないユーザーに権限を付与することです。権限を放棄する前に、そのデーモンに2番目のデーモンを作成させることができ、権限のないデーモンは権限のあるデーモンと通信します。これにより、特権デーモンは特権のないデーモンに代わって操作を実行します。

私の言葉に従って繰り返してください。これらの特権の分離は、特権デーモンが検証を実行しない限り役に立ちません。これは、権限のあるデーモンが権限のないデーモンのコマンドを盲目的に受け入れることを許可できないことを意味します。コマンドが正確で意味があることを確認する必要があります。確認しない場合は、以下を導入しました。混乱した即時の質問脆弱性。これらのセキュリティコードを記述すると、Web接続サービスが破損することを前提としてください。私はあなたが言うことを聞きました - 「そのようなことは決して起こりません」。はい、そうです。安全は損傷を制限することです。読書を通じて利益を得ることもできますコンピュータセキュリティに関する最も愚かなアイデア6つ

3番目のアイデアは、最初のアイデアを拡張して、実行可能ファイルが外部ファイルにアクセスできない一種のサンドボックスですべてのサーバーを実行することでした。しかし、技術的にこれがどのように行われるのか、さらに可能かもしれません。

A +:これはそのようなWebアプリケーションのセキュリティを実装する(部分的に)正しい方法です。これを達成する方法は次のとおりです。chroot 刑務所

答え2

おすすめしたいです。各ゲームサーバーは独自のユーザーとして実行されます。

/ホーム/ユーザー1/ゲーム/ホーム/ユーザー2/ゲーム

その後、ゲームサーバーを起動および停止するには、そのユーザー(user1またはuser2)でコマンドを実行するWebサーバーが必要です。

SFTPは、実際のユーザーサポートを介して簡単に設定できます。

個人的には、fifoまたはtmpファイルのコマンドを受け取るデーモンをユーザーごとに実行し、ユーザーとして実行します。次に、Webフロントエンドをファイルに書き込むようにします。

デーモンは、「stop」や「start」など、ゲームを実行または終了する特定のコマンドのみを受け取る必要があります。これにより、分離はそのままになりますが、管理者/開発者設定でコマンドを実行できます。

関連情報