OpenBSD で特定の OpenSSH キーを無効にする: 対応する「sshd_config」エントリが無視され、「ssh-keygen -A」が禁止キーを生成するのはなぜですか?

OpenBSD で特定の OpenSSH キーを無効にする: 対応する「sshd_config」エントリが無視され、「ssh-keygen -A」が禁止キーを生成するのはなぜですか?

私は OpenBSD 6.9 サーバーで次のことを実現しようとしています:

  1. ssh-ed25519両方のキー以外のすべてのキーの使用を禁止するサーバそしてクライアント側面。
  2. ssh-keygen -A許可されたアルゴリズムによってのみキーを生成するように制限しssh-ed25519、他の方法では生成しません。

これらを実現するために、私は次の行を に追加しましたsshd_config:

HostKey /etc/ssh/ssh_host_ed25519_key
CASignatureAlgorithms ssh-ed25519
HostbasedAcceptedKeyTypes ssh-ed25519
HostKeyAlgorithms ssh-ed25519
PubkeyAcceptedKeyTypes ssh-ed25519

私はまた、次の行を追加しましたssh_config:

CASignatureAlgorithms ssh-ed25519
HostbasedAcceptedKeyTypes ssh-ed25519
HostKeyAlgorithms ssh-ed25519
PubkeyAcceptedKeyTypes ssh-ed25519

承認されたキー以外のすべてのキーを削除しました。

sshdを再起動しました:

# rcctl restart sshd                                                                            
sshd(ok)
sshd(ok)

次のコマンドを実行して、設定が使用されているかどうかを確認します。

# ssh -Q HostbasedAcceptedAlgorithms
# ssh -Q HostKeyAlgorithms
# ssh -Q PubkeyAcceptedAlgorithms

驚いたことに、彼ら全員が次のような返答を返してきました。

ssh-ed25519
[email protected]
[email protected]
[email protected]
ssh-rsa
rsa-sha2-256
rsa-sha2-512
ssh-dss
ecdsa-sha2-nistp256
ecdsa-sha2-nistp384
ecdsa-sha2-nistp521
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]

つまり、キー制限は無視されます。

念のためサーバーを再起動しましたが、違いはありませんでした。

回避策としては、承認されたキーファイル以外のすべてのキーファイルを削除することが考えられます。ただし、init スクリプトには、システムの再起動のたびに sshd デーモンが起動する前に、不足しているすべての ssh キーを再生成する/etc/rc行があります。ssh-keygen -A禁止されているアルゴリズムを含む

したがって、キーを削除しても問題は解決しません。

追加の回避策として、ssh-keygen -Ainit スクリプトからその行を削除するか、カスタム キー生成アルゴリズムに置き換えることもできますが、そうするとすべてが始まった場所に戻ってしまいます。つまり、システムの更新後や OpenBSD チームが の新しいバージョンをリリースするたびに、この問題に何度も対処しなければならなくなります。その/etc/rc行の削除を自動化し、多数のサーバーでこのようなずさんな回避策をテストするのは困難であり、何か問題が発生した場合に大規模なネットワーク障害につながる可能性があります。

そこで、私は調査を続け、 のソース コードを詳しく調べましたssh-keygen。 スイッチの動作を外部から (たとえば設定ファイル経由で) 制限することはできないことがわかりました-A。 キーが承認されているかどうかの予備テストすら実行されず、ハードコードされた配列のアルゴリズムのリストに従ってキーが生成されるだけです。 これを回避する唯一の方法は、 のカスタム フォークを編集、再コンパイル、および使用することですssh-keygenが、そうすると OpenSSH の更新ごとに対処しなければならなくなります...

他のオペレーティング システムでは部分的な解決策を見つけましたが、OpenBSD では見つかりませんでした。

誰か適切な解決策を教えてもらえますか? なぜ私のキー制限sshd_configssh_configキー制限が無視されるのか、また禁止されたアルゴリズムでキーの生成を停止するにはどうすればいいのでしょうかssh-keygen -A?

誰かが尋ねる前に: 他のすべての設定は OpenSSH によって両方の設定ファイルで利用されるため、実際に読み込まれるのはこれらの設定ファイルです。

役に立つ回答をありがとうございました。

関連情報