Harada's Diary

CentOSのOpenSSHを最新版(7.1p1)にアップグレードしてみた。

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 鍵が使用できます。