Skip to main content

Ubuntu20.04のOpenSSHを8.2p1から9.6.1pにアップグレード。

概要

こちらの記事で、Ubuntu 20.04のOpensslを1.1.1から3.1.1にバージョンアップしました。

しかし、

ssh -V

とすると、

OpenSSH_8.2p1 Ubuntu-4ubuntu0.9, OpenSSL 1.1.1f  31 Mar 2020

OpenSSHが参照しているSSLが前のままです。また、OpenSSHの脆弱性情報もあるのでセキュリティ上よろしくありません。

そこで、

  • OpenSSHを最新版にする
  • そのとき、参照するOpenSSLも現状に合わせる

作業を行いました。

参考にしたURL:

環境

  • Ubuntu 20.04
  • 上記自サイトに則って、OpenSSLを3.1.1にアップデート済み

さっくりとした手順

  1. コンフィグに必要なディレクトリの作成を行います。
  2. インストールに必要なパッケージをインストールします。
  3. 作業用ディレクトリに移動します。
  4. ソースをダウンロードします。
  5. OpenSSHをソースからビルドします。
  6. バージョンアップを確認します。

最初に

本件はSSHを扱います。念のため、サーバへのターミナルクライアントを別ウィンドウで開いておいてください。

  • 現行のバージョン確認
ssh -V
OpenSSH_8.2p1 Ubuntu-4ubuntu0.9, OpenSSL 1.1.1f  31 Mar 2020

必要なパッケージのインストール

sudo aptitude install build-essential zlib1g-dev libssl-dev libpam0g-dev libselinux1-dev libkrb5-dev

ディレクトリ作成と設定

sudo mkdir /var/lib/sshd && sudo chmod -R 700 /var/lib/sshd/ && sudo chown -R root:sys /var/lib/sshd/

作業用ディレクトリ移動

cd /hoge && pwd

任意のディレクトリを指定します。

ソースのダウンロードと展開

  • ソース取得
wget -c http://mirror.exonetric.net/pub/OpenBSD/OpenSSH/portable/openssh-9.6p1.tar.gz

2023/12/20現在の最新版を指定しています。

  • ソース展開
tar -xzf openssh-9.6p1.tar.gz
  • ディレクトリ移動
cd openssh-9.6p1

コンフィグ

  • OpenSSLの位置を確認
which openssl
  • 結果確認
/usr/local/ssl/bin/openssl

筆者の環境です。

  • コンフィグ
./configure --with-kerberos5 --with-md5-passwords --with-pam --with-selinux --with-privsep-path=/var/lib/sshd/ --sysconfdir=/etc/ssh --with-ssl-dir=/usr/local/ssl

--with-ssl-dir=/usr/local/sslは、opensslがあるディレクトリを指定します。

  • make
make
  • インストール
sudo make install

バージョンアップ確認

  • バージョン確認
ssh -V
OpenSSH_9.6p1, OpenSSL 3.1.1

バージョンアップされていることを確認します。

  • SSHサービス再起動
sudo systemctl restart ssh.service
  • サービス再起動確認
sudo systemctl status ssh.service

active(running)を確認します

この後、バージョンアップを行ったサーバにSSH接続できれば、作業は完了です。

自動アップグレード無効

強制的に9.6系に上げるので、その後、8.xがアップグレードされる可能性を防ぎます。

#
  • apt を使用する場合
sudo apt-mark hold openssh-server
#
  • aptitude を使用する場合
sudo aptitude hold openssh-server