Linuxがユーザーレベルのネットワークポートのアクセス許可を許可しないのはなぜですか?[閉まっている]


8

時々、Linuxでネットワークポートアクセスのユーザーレベルのアクセス許可を行う方法を検索し、かなり乾燥した状態にします。たとえば、ポート5080でリッスンする重要なプロセスを実行するマシンがある場合、信頼できるユーザーの特定のセットのみにそのポートへのアクセス権を与える方法が必要だと思います–他の正常なアクセス許可プロセスと同じようにファイルシステムのアクセス許可のように行われます。

しかし、ハイポートはすべてのユーザーが利用でき、ローポートはルートのみが利用でき、authbindやiptablesでの転送などの粗雑なハックだけで他のユーザーがローポートを使用できるようになっているようです。それは非常に奇妙な状況のように思われるので、なぜそれがそのように設計されたのか、そしてなぜ人々はその状況を変える必要を感じなかったのかと思います。

回答:


4

Linuxはネットワーク名前空間をサポートしています。異なるプロセスに異なるネットワークインターフェイスのセットを表示させることができます。これは幅広いトピックです。

マシン内で特定のユーザーのみがアクセスできる通信ポートが必要な場合は、ファイルシステムスペースに権限を持つ名前を持つ従来のUnixソケットを使用できます。Linuxは、AF_UNIXソケットの読み取り/書き込み権限を尊重します。

マシンが他のマシンから到着するポート5080で外部TCPまたはUDP要求をリッスンする場合、ユーザーのアクセス許可についてこれ以上話すことはできません。5080を超えるプロトコルにセキュリティを組み込む必要があります:認証、暗号化、整合性/なりすまし/ DoS耐性。


ネットワーク名前空間により、異なるユーザーが異なる名前空間にアクセスできるようになりますか?本質的に、一部のポートのすべてのユーザーが他のポートをブロックできますか?
BT

2

当初は、初期のUnixシステムの範囲とは異なる複雑な設計が必要だったと思います。

後で、私は推測します。一般的なケースにユーザーレベルのネットワークポートアクセス許可を実装する確立された方法があったためです:inetdは、(4.3BSD)TCP / IP(4.2BSD)の約2年後に登場しました。inetdデーモンは、その設定ファイルで指定されたポート上のルートおよびリッスンとして実行されます。着信接続時inetdに、構成ファイルで指定された別のプログラムを生成し、inetd構成ファイルでも指定されたユーザーとして実行されます。したがって、少なくとも各接続で新しいプロセスを開始することが許容されるサービスでは、問題は解決されます。


面白い。私は言わなければなりません、それはすべてのアクションが新しいプロセスを必要とするソリューションを作るために行うLinuxのようなものです。
BT

0

1つの理由は、ほとんどのユーザーが他のサーバーに接続するために、必ずしもrootになる必要はなく、一時ポートを使用できる必要があるためだと思います。

TCP / IPv4接続は2つのエンドポイントで構成され、各エンドポイントはIPアドレスとポート番号で構成されます。したがって、クライアントユーザーがサーバーコンピューターに接続する場合、確立された接続は(サーバーIP、サーバーポート、クライアントIP、クライアントポート)の4つのタプルと考えることができます。通常、4つのうち3つはすぐにわかります。クライアントマシンは独自のIPアドレスを使用し、リモートサービスに接続するときは、サーバーマシンのIPアドレスとサービスポート番号が必要です。

すぐにはわからないのは、接続が確立されると、接続のクライアント側がポート番号を使用することです。クライアントプログラムが特定のポート番号を明示的に要求しない限り、使用されるポート番号は一時的なポート番号です。エフェメラルポートは、マシンのIPスタックによって割り当てられる一時的なポートであり、この目的のために指定された範囲のポートから割り当てられます。接続が終了すると、エフェメラルポートは再利用できますが、ほとんどのIPスタックは、エフェメラルポートのプール全体が使用されるまでそのポート番号を再利用しません。そのため、クライアントプログラムが再接続すると、新しい接続の側に別のエフェメラルポート番号が割り当てられます。


1
ユーザーレベルのネットワークアクセス許可はどのようにそれを防ぎますか?
BT
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.