[ITPASS2017]2017年度サーバアップグレードログ(tako)

tako-itpass のサーバアップグレード作業ログ

経緯

  • 対外公開サーバ情報セキュリティチェック監査結果より, tako-itpass に, 重要度 4 以上の潜在的脆弱性が 3 件発見
    • うち 2 件は OpenSSH のバージョンが古いことが原因
    • OS のアップグレードを行うことで対処することになった

作業概要

  • jessie から stretch へ tako-itpass の OS をアップグレード
  • 荻原さん(北大)のアップグレード作業ログに従って作業
  • 作業日
    • 2018/03/08
  • 作業者
    • 高橋, 塩尻

作業ログ

事前準備

  • ネットワークでつないでいる場合, 途中でネットワークが切れても大丈夫なように screen を用いた
# screen

バックアップ

  • 以下をバックアップした
    • /etc
    • /var/lib/dpkg
    • /var/lib/apt/extended_states
    • dpkg --get-selections "*"
# rsync -av /etc ./
# rsync -av /var/lib/dpkg ./
# rsync -av /var/lib/apt/extended_states ./
# dpkg --get-selections "*" >> dpkg_selections

アップデート

  • パッケージをアップデートした
# apt-get update
# apt-get upgrade

パッケージの確認

PIN 確認

  • APT の pin 機能で固定しているかどうか確認
    • ファイルがなければ良い
$ ls -a /etc/apt/preferences.d/
  • ファイルはなかった

ホールドしたパッケージの確認

# dpkg --get-selections | grep 'hold$'
  • 確認したところ exim4 関連が残っていた
    • 2014 年度マニュアルに従い, 残したまま作業続行

パッケージの残骸調査

  • 下記コマンドを実行
    • 何も出力されなければ良い
# dpkg -l | awk '/^rc/ { print $2 }'
  • 実行した結果, 出力があった
apache2-bin
avahi-daemon
gnome-bluetooth
gnome-nettool
libapache2-mod-dnssd
libapr1:amd64
libaprutil1:amd64
libavahi-core7:amd64
libbind9-90
libdaemon0:amd64
libdns100
libgeoip1:amd64
libisc95
libisccc90
libisccfg90
liblinear1:amd64
liblwres90
libnfsidmap2:amd64
libnss-mdns:amd64
mythes-en-us
nfs-common
  • 出力されたので以下のコマンドで削除
# apt-get purge $(dpkg -l | awk '/^rc/ { print $2 }')

必要なくなったパッケージの削除

# apt-get autoremove
# apt-get autoclean

アップグレード

sources.list の書き換え

  • /etc/apt/sources.list 内の jessie の記述を stretch へ変更
# vim /etc/apt/sources.list

アップグレード

# apt-get update
# apt-get upgrade
# apt-get dist-upgrade
  • dist-upgrade で fail2ban に関するエラーによりアップグレードが失敗した
    • エラーメッセージに従い原因を探した
# systemctl status fail2ban.service
  • /etc/fail2ban/jail.conf が問題であることが分かった
    • ika-itpass にある同じファイルで置き換えて試した
      • 成功した

再起動

# reboot

お掃除

# apt-get purge $(dpkg -l | awk '/^rc/ { print $2 }')
# apt-get autoremove
# apt-get autoclean

再起動後コンソールログイン(CUIログイン)ができるか確認

  • ログインできたので以下の作業は行わなかった
  • ログインできない場合には以下の作業を行う
    • 参考
    • lightdm というディスプレイマネージャーを止める
# systemctl list-unit-files
# systemctl disable lightdm.service
# reboot 

OpenSSH のバージョン確認

$ ssh -V

rsync 失敗への対処

[ITPASS2017]rsync エラーへの対処 に記述