はじめに
RHEL8からssh等で使える暗号化ポリシーがサービス個別ではなくシステム全体で設定するようになりました。RHEL8はRHEL7から大きく暗号化ポリシーは変更されていないので気付かないまま使っている人もいると思いますが、RHEL9サーバに古いOSからsshしようとして、no hostkey alg となり接続できない!という現象が出て調べて初めて理解する人も居るかもしれません。
RHEL8/9には標準で幾つかの定義済みポリシーが用意されています。
DEFULT | ディフォルトの暗号化ポリシーレベルで、基本的にはDEFULTにしておけば現状の脅威に対しては安全と言える設定です。 |
LEGACY | RHEL6以前と互換性のあるレベルですが、その分安全性が下がる事になります。 |
FUTURE | 近い将来の攻撃にも耐えられるであろうセキュリティレベルです。 |
FIPS | FIPS140-2要件に準拠するポリシールールです。 |
同じDEFULTでもRHEL8と9ではポリシーが異なりますので注意が必要です。特にRHEL9ではSHA-1アルゴリズムはDEFULTで制限されるようになりました。
ポリシーの確認と設定
現在のポリシーは以下のコマンドで確認する事ができます。
# update-crypto-policies --show
DEFULT
設定をLEGACYにするには
# update-crypto-policies --set LEGACY
Setting system policy to LEGACY
Note: System-wide crypto policies are applied on application start-up.
It is recommended to restart the system for the change of policies
to fully take place.
# update-crypto-policies --show
LEGACY
RHEL6からの接続エラー
RHEL6からsshしようとすると "no hostkey alg" となって接続できない場合は、LEGACYにすれば接続は出来ますが、全体的に暗号化レベルが落ちるのは好ましくありません。出来るだけ最低限のポリシーを許可したい場合は、SHA1だけを有効にする事ができます。
# update-crypto-policies --set DEFAULT:SHA1
# update-crypto-policies --show
DEFAULT:SHA1
但し、セキュリティレベルが弱くなる事は確かですので、古いシステムは早急に停止すべきでしょう。
最後に
以前は/etc/ssh/sshd_configに必要なアルゴリズム等を記述できましたが、RHEL8からは記述しても有効にならないので注意が必要です。また、システムで用意されているポリシー以外を設定したい場合は、自分でポリシーを作成する事もできます。システムが用意しているポリシー内容については、/usr/share/crypto-policies/policies/ 以下にポリシーファイルが用意されていますので、そちらを参考にしてください。