私は OpenBSD 6.9 サーバーで次のことを実現しようとしています:
ssh-ed25519
両方のキー以外のすべてのキーの使用を禁止するサーバそしてクライアント側面。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 -A
init スクリプトからその行を削除するか、カスタム キー生成アルゴリズムに置き換えることもできますが、そうするとすべてが始まった場所に戻ってしまいます。つまり、システムの更新後や OpenBSD チームが の新しいバージョンをリリースするたびに、この問題に何度も対処しなければならなくなります。その/etc/rc
行の削除を自動化し、多数のサーバーでこのようなずさんな回避策をテストするのは困難であり、何か問題が発生した場合に大規模なネットワーク障害につながる可能性があります。
そこで、私は調査を続け、 のソース コードを詳しく調べましたssh-keygen
。 スイッチの動作を外部から (たとえば設定ファイル経由で) 制限することはできないことがわかりました-A
。 キーが承認されているかどうかの予備テストすら実行されず、ハードコードされた配列のアルゴリズムのリストに従ってキーが生成されるだけです。 これを回避する唯一の方法は、 のカスタム フォークを編集、再コンパイル、および使用することですssh-keygen
が、そうすると OpenSSH の更新ごとに対処しなければならなくなります...
他のオペレーティング システムでは部分的な解決策を見つけましたが、OpenBSD では見つかりませんでした。
誰か適切な解決策を教えてもらえますか? なぜ私のキー制限sshd_config
とssh_config
キー制限が無視されるのか、また禁止されたアルゴリズムでキーの生成を停止するにはどうすればいいのでしょうかssh-keygen -A
?
誰かが尋ねる前に: 他のすべての設定は OpenSSH によって両方の設定ファイルで利用されるため、実際に読み込まれるのはこれらの設定ファイルです。
役に立つ回答をありがとうございました。