OpenSSHのMaxSessionsを1000000に設定しないのはなぜですか? [閉鎖]

OpenSSHのMaxSessionsを1000000に設定しないのはなぜですか? [閉鎖]

セッションを多重化するようにSSHクライアントを構成しました。

Host *
ControlMaster auto
ControlPath ~/.ssh/sockets/%r@%h-%p
ControlPersist 600

時々、デフォルトのOpenSSHサーバー側のMaxSessions制限である10に達します。明らかな答えは、MaxSessions必要以上に多くの数に増やすことです。

1000000に設定しない理由はありますか?デフォルト値10は、これを行わない理由があることを示します。

私が考えることができるのは、10個程度を超えると接続が混んでいると効率性が低下する可能性があるということだけですが、被害が自分自身に限られるという点を考慮すれば、それが理由なのかよくわかりません。

答え1

何でも制限する理由は常にあります。これが10「通常のデフォルト」です。より少ないのは、より制限的なユースケース(シェルアクセスブロックまたは単一チャネルのみを許可)のためのものであり、何百万ものセッションを発行することを本当に知っていれば、さらに増やすことも合理的です。 4つ以上開く場合はほとんどありません。

この質問について:

1000000に設定しない理由はありますか?

max_sessions変えるタイプがあるため、int可能な最大値はです2147483647。あなたが理想的な何百万ドルを集めるのを防ぐことができるものは何もありません。

...しかし、すでに述べたように、これを行う理由はありません。

より多くのセッションを使用してもセキュリティに大きな影響はありませんが(攻撃者が単一のセッションを開くと問題が発生します)、より多くのセッションを使用するとパフォーマンスが低下する可能性があります。

答え2

1000000に設定しない理由はありますか?

はい。誤ってSSHセッションを使用し続けるスクリプトを実行すると、DoS自分のサーバーが危険にさらされます。同じサーバー上の他のアプリケーションがファイルを開くことができない状況が発生したいですか?開かれたファイル記述子の数は限られており、/proc/sys/fs/file-max通常、デフォルトは1M未満です。

任意に大きな値ではなく、必要と思われる最大値と安全バッファを追加して設定する必要があります。

答え3

各SSHセッションはリソースを使用します。一部のクイックベンチマークは、一般的なセッションが1つのプロセスID、500kbの非共有メモリ、および7つのファイル記述子を使用することを示しています。これらのリソースはすべて制限されているため、すべてを使用するとサーバーが応答しなくなったり使用できなくなります。

覚えておいて、あなたはあなたのサーバーに接続している唯一の人ではありません。十分に安全でないSSHサーバーを検索するボットネットが多く、リソースを枯渇させる可能性があります。

関連情報