web-dev-qa-db-ja.com

最初の1024ポートがrootユーザーのみに制限されているのはなぜですか?

これは何よりもアイドルの好奇心です。私の友人から、「Linuxでrootだけが使用できるのはどのポート範囲ですか?」私は彼に0-1024が制限されていると言いました。それから彼はなぜそうなのかと私に尋ねました、そして私は途方に暮れていました。まったくわからない。

これらのポートが制限され、1025〜65535が制限されない理由はありますか?

ほとんどの主要なネットワークサービス(HTTP、FTP、SSH、Telnet、HTTPS、POP、SMTPなど)はこの範囲にあるため、考えられる答えは次のとおりです。

  • 信頼できないユーザーが、これらのポートでログオンの詳細をリッスンするプログラムを実行する可能性があります。
  • 信頼できないユーザーが不正なサーバーアプリケーションを実行する可能性があります。

誰でもここで光を当てることができますか?

53
Andrew Lambert

ポートが1024未満のコンピューターとデータを交換していて、コンピューターがUNIXの変種を実行していることがわかっているとします。次に、そのポートで実行されているサービスがシステム管理者によって承認されていることを確認します。サービスはrootとして実行されているか、少なくともrootとして開始する必要がありました。

インターネットの広くワイルドな世界では、これは問題ではありません。ほとんどのサーバーは、それらで実行されているサービスと同じ人によって管理されます。他のユーザーよりもルートを信頼することはできません。

特にローカルネットワーク上のマルチユーザーマシンでは、これが問題になることがあります。たとえば、民間の暗号法が登場する前は、別のマシンでShellコマンドを実行する一般的な方法はrshremoteshell);パスワード認証を使用するか、マシンAのユーザーXであることを証明するだけで認証できます(マシンBはX @ AがパスワードなしでX @ Bとしてログインできることを知っています)。それを証明する方法は? rshクライアントはsetuidルートであり、1024未満のポート番号を使用するため、サーバーは、通信しているクライアントが信頼できることを認識し、Aのどのユーザーがそれを呼び出しているかを偽ることはありません。同様に [〜#〜] nfs [〜#〜] はユーザーと権限に関して透過的になるように設計されているため、ローカルネットワークでは、すべてのマシンが同じユーザーデータベースを使用するという一般的な構成でした。 AのユーザーNがサーバーBからファイルシステムをマウントすると、BのユーザーNの権限が取得されます。ここでも、NFSクライアントが1024未満のポート番号から来ているという事実は、AのルートがNFSクライアントを吟味していることを証明しています。ユーザーNを装った要求を送信する場合、その要求が本当にユーザーNからのものであることを確認してください。

権限のないユーザーが低いポートでサーバーを実行できないことは、もう1つの利点ですが、主なものではありません。昔は、なりすましは非常に目新しいものであり、スプーフィングサーバーを実行しているユーザーは、とにかく警戒心のある管理者によってすぐに打ちのめされてしまいます。