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

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