web-dev-qa-db-ja.com

OpenSSHでDSAキーによる認証を無効にしますか?

OpenSSH 5.9を使用しているサーバーでDSAおよびECDSA認証を無効にするにはどうすればよいですか?資料を調べてウェブ検索を行っても結果は得られませんでした。Debianパッケージの古いバグレポート here (およびそのバグの下部にリンクされているもの)のみですが、結論はありません。

これら2つのメソッドを/etc/ssh/sshd_config内から無効にできないと仮定すると、これで十分です(Bash構文):for i in /etc/ssh/ssh_Host_{ecdsa,dsa}_key*; do echo -n ""|Sudo tee "$i"; Sudo chattr +i "$i"; done(読みやすくするために改行します):

for i in /etc/ssh/ssh_Host_{ecdsa,dsa}_key*;
do
  echo -n ""|Sudo tee "$i"
  Sudo chattr +i "$i"
done

つまりホストキーを無効にして不変にすることで、sshdからDSAおよびECDSAホストキーを再生成する試みをレンダリングできなくなります。

DSAを無効にしたいのは、アルゴリズムの弱点を積極的に悪用されていると主張する情報源があるためです Wikipedia やthis website など。私はもう少し掘り下げました、そしてそれは信用できるようです。より実用的で理論的ではない利点は、DSAに対するRSAの検証速度です。

TL; DR:は、OpenSSHからsshdconfigureすることが可能ですsshd_configはECDSAおよびDSAを無効にしますか?そうでない場合、ホストキーファイルを不変に設定することにより、これらの方法での認証の成功を防ぐことができますか?

11
0xC0000022L

まず、DSAとECDSAを無効にする理由について異議を申し立てます。

  • どちらも、プレーンなRSAよりも「脆弱」であるという既知の弱点はありません。
  • DSAまたはECDSAの実装が適切に行われていません。ただし、RSAの実装が適切に行われておらず、場合によってはRSAキーの漏洩(例: Bleichenbacherの攻撃 )が発生しました。
  • (EC)DSAには優れたランダム性の新しいソースが必要ですが、(EC)DSA鍵の生成は、RSA鍵の生成よりもはるかに簡単に実行できます。不適切に生成されたRSAキーが表示されます 実際には多く発生します 。この記事には、Arjen Lenstraについての興味深い引用が含まれています(私は、個人的にセキュリティ問題について、他のほとんどすべての人よりもはるかに信頼しています)。

Diffie-HellmanやDSAなどの他の式は、要因の重複により、キーホルダーが対応する証明書を保持する人物に対してのみ脆弱になるため、それほど脆弱ではないと述べた。 「衝突があった場合、影響を与えるのは他の1人だけです。彼らを傷つけたり、傷つけたりする可能性がありますが、誰にもその母親にも公開されていません。」

  • サーバーに高品質のランダム性がない場合は、とにかく運命にあります。

  • performanceに関しては、DSA署名検証は Diffie-Hellman鍵交換 と同じくらい高価ではありません。これは各接続の開始時にとにかく行われます。ここでは、基本的なPCで約1ミリ秒について話しています。遅いことで有罪となる暗号アルゴリズムを宣言する前に、実際の手段を作成することをお勧めします。また、ECDSAは通常DSAよりも10倍高速です。

そうは言っても、SSHサーバーで(EC)DSAサポートを非アクティブ化することに真剣に取り組んでいる場合は、DSAを非アクティブ化した後に OpenSSH (特定のOSにパッケージされているバージョンのソースから開始)を再コンパイルすることをお勧めします。その中のECDSA(_key.c_、関数key_verify()を探します):(EC)DSA検証が常に失敗し、(EC)DSAベースの認証を受け入れないように修正するだけで十分です。 )。

(非対称アルゴリズムのサポートを選択的に非アクティブ化するオプションはないようです。サーバーがDSAキーを持っている場合、サーバーは暗黙的にDSAを許可していると見なされます。これは何らかの意味で意味があります。クライアント認証に関しては、SSHモデルでは、それぞれのuserが決定を下し、ユーザーは自分のRSA/DSA/ECDSA公開鍵を_.ssh/authorized_keys_に含めるか含めないかを決定します。これは、結局のところ、ユーザー教育)

13
Thomas Pornin

EDIT:dave_thompson_085のコメントに示されているように、このソリューションはOpenSSHリリース7.0以降を必要とし、元の投稿者の要求どおりにOpenSSH 5.9では機能しません。同じ目標を持つOpenSSH 7.0以降のユーザー向けのリファレンスとして残しました。


現在のOpenBSD sshd_config(5)のマニュアルページに従って、HostKeyAlgorithmsから除外することにより、DSA/ECDSAの使用を制限することが可能です。

http://man.openbsd.org/OpenBSD-6.1/sshd_config.5

HostKeyセクションで:

Sshd(8)は、グループまたは世界からアクセス可能なファイルの使用を拒否し、HostKeyAlgorithmsオプションは、sshd(8)が実際に使用するキーを制限することに注意してください。

したがって、他のアルゴリズムを指定することで(「ssh -Qキー」を使用してリストを取得できます)、その使用を排除できます。例えば。

HostKeyAlgorithms [email protected],[email protected],ssh-ed25519,ssh-rsa

上記の引用がすべての古いバージョンのmanページにあるわけではないので、これはあなたのバージョンでは動作しない可能性があることに注意してください。

7
DougC