CentOS6系のOpenSSHは5.3p1となっています。
# cat /etc/redhat-release CentOS release 6.9 (Final) # ssh -V OpenSSH_5.3p1, OpenSSL 1.0.1e-fips 11 Feb 2013 このバージョンはパッチが当てられていて安全に使用できるのですが
脆弱性が多いと噂があり、CentOSのOpenSSHはECDSAの鍵認証を受け付けず、
サポートも対象外なのでいっその事OpenSSHの最新版(7.1p1)へとアップグレードしてみました。
■ 環境
- 使用OS:CentOS 6.9
- シリアルコンソール or telnet で sshd 再起動できること
conoha のVPSは管理画面からシリアルコンソールが開けるのでOK。
※作業中SSHが切断するので注意。
■ 1. 必要なパッケージをインストール
yum groupinstall -y "Base" "Development tools" yum install -y openssl-devel krb5-devel pam-devel tcp_wrappers-devel ■ 2. OpenSSHのソースを取得して展開
cd wget http://ftp.jaist.ac.jp/pub/OpenBSD/OpenSSH/portable/openssh-7.1p1.tar.gz tar xzvf openssh-7.1p1.tar.gz ■ 3. SPECファイルを書き換え
RPM ビルド用SPECにある以下2箇所を 0 → 1 に変更
%define no_x11_askpass 1 %define no_gnome_askpass 1 ■ 4. 不要ディレクトリ削除 → configure
cd openssh-7.1p1/contrib rm -rf aix/ solaris/ suse/ hpux/ cygwin/ cd .. ./configure --without-zlib-version-check ■ 5. RPMをビルドする
cd .. tar czvf openssh-7.1p1.cust.tar.gz openssh-7.1p1/ rm -rf openssh-7.1p1 rpmbuild --tb --clean openssh-7.1p1.cust.tar.gz ビルド後 /root/rpmbuild/RPMS/x86_64/ に以下が生成される:
openssh-7.1p1-1.x86_64.rpm openssh-clients-7.1p1-1.x86_64.rpm openssh-server-7.1p1-1.x86_64.rpm openssh-debuginfo-7.1p1-1.x86_64.rpm ■ 6. 旧バージョン削除 → 新バージョン導入
yum remove openssh rpm -Uvh /root/rpmbuild/RPMS/x86_64/openssh-7.1p1-1.x86_64.rpm rpm -Uvh /root/rpmbuild/RPMS/x86_64/openssh-server-7.1p1-1.x86_64.rpm rpm -Uvh /root/rpmbuild/RPMS/x86_64/openssh-clients-7.1p1-1.x86_64.rpm rpm -Uvh /root/rpmbuild/RPMS/x86_64/openssh-debuginfo-7.1p1-1.x86_64.rpm ※ yum remove 時に git 等が巻き添え削除されるので注意。
■ 7. sshdの設定復元
旧設定が消えているため必要に応じて /etc/ssh/sshd_config を再設定。
■ 8. sshd再起動
これは SSH以外の経路 で実施推奨:
/etc/init.d/sshd restart ■ 9. 動作確認
ssh -V → OpenSSH_7.1p1 ■ 10. 巻き添え削除パッケージを再インストール(任意)
yum install -y git perl-Git systemtap systemtap-client ■ おしまい
これで ECDSA 鍵が使用できます。