openssh では、ログイン試行ごとに実行されるコマンドを指定できますか?

openssh では、ログイン試行ごとに実行されるコマンドを指定できますか?

SSH ログイン攻撃を頻繁に受けているので、それを減らしたいと思っています。openssh に実行させるコマンドを指定してその戻り値をチェックし、このコマンドが 0 を返す場合にのみログイン試行を許可する方法はありますか?

その理由は、単純なファイルウォール/IP ベースのルールではなく、スクリプトで表現できる、より複雑なログイン ルールを設定できるようにしたいからです。

答え1

はい、十分に新しい openssh には、AuthorizedKeysCommand を使用するというトリックがあります。この構成オプションを使用すると、SSH キーを取得するための外部コマンドを指定できます。ここには、LDAP から SSH キーを取得するなどのロジックを配置できますが、その他の必要なロジックも配置できます。キーベースの認証のみを受け入れる限り、キーを返さないと認証は失敗します。

opensshの古いバージョンではForceCommandを使用できますが、これは強制コマンドです。実行されるコマンドではなく認証前に認証。ただし、パスワードとキーベースの認証の両方で機能します。

パスワード ベースの認証をサポートし、認証フェーズにプラグインする場合は、独自の PAM モジュールを作成し、それを SSH 認証に必須にする必要があります。これは最も簡単な方法ではなく、キー ベースの認証では呼び出されません。

認証失敗が多すぎる IP アドレスをブロックしたいだけの場合は、SSH 設定を変更することなく、fail2ban も役立ちます。

関連情報