特定の範囲のローカルポートにのみプロセス許可

特定の範囲のローカルポートにのみプロセス許可

特定のプロセスが特定の範囲のローカルポートの外部にバインドされるのを防ぐ方法を探しています。 localhost:50000 - localhost:50050が許容範囲であるとします。一時ポートの範囲を変更したくありません。

非常に特定の範囲のローカルポートへのバインディングを許可するためにプロセスに権限を付与することは可能ですか?私のアプリケーションがコンテナフレンドリーな場合、これはうまくいきますが、Docker抽象化レイヤーなしでこれを行う必要があります。

アプリケーションは、バインドするローカルポート5つをランダムに選択するバインディング(0)を試みます。

答え1

プロセスを別々のIP名前空間に分離できます(参考資料を参照man ip-netns)。とにかく、すべてのトラフィックをそこに転送する必要があるため、どのポートにバインドされているかは問題ではありません。

外部の世界では、プロセスが正しいポートを使用しているように見えます(netstat接続を作成するのではなく接続を作成するため)。

答え2

常にroot以外の同じユーザーでプロセスを実行している場合は、モジュールを使用して指定されiptablesたポート以外のポートへのトラフィックを破棄できますowner

システムがSELinuxを実行している場合は、アプリケーションを制限するポリシーを作成する方が良いかもしれません。ソースコードで何も変更する必要はありません。同様のツールフォールガンジー始めるのに便利です。

関連情報