事象
CVE-2024-6387の対応のため、個人開発サービスを運用していてインターネットに露出しているサーバのopenssh-serverをアップデートしていた。
Google CloudのCompute Engineで立てているあるサーバのopenssh-serverをapt upgradeでアップデートしたところ、以後sshで接続することができなくなってしまった。
原因
当該サーバではSSHのポート番号を22とは異なるものに設定していた。また、Cloud Firewallではtcp 22のインバウンド通信を不許可としており、SSHの代替ポートについて許可するルールとしていた。
apt upgrade時にsshd_configを更新しますがよろしいですかという確認が表示されていて、何も考えずにYを押してしまったところ、sshd_configが書き換えられた。
Configuration file '/etc/ssh/sshd_config'
==> Modified (by you or by a script) since installation.
==> Package distributor has shipped an updated version.
What would you like to do about it ? Your options are:
Y or I : install the package maintainer's version
N or O : keep your currently-installed version
D : show the differences between the versions
Z : start a shell to examine the situation
The default action is to keep your current version.
*** sshd_config (Y/I/N/O/D/Z) [default=N] ?
その結果、待ち受けポートを標準から変えていた設定がロールバックしてしまい、22番ポートでlistenするようになった。22番はFirewallでブロックしていたため、再接続できなくなってしまった。
影響
サーバの管理者である私がsshを経由して当該サーバにアクセスすることが不可能になった。個人開発サービスの可用性に影響はない。
対応
Firewallの設定を変更し、一時的に22番ポートのインバウンド通信を許可した。その結果22番ポート経由でsshで当該サーバに接続することができた。
sshd_configファイルを元の状態に書き換え、代替ポートで接続できることを確認した。
再発防止策
- sshdをアップデートしたあと、そのセッションを閉じないまま別に接続してみて、これまでと変わらずに接続できることを確認する
- sshdをアップデートしても、既存の接続は古いプロセスを使用し続ける
- 設定ファイルを書き換えるようなメッセージが表示された場合にはノールックでYを押さずに差分を確認する