Ubuntu 19.10 Eoan Ermine でのセキュリティアップデート方法

## 概要

- Ubuntu Linux サーバの日々の定常作業として実施するべき apt upgrade 作業手順をまとめる
- 通常のパッケージ更新と Linux カーネルのパッケージ更新の2パターン

## セキュリティ更新の情報源

セキュリティ通知サイト (購読用 RSS と Atom もある): 
[Ubuntu security notices](https://usn.ubuntu.com/)

セキュリティ通知のメーリングリスト
[ubuntu\-security\-announce Info Page](https://lists.ubuntu.com/mailman/listinfo/ubuntu-security-announce)

## 通常のセキュリティアップデート

### 実施コマンド概要

```
$ sudo apt update
$ sudo apt upgrade -s
$ sudo apt upgrade
$ sudo checkrestart
```

### apt update

[Ubuntu Manpage: apt \- コマンドラインインターフェイス](http://manpages.ubuntu.com/manpages/eoan/ja/man8/apt.8.html)

> update は、設定されたすべての取得元からパッケージ情報をダウンロードするために使用されます。

### apt upgrade

[Ubuntu Manpage: apt \- コマンドラインインターフェイス](http://manpages.ubuntu.com/manpages/eoan/ja/man8/apt.8.html)

> upgrade は、sources.list(5) で設定された取得元からシステムに現在インストール済みのすべてのパッケージで利用可能なアップグレードをインストールするために使用されます。

apt upgrade に -s オプションを付けるとパッケージ更新の予行演習 (シミュレート) ができる。

[Ubuntu Manpage: apt\-get \- APT パッケージ操作ユーティリティ \-\- コマンドラインインターフェース](http://manpages.ubuntu.com/manpages/eoan/ja/man8/apt-get.8.html)

> -s, --simulate, --just-print, --dry-run, --recon, --no-act
> 何もしない - 現在のシステム状態に基づいて起こるイベントのシミュレーションを行い、実際にはシステムを変更しません。

### checkrestart

checkrestart コマンドは debian-goodies パッケージをインストールすると使えるようになる。

```
$ sudo apt install debian-goodies
```

checkrestart コマンドを使うとパッケージの更新に従って再起動する必要があるサービスやプロセスがわかる。

```
$ sudo checkrestart -a
Found 17 processes using old versions of upgraded files
(11 distinct programs)
(3 distinct packages)

Of these, 1 seem to contain systemd service definitions or init scripts which can be used to restart them.
The following packages seem to have definitions that could be used
to restart their services:
apache2-bin:
	4483	/usr/sbin/apache2
	15041	/usr/sbin/apache2
	15048	/usr/sbin/apache2
	15049	/usr/sbin/apache2
These are the initd scripts:
service apache2 restart

These processes (2) do not seem to have an associated init script to restart them:
openjdk-11-jre-headless:amd64:
	493	/usr/lib/jvm/java-11-openjdk-amd64/bin/java
	897	/usr/lib/jvm/java-11-openjdk-amd64/bin/java
mariadb-server-core-10.3:
	691	/usr/sbin/mysqld
```

## Linux カーネルのアップデート

### 実施コマンド概要

Linux カーネル (linux-image-* パッケージ) は Ubuntu を再起動しないと反映されないので、 reboot や shutdown -r コマンドで再起動する必要がある。

```
$ sudo apt update
$ sudo apt upgrade -s
$ sudo apt upgrade
$ sudo reboot
```

### カーネル更新例

更新前。パッケージとカーネルのバージョンを確認。

```
$ dpkg -l | grep linux-image
rc  linux-image-5.3.0-26-generic   5.3.0-26.28   amd64   Signed kernel image generic
ii  linux-image-5.3.0-29-generic   5.3.0-29.31   amd64   Signed kernel image generic
ii  linux-image-5.3.0-40-generic   5.3.0-40.32   amd64   Signed kernel image generic
ii  linux-image-5.3.0-42-generic   5.3.0-42.34   amd64   Signed kernel image generic
ii  linux-image-generic            5.3.0.42.36   amd64   Generic Linux kernel image

$ uname -mrsv
Linux 5.3.0-42-generic #34-Ubuntu SMP Fri Feb 28 05:49:40 UTC 2020 x86_64
```

パッケージ更新。

```
$ sudo apt upgrade
パッケージリストを読み込んでいます... 完了
依存関係ツリーを作成しています                
状態情報を読み取っています... 完了
アップグレードパッケージを検出しています... 完了
以下のパッケージが新たにインストールされます:
  linux-headers-5.3.0-45 linux-headers-5.3.0-45-generic linux-image-5.3.0-45-generic
  linux-modules-5.3.0-45-generic linux-modules-extra-5.3.0-45-generic
以下のパッケージはアップグレードされます:
  kmod libaprutil1 libaprutil1-dbd-sqlite3 libaprutil1-ldap libkmod2 linux-firmware linux-generic
  linux-headers-generic linux-image-generic linux-libc-dev python3-keyring
アップグレード: 11 個、新規インストール: 5 個、削除: 0 個、保留: 0 個。
```

OS を再起動。

```
$ sudo reboot
```

Linux カーネルが更新される。

```
$ dpkg -l | grep linux-image
rc  linux-image-5.3.0-26-generic   5.3.0-26.28   amd64   Signed kernel image generic
rc  linux-image-5.3.0-29-generic   5.3.0-29.31   amd64   Signed kernel image generic
ii  linux-image-5.3.0-40-generic   5.3.0-40.32   amd64   Signed kernel image generic
ii  linux-image-5.3.0-42-generic   5.3.0-42.34   amd64   Signed kernel image generic
ii  linux-image-5.3.0-45-generic   5.3.0-45.37   amd64   Signed kernel image generic
ii  linux-image-generic            5.3.0.45.38   amd64   Generic Linux kernel image

$ uname -mrsv
Linux 5.3.0-45-generic #37-Ubuntu SMP Thu Mar 26 20:41:27 UTC 2020 x86_64
```

## 参考資料

- [Ubuntu Manpage: apt \- コマンドラインインターフェイス](http://manpages.ubuntu.com/manpages/eoan/ja/man8/apt.8.html)
- [Ubuntu Manpage: checkrestart \- check which processes need to be restarted after an upgrade](http://manpages.ubuntu.com/manpages/eoan/en/man1/checkrestart.1.html)
- [Debian GNU/Linux 9 stretch でのセキュリティアップデート方法 \- Qiita](https://qiita.com/niwasawa/items/d4e271fe21a814d3ec6d)