LinuxマシンでMaxAuthTries
を1に設定しました。次に、ローカルネットワーク上の別のマシンからLinuxマシンにssh
を挿入しようとしましたが、「Too many authentication failures
"。
これは、セットアップ中に障害が発生したことが原因であると想定しています。
man
ページには次のように書かれています。
MaxAuthTries
接続ごとに許可される認証試行の最大数を指定します。失敗の数がこの値の半分に達すると、追加の失敗がログに記録されます。デフォルトは6です。
接続とは何ですか?これは、特定のIPアドレスからのみMaxAuthTries
を取得することを意味しますか?これはTCP接続を参照していますか?新しい接続を作成してssh
を再試行できるように、接続を強制終了するにはどうすればよいですか?
SSHの場合、接続はsshd
のTCPポート(通常はポート22)への確立された接続の1つです。Omcesshd
は、それ以上の認証試行の受け入れを停止します接続を閉じ、この時点で接続が行われます。
ユーザーが認証を試みる前に、SSHプロトコルは暗号化と他のプロトコルオプションのネゴシエーション、セッションキーの確立、およびホストキーの交換を必要とします。そのため、新しい接続ごとにかなりの作業が必要になります。複数のソースからのSSH接続試行の嵐がサーバーのDoSに確実に使用される可能性があります。
認証の試行は、sshd
構成で現在有効になっている認証方法の1つの試行です。例えば:
最初の2つは、発生している状況を引き起こす可能性があります。MaxAuthTries
を1に設定し、Kerberos/GSSAPI認証が有効になっている場合、パスワード認証を試行する前に、1回の試行が失敗する可能性があります。同様に、SSHクライアントで利用可能な認証キーがあっても、宛先システムの宛先ユーザーの~/.ssh/authorized_keys
に公開キーを追加していない場合、公開キー認証の試行は1回の試行で失敗し、 tパスワード認証を試すこともできます。
通常はパスワード認証を処理するPAMライブラリであるpam_unix
は、デフォルトでは認証試行の失敗後2秒の遅延を強制します。
主な脅威が、インターネット内の他の危険にさらされたシステム上のパスワードを推測するワームとボットである場合、MaxAuthTriesを減らすのは悪いことかもしれません。ボットは疲れないので、常に再接続して再試行します。試行するたびに、SSHプロトコルネゴシエーションにCPU容量を費やす必要があります。まず、ボットが成功しないであることを確認し、次にボットが可能な限り多くの時間を浪費するで、既存の1つの接続であなたへの最低費用。 1つの接続で複数の認証試行を許可しますが、応答します...非常に...ゆっくりと...それはまさにそれを行います。
これが、パスワード認証が完全に無効になっている場合でも、sshd
がクライアントにパスワードを要求する理由でもあります。プロンプトは完全に偽造されており、どのパスワードを入力してもクライアントは拒否されます。しかし、クライアントは確実にそれを知る方法がありません。
もちろん、1つの接続で認証の試行回数が多すぎると、ボットプログラマーがタイムアウトを実装してそのような「タールピット防御」の有効性を制限した場合、ボットは最終的にその側から接続を終了する可能性があります。
広義には、接続とは、特定のユーザーとして接続しようとする試みのことです。
pam_tally
またはpam_tally2
コマンドは、使用しているディストリビューションに応じて、ここで役立ちます。次のコマンドは、特定のユーザーに対して発生した失敗の数を示します。
pam_tally --user=username
特定のユーザー用にリセットするには:
pam_tally --reset
すべてのユーザー向け:
pam_tally --reset user=username
リセットされたことを確認するには:
pam_tally --username=user
コマンドpam_tally
またはpam_tally2
をオプションなしで実行すると、試行が失敗したかロックアウトされているすべてのユーザーが表示されます。持っている場合は、必ずpam_tally2
に変更してください。
これは少し水晶玉の注視ですが、接続はそれとまったく同じです。クライアントで接続の多重化と残留(ControlMaster
、ControlPersist
)に関するオプションを明示的に設定しない限り、接続はすぐに終了します。
私が推測していること(そしてssh -v
は検証に役立ちます。「秘密鍵を試す」に注意してください)は、そのマシンに対してパスワードベースの認証を使用したいということです。ただし、クライアントのパスワードなしの認証用のキーペアは~/.ssh
にある可能性があります。標準の設定では、パスワードよりもキーが優先されるため、ssh
はキーを提供し、サーバーはそれを好まないため、許可されていない場合は失敗します。 (テーマのバリエーション:複数の鍵ペアがセットアップされていて、そのうちの1つだけがサーバーで許可されている場合があります。)-oPreferredAuthentications=keyboard-interactive,password
を使用して、提供する認証メカニズムをオーバーライドできます。ベースでは、パスワードプロンプトを使用して、ログインしてサーバーの値をより高く設定できるようにする必要があります。