Linuxで最大同時ポート数を制限する方法はありますか?シングルユーザー同時にバインディング/受信は可能ですか(ネットワークデバイスごとに可能ですか?)
つまり、ユーザーが無制限のポートを同時にバインド/受信できる場合、悪意のあるユーザーはポートが使い果たされ、他のユーザーがどのポートでも受信できなくなるまで、使用可能なすべてのポートで受信して他のユーザーのポートの可用性を操作します。しようとすることができます。 。
答え1
ポートでリッスンするにはソケットを作成する必要があります。これは以下によって行われる。
sockfd = socket(AF_INET, SOCK_STREAM, 0);
(Cで)。これにより、対応するファイル記述子を聞くことができます。
ユーザーが開くことができるファイルの最大数については、ulimit -h
システム上の最大ファイル数を参照してください。
ファイルのulimitを開くために実際の接続が必要か、それともソケットから受け取るのもファイルを開くと見なされるかどうか覚えていません。聞くことも重要だと思います。
一般ユーザーは1024以下のポートにバインドできません。
Selinuxと衣類はまた、ユーザーがポートにバインドできるものを制御できる必要があります(これを試してはいけません。ドキュメントのみを参照)。
実際の生活では、一時ポートに対してのみポート枯渇を見たことがあり、サーバーポートについては一度も見たことがありません。