web-dev-qa-db-ja.com

デフォルトのログイン試行レート制限は何ですか?

OpenSSHを使用した標準のLinuxインストールでは、パスワード認証を使用したSSHログイン試行のデフォルトのレート制限は何ですか?

攻撃者は1時間にいくつのパスワードを推測できますか?

3
Zaz

すべての接続で、パスワードプロンプトには特定の制限があります。 MaxAuthTriesオプションで定義されます(デフォルトは6)。しかし、一度にすべての試みを行うことはできません。失敗するたびに、時間のペナルティが発生します(PAMスタックを遅延して実行するのに最大3秒)。

攻撃者は、MaxStartupsによって制限されたレートで接続を発行できます(デフォルトは10:30:100で、認証されていない接続が10個開いている場合、接続の拒否を開始します)。

LoginGraceTimeオプションは、攻撃者が認証に成功しなかった場合にサーバーによって接続が閉じられるまでの最大時間を定義するだけなので、攻撃者とは無関係です。

ここでの制限要因は主に鍵交換であり、次の理由で時間がかかります。

  • 関連する暗号化にはCPU時間がかかります-サーバーとクライアントのプロセッサまたはアクセラレータによって異なります
  • 往復時間-地理的な距離によって異なります

私の高速テストでは、他の部屋でRaspberryPiへの接続を確立するのに約1秒かかることが示されました。しかし、それはより速く進む可能性があり、SSHDはより多くの並列要求を処理できます。 localhostからのパスワードプロンプトはほぼ即時です。

攻撃者が単純に10の接続を並行して発行し、プロンプトを1秒間待機し、1つのパスワードを書き込み、2番目のプロンプト(またはパスワードが実際に正しいことの確認)を3秒間待機するとします(...それが消えるまで6回繰り返されます) 。これには、シングルスレッドで6回のパスワード試行、10スレッドで60回のパスワード試行で1 + 3 * 6秒(19秒)かかります。この楽観的なケースでは、1分で180に、1時間で10kに切り上げます。

攻撃者はスレッドの数を20以上に増やすことができ、拒否される可能性は非常に低くなりますが、試行回数は2倍になります(またはそれ以上ですが、100を超えることはできません)。これがfail2banが存在します。

3
Jakuje

man sshd_config:

 MaxStartups
         Specifies the maximum number of concurrent unauthenticated con‐
         nections to the SSH daemon.  Additional connections will be
         dropped until authentication succeeds or the LoginGraceTime
         expires for a connection.  The default is 10:30:100.

         Alternatively, random early drop can be enabled by specifying the
         three colon separated values “start:rate:full” (e.g. "10:30:60").
         sshd(8) will refuse connection attempts with a probability of
         “rate/100” (30%) if there are currently “start” (10) unauthenti‐
         cated connections.  The probability increases linearly and all
         connection attempts are refused if the number of unauthenticated
         connections reaches “full” (60).
0
Ipor Sircer