ConoHa VPS: OpenBSD を最新版へアップグレードする方法

nabbisen - Jun 4 '20 - - Dev Community

Summary

OpenBSD は OS の一種で、Unix ファミリーに属します。セキュリティに重点を置いていることで有名です。
公式ホームページでは、取組みについて "Our efforts emphasize portability, standardization, correctness, proactive security and integrated cryptography."(私たちは次のものの達成に重きを置いて努力を続けている: OS やソフトウェアの携帯性 / 標準化 / 設計の正しさ / 先制的なセキュリティ / 完全な暗号化)と説明されています。
OpenBSD プロジェクトは、ドキュメンテーションの最新化とクリーンなライセンス下でのオープンソース・ソフトウェアの開発にも力を入れています。さらにプロジェクト・マネジメントの観点では、OS を約半年に一度の周期で定期的にリリースすることを、25 年間にわたって達成しています。(バージョン 1.2 から先月にリリースされた現在最新の 6.7 までをカウントしました。)

日本にデータセンター(リージョン)のある VPS ホスティングサービスを活用して 最新版の OpenBSD サーバーを構築することが、本記事のテーマです。
大きく 2 通りの方法があります:

(a) 標準で OpenBSD イメージが提供されているサービスを利用する
(b) カスタムイメージをもとにサーバーを構築できるサービスを利用する

前者はサービスサプライヤーの方針次第なので選択肢に限りがあります。ConoHa VPS / CloudSigma / Vultr などが該当します。
後者は、前者と比較して最初にイメージを準備する手間が掛かりますが、一度構築してしまうとその後は同じように使えます。Google Compute Engine / さくらの VPS / Amazon EC2 / Linode などが該当します。こちらの syuu1228 さんの記事に、さくらの VPS で Ubuntu 標準イメージから OpenBSD をインストールする方法が書かれています。(2010 年に... すごいお方やと思います。)
日本のロケーションという制約が無い場合は DigitalOceanOpenBSD AmsterdamLunaNodeRamNode なども候補にできます。

今回はプランを比較した上で、ConoHa を使うことにしました。ディスクのベースラインが SSD 100GB と大きめで、且つ、データ転送量が無制限だからです。CPU や RAM 、ストレージの種類やサイズ等をこまかくカスタマイズする用途であれば CloudSigma が良いかもしれません。

2020-06-04 現在、ConoHa で提供されている OpenBSD イメージのバージョンは 6.6 です。一方、先月 2020-05-19 に 6.7 がリリースされました。最新は 6.7 です。
ありがたいことに 6.6 以降の OpenBSD には sysupgrade があるので、OS バージョンのアップグレードは複雑な手順抜きで行なえます。

sysupgrade を使用して OpenBSD をアップグレードする手順は以下の通りです。

アップグレード手順

  1. サーバー構築
  2. アップグレード前準備
  3. sysupgrade を実行
  4. syspatch + pkg_add -u を実行
  5. 最終処理: root パスワード更新, ユーザー追加, etc.

ConoHa VPS 以外でも、VNC 接続 もしくは SSH 接続が可能な環境であれば、同じように行えます。


Tutorial

1. サーバー構築 (アップグレード手順 へ戻る)

Web ブラウザを使用します。
ConoHa VPS のアカウント登録を行います。
そしてコントロールパネルへアクセスします。
「サーバー追加」を押します。

image

「OpenBSD」を選択します。
root パスワードを指定します。のちほど使用します。
「追加」を押します。

image

作成したサーバーのネームタグリンクをクリックします。

image

(ここからの操作は VNC「コンソール」接続の代わりに SSH を用いても実行可能です。)
「コンソール」を押下します。

image

VNC コンソールが立ち上がります。
先ほど設定したパスワードを使用して root としてログインします。

image

2. アップグレード前準備 (アップグレード手順 へ戻る)

OpenBSD プロジェクトは、リリースごとに、公式のアップグレードガイドを公開してくれています。(ありがとうございます。)
6.6 -> 6.7 のガイドはこちらです。この中から必要な操作をピックアップして実行します。今回のバージョンでは、アップグレード後は不要になるファイルの削除が該当します。

不要になるファイルの削除を行います:



# rm -rf /usr/libdata/perl5/*/Storable \
       /usr/libdata/perl5/*/arybase.pm \
       /usr/libdata/perl5/*/auto/arybase \
       /usr/libdata/perl5/B/Debug.pm \
       /usr/libdata/perl5/Locale/{Codes,Country,Currency,Language,Script}* \
       /usr/libdata/perl5/Math/BigInt/CalcEmu.pm \
       /usr/libdata/perl5/unicore/To/_PerlWB.pl \
       /usr/libdata/perl5/unicore/lib/GCB/EB.pl \
       /usr/libdata/perl5/unicore/lib/GCB/GAZ.pl \
       /usr/share/man/man3p/B::Debug.3p \
       /usr/share/man/man3p/Locale::{Codes*,Country,Currency,Language,Script}.3p \
       /usr/share/man/man3p/Math::BigInt::CalcEmu.3p \
       /usr/share/man/man3p/arybase.3p

# rm -f /usr/sbin/{dig,host,nslookup}


Enter fullscreen mode Exit fullscreen mode

ConoHa がコンソールに実装してくれている「テキスト送信」機能を使うと、一連のコマンドを一気に実行できて便利です。
SSH で接続していると、このあたりは楽かもしれません。

image

これで準備完了です。

3. sysupgrade を実行する (アップグレード手順 へ戻る)

一行ぽちっと実行するだけです。



# sysupgrade


Enter fullscreen mode Exit fullscreen mode

image

最新 OS の取得とファイルと設定の更新、さらには OS の再起動まで自動で行ってくれます。

image

4. syspatch + pkg_add -u を実行する (アップグレード手順 へ戻る)

sysupgrade が完了すると、ふたたびログインが表示されます。
コンソールには OpenBSD "6.7" と表示されます。気分が少し上がります。笑
syspatch 対象がある場合は、標準出力で "Checking for available binary patches..." の下に表示して教えてくれます。下のイメージでは 001 から 007 の対象が表示されています。

image

syspacth と、あわせて pkg_add -u でパッケージの最新化も行っておくと良いでしょう。

同じく一行ぽちっと実行するだけです。



# syspatch && pkg_add -u


Enter fullscreen mode Exit fullscreen mode

OS に対するバイナリパッチの適用と、パッケージの最新化が行われます。

image

余談ですがこの時に、syspatch の途中で 503 エラーが出て再実行が必要になりました。別の機会に同じ手順を行った際には、エラーは何も出ず無事に完了しました。ネットワークが不調だったのか OS のご機嫌が悪かったのか何なのか... 再現性が無く、原因はわかっておりません。また pkg_add -u で旧パッケージの削除に失敗しました。/usr/local/lib/python3.6 の中に test が残っていることが原因のようでした。手動で python3.6 ディレクトリをまるごと削除しました。こちらは再現性がありました。

reboot で OS の再起動を行います。syspatch の内容によっては不要な場合もありますが、念のためです。

image

これで OS のアップグレードと、その後のシステムパッチの適用およびパッケージの最新化が完了しました。

image

ここからは root でログインして通常通りサーバーを使用できます。

最終処理のために、SSH 接続に切り替える準備をしましょう。
/etc/ssh/sshd_config で root のリモートアクセスを許可する("PermitRootLogin")か、もしくは adduser で SSH アクセス用ユーザー作成を行います。後者の場合、そのユーザーに対して /etc/doas.conf も設定しておきましょう。
SSH 接続の準備が完了すれば、Web ブラウザの VNC コンソールは閉じても大丈夫です。
ここから先の操作は IP アドレスをもとに SSH 接続を行った上で行います。

5. 最終処理 (アップグレード手順 へ戻る)

root のパスワード変更を passwd で行ったり、adduseruseradd でユーザーの追加を行ったりと、サーバー運用の上で必要なことを行います。
パッケージ の取得先が近いところのサーバーなのかが気になるのでしたら installurl を確認しておくのも良いかもしれません。


お読みいただきありがとうございました。
Enjoy OBSD 😃

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .