MaxAuthTries
私のLinuxコンピュータでは1に設定しました。その後、私はssh
ローカルネットワーク上の他のコンピュータから私のLinuxコンピュータに接続しようとしましたが、エラーは " Too many authentication failures
"失敗しました。
以前は設定にいくつかの失敗がありましたが、それでも合計に含まれているためです。
ページman
の内容は次のとおりです。
MaxAuthTries
接続ごとに許可される最大認証試行回数を指定します。失敗回数がこの値の半分に達すると、より多くの失敗が記録されます。デフォルトは6です。
接続とみなされるものは何ですか?これはMaxAuthTries
、特定のIPアドレスからのみ情報を取得できることを意味しますか?これはTCP接続を意味しますか?接続を切断して新しい接続を作成して再試行するにはどうすればよいですかssh
?
答え1
sshd
SSHの場合は、TCPポート(通常はポート22)に接続されます。追加の認証試行の受け入れを停止すると、接続が終了し、sshd
接続が完了します。
SSH プロトコルでは、ユーザーが認証を試みる前に、暗号化やその他のプロトコルオプションのネゴシエーション、セッションキーの設定、ホストキーの交換が必要です。したがって、各新しい接続にはいくつかの重要なタスクが必要です。複数のソースで試行される多数のSSH接続試行は、間違いなくサーバーをDoSするために使用されます。
認証試行は、sshd
現在の構成で有効になっている認証方法に対する試みです。たとえば、
- クライアントが認証のために SSH 鍵を提供する場合、提供された各鍵は試行回数として計算されます。
- Kerberos / GSSAPI認証方法が有効になっている場合、その方法を使用してクライアントを認証できることを確認することは試行としてカウントされます。
- パスワードの確認プロンプトに入力された各パスワードは、明らかに1つとして計算されます。
最初の2つのケースでは、状況が発生する可能性があります。これをMaxAuthTries
1に設定してKerberos / GSSAPI認証を有効にすると、パスワード認証を試みる前に1回の試行が使い果たされる可能性があります。同様に、SSHクライアントに使用可能な認証キーがあるがターゲットユーザーのターゲットシステムに公開キーを追加しないと、公開キー認証の試行は単一の試行を使い果たし、~/.ssh/authorized_keys
パスワードの確認も試みることができません。
pam_unix
通常、パスワード認証を処理するPAMライブラリは、デフォルトでは認証試行失敗後2秒の遅延を適用します。
主な脅威がパスワード推測ワームとインターネット上の他の感染システムのボットである場合、MaxAuthTriesを減らすのはおそらく悪い措置です。ボットは疲れていないので、常に再接続して再試行します。試みるたびに、SSHプロトコルネゴシエーションのためにいくつかのCPU容量を拡張する必要があります。まず、ボットがあることを確認する必要があります。成功しないだろう、第二に、ロボットはできるだけ多くの時間を無駄にする既存の接続から最も低コスト。 1つの接続で複数の認証を試みることができますが、応答は...非常に...ゆっくりとなります。
これは、パスワードの確認が完全に無効になっていても、クライアントにパスワードの入力を求める理由ですsshd
。プロンプトは完全に偽であり、クライアントがどのパスワードを入力しても拒否されます。しかし、顧客はこれを確信できません。
もちろん、接続に対する認証の試みをあまりにも許可し、ボットプログラマーがこれらの「タールフィット防御」の効果を制限するためにタイムアウトを実装した場合、ボットは最終的に接続を終了する可能性があります。
答え2
広く言うと、接続は特定のユーザーとして接続しようとするすべての試みとして定義されます。
pam_tally
pam_tally2
使用しているディストリビューションによっては、またはコマンドがここで役に立ちます。次のコマンドは、特定のユーザーが経験した失敗の数を表示します。
pam_tally --user=username
特定のユーザーをリセットするには:
pam_tally --reset --user=username
すべてのユーザーの場合:
pam_tally --reset
リセットされたことを確認するには:
pam_tally --user=username
pam_tally
オプションなしでこのコマンドを実行すると、pam_tally2
試行に失敗したかロックされたすべてのユーザーが表示されます。pam_tally2
このような場合は必ずに変更してください。
答え3
これは受精ビーズの受験に少し似ていますが、接続はそのままで、接続の多重化と遅延(、、)に関してクライアントでControlMaster
オプションを明示的に設定しない限り、すぐに終了する必要があります。ControlPersist
私の考えに何が起こっているのか(そしてそれをssh -v
確認するのを助けるために「秘密鍵を試す」を探してください)、このコンピュータにパスワードベースの認証を使用したいと思います。ただし、クライアントにはパスワードなしの認証用のキーペアがある場合があります~/.ssh
。標準構成では、パスワードよりもキーが優先されるため、ユーザーがssh
キーを提供するとサーバーはそれを気にせず、試行が失敗します。 (テーマのバリエーション:複数のキーペアが設定されており、そのうちの1つだけがサーバーに承認される可能性があります。)以下を-oPreferredAuthentications=keyboard-interactive,password
提供するために認証メカニズムをオーバーライドできます。クライアントが提案を停止すると、キーに基づいて行うことができます。これにより、ログインしてサーバーがより高い値をリセットできるように、パスワードの入力を求められます。