web-dev-qa-db-ja.com

5分後にセッションを強制終了する利点は?

私が設定していないサーバーを扱っています。 2つのマシン間でトラフィックが通過しない場合、私とこのサーバーの間のどこかが5分後にany接続を終了します。これには、サーバーでコマンドが実行されているアクティブな接続が含まれます。具体的には、この切断がSSH接続(5分以上出力を出力しないbashコマンドを実行)とSQLデータベース(5分以上続くSQLコマンドを実行)を使用して発生することを示しました。もちろん、私が何かを読みに行き、5分間コマンドを送信しないと、接続が切断されます。

SSH設定については、サーバーを担当するグループが、クライアント側でキープアライブを有効にすることを推奨しています。彼らは、データベース接続に関する提案を提供していません。

しかし、私は完全に混乱しています。ここでのセキュリティ上の利点は何ですか? SSHの場合、クライアント側から設定を完全にバイパスでき、推奨することもできます。 (後者は、「すべてのユーザーがそれを知る必要があるため、あいまいではないため、「あいまいさによるセキュリティ」の議論さえあり得ないことを意味します。これは、あいまいであっても、攻撃を阻止することになるとは思いません。特に、彼らがそれを勧める前に、私は自分で見つけました。)両方のために、これは明らかに可用性を低下させます。非アクティブな状態が数時間続いた後にアクティブなセッションを切断することが有益である可能性があることを確認できます(ただし、長時間開いているセッションの潜在的な脅威はすぐにはわかりません)が、5分ごと?これは、接続を切断せずにSQLを実行している間は DBA.SE の投稿も読み取れないことを意味します。これは私には聞こえるほど馬鹿げていますか、それとも私が見逃しているものはありますか?

明確化

いくつかのポイントがコメントで言及されたので、少し明確にしたいと思います。

  • タイムアウトを5分で一貫して再現できます。数秒ごとにタイムスタンプサーバー側を記録するコマンドを使用しました。切断後、記録された最後のタイムスタンプは常に最初のタイムスタンプのちょうど5分後です。したがって、切断は散発的ではありませんでした。
  • 私がこの投稿を書いた直後に、システム/ネットワーク管理者は、これは本当に意図的なものであると回答しました。 「数週間前にF5に設定された5分の制限時間からさらにフォールアウトする?」 F5とは何かわかりません。一部のGooglingは、これが非常に高価なスイッチであることを示唆しています。これは、後でスイッチ設定について言及している私のDB接続の回避策を見つけようとした人物に対応します。

(この情報が回答を無効にすることはないと思います。)

30
jpmc26

これは security "cargo cult" の良い例のように思えます。セキュリティコントロールは、関係するコンテキストを理解せずに、または実際に正しく実装せずに、盲目的に実装されています。

一般的にセキュリティでは、アイドルタイムアウトのポイントは、クライアントマシンが無人のままにされ、悪意のあるユーザーがマシンにアクセスして不正なコマンドを実行するリスクを軽減するためです。これらのタイムアウトのバランスは、使いやすさ(タイムアウトを長くするか、タイムアウトしないことを好む)とセキュリティ(タイムアウトを短くすることを好む)のいずれかになる傾向があります。

システムのオペレーターが実際に名目上の制御を回避するのを実際に支援している(キープアライブの使用を推奨することにより)と述べたとおり、保安貨物の養殖を見つけることができる場合があります。

31
Rory McCune

しかし、私は完全に混乱しています。ここでのセキュリティ上の利点は何ですか?

何もない。最も可能性の高いシナリオは、リソースを節約するために、その間の何かが5分後に接続をタイムアウトにすることです。これは、ファイアウォール、WANアクセラレータ、SSLアクセラレータなどです。あるいは、デフォルト設定が不適切である可能性があります。誰が知っていますか?

多くの場合、ネットワーク管理者は他の人とは異なる懸念を抱いており、それが他の人と衝突することがよくあります。私たちは、全体像が考慮されていない、孤立した世界で働いています。

すべての設定に特に良い理由があると思い込まないでください。ただし、5分のタイムアウトが他の問題の迅速な修正であり、アプリケーションの問題がブローバックであった可能性があるため、余裕を残してください。

53
Steve Sether

しかし、私は完全に混乱しています。ここでのセキュリティ上の利点は何ですか?

これはセキュリティの問題ではないかもしれませんが、別の理由があります。残念ながら、あなたの質問はあなたの見解を提供するだけなので、本当の理由が何であるかを推測することしかできません。

1つの説明は、状態が120秒間非アクティブになるとタイムアウトする単純なステートフルパケットフィルターがあることです。これは、この非アクティブ状態の後に転送されたデータは、オープン状態がなくなったためにブロックされることを意味します。この理由は、非常に限られたリソースしか持たず、同時にあまり多くの状態を開いておくことができないデバイスである可能性があります。たとえば、ファイアウォールは10人のユーザーを想定して設計されましたが、現在は100人のユーザーが使用しています。

もちろん a BOFH がシステムを実行している可能性もありますが、これはおそらく問題に対するあなたの見方です:)しかし、これは実際のシステムについての詳細な洞察がないとわかりにくいです。

13
Steffen Ullrich

お気づきかもしれませんが、これはセキュリティとは何の関係もありません。代わりに、長期間有効な休止状態のTCP接続を終了することは、バグに関係しています。これはバグのあるソフトウェアの回避策です。

ソフトウェアの最も有名な例の1つは、TCPセッションがハングしている状態です)(少なくともバージョン7まで)Internet Explorerです。IE終了しない癖があった= TCPセッションが正しく、クライアントPC /ラップトップ/電話でソケットが閉じていると見なされている間、サーバーは接続が開いていると見なします。そしてIEはよく知られている例です。バグのあるソフトウェアはたくさんあります。

では、なぜサーバーを気にする必要があるのでしょうか。開いている各ソケットは開いているファイル記述子でもあるからです。この状況を処理しないと、サーバーでファイル記述子が不足します。理論的にはサーバーもソケットIDを使い果たす可能性がありますが、その数はOSが処理できるオープンファイル記述子の数よりもはるかに多くなります。

このため、TCPスタックのさまざまな実装には、デッドソケットでのタイムアウトが含まれています。一部のOSでは、このタイムアウトを構成できます。

8
slebetman

ほとんどの場合、ルーター、スイッチ、およびそのすべての低レベルのネットワーク機構に実装されている非アクティブなセッションでタイムアウトが発生します。TCPセッション。セキュリティは、意図的な攻撃に対する保護という意味ではほとんど関係ありませんが、バグの多いソフトウェアが接続を閉じられない、または外部ネットワークのその他のハードウェアエラーが原因で、閉じているパケットが宛先に到達できないため、リソースを使い果たしないようにしてください。

これらの一時的な障害が発生する可能性があるため、非アクティブな接続がタイムアウトしないネットワーク機器(通常は、壊れない限りリセットされません)はリソース不足に陥り、サービス拒否を生成します...

さらに悪いことに、それらは低リソース(低コスト)システムであることが多く、そのため、ネットワーク管理者はtheirの部分が負荷の下でクラッシュし、そのため積極的なタイムアウトを使用する傾向があるというリスクを軽減しようとします。 。これが、キープアライブTCP接続(キープアライブパックされたパスが反対側にある場合)と短いネットワークタイムアウトを組み合わせて使用​​する理由です。

しかし、ここでの実際の問題は、アプリケーション開発者が低レベルのネットワーク使用についてほとんど知らないこと、およびネットワーク管理者が高レベルのアプリケーションについてあまり気にしないことです。人生はそのようなものです...

2
Serge Ballesta