Ubuntuサーバーが常にパッチ適用されていることを確認する方法
サーバーを最新の状態に保つことは非常に重要です。LinuxおよびLinuxソフトウェアは、セキュリティアップデートやバグ修正を受けるために常にパッチが適用されています。パッチを迅速に適用することで、ゼロデイバグの被害に遭うことを避けることができます。
パッチ管理
パッチ管理とは、サーバーを更新するためのプラクティスを指します。良好なパッチ管理とは、Linuxカーネルやシステム、使用しているソフトウェアのセキュリティパッチに迅速に対応して、すべてのサーバーがすぐに更新されることを意味します。
セキュリティはシステム管理者から始まります。定期的なセキュリティと更新の監査を実施し、セキュリティ情報を最新の状態に保つべきです。ほとんどのLinuxディストリビューションには、サブスクリプションできるセキュリティメーリングリストがあります。これに登録すると、新しいパッチが利用可能になった際に通知が送られます。使用している他のソフトウェアにも独自のメーリングリストがある場合や、手動で把握する必要がある場合があるため、更新が必要な時期を判断することができます。
稼働時間は重要ですが、ネットワークがフォールトトレラント(つまり、サーバーが複数ある場合)であれば、サーバーを1台ずつ再起動することに問題はないはずです。ユーザーランドソフトウェアへのほとんどのパッチは、システム全体を再起動する必要はありませんが、実行中のサービスを更新する必要がある場合は、通常再起動が必要になります。nginxのようなものは問題ないかもしれませんが、MySQLのような特定のサービスは、優雅にシャットダウンして再起動する必要があるため、再起動に時間がかかります。フェイルオーバーサーバーがない場合は、できるだけ再起動を避けるべきです。
定期的な手動アップグレード
多くの人にとって、単純な更新とアップグレードのコマンドでサーバーを更新することができます:
sudo apt-get update && sudo apt-get upgradeapt-get updateコマンドはパッケージリストを更新し、インストールされているパッケージの最新バージョンに関する情報を取得します。apt-get upgradeコマンドは、すでにインストールされているソフトウェアの新しいバージョンをインストールします。
これは新しい依存関係をインストールせず、一部のシステムアップデートもインストールしません。そのためには、次のコマンドを実行する必要があります:
sudo apt-get dist-upgradeより徹底的なアップグレードを実行します。どちらのコマンドもすべての新しいアップデートをインストールし、変更点のリストを表示します。一部のサービスでは、変更を適用するためにそのサービスを再起動する必要がある場合がありますが、通常は dist-upgrade が必要としない限り、システム全体を再起動する必要はありません。
このプロセスはサーバーが少しだけであれば簡単に行えますが、サーバーを追加するにつれて手動のパッチ管理にはより多くの時間がかかります。CanonicalのLandscapeサービスを使えば、ウェブインターフェースを通じてマシンを管理および更新できますが、10台までのマシンは無料で、それ以上はUbuntu Advantageのサブスクリプションが必要です。ネットワークが特に複雑な場合は、Puppetのようなオーケストレーションサービスを検討することをお勧めします。
自動セキュリティパッチ(無人アップグレード付き)
unattended-upgrades ユーティリティは、重要なセキュリティアップグレードを自動的に適用します。サーバーを自動的に再起動することができ、特定の時間に設定できるため、昼間の真っ最中にダウンすることはありません。
unattended-upgradesをaptからインストールしますが、すでにシステムにインストールされているかもしれません。
sudo apt update
sudo apt install unattended-upgrades
これにより、/etc/apt/apt.conf.d/50unattended-upgradesに設定ファイルが作成されますので、お好きなテキストエディタで開いてください。
設定が次のようになっていることを確認してください。"security" 行のコメントを解除してください:
Unattended-Upgrade::Allowed-Origins {
// "${distro_id}:${distro_codename}";
"${distro_id}:${distro_codename}-security";
// Extended Security Maintenance; doesn't necessarily exist for
// every release and this system may not have it installed, but if
// available, the policy for updates is such that unattended-upgrades
// should also install from here by default.
// "${distro_id}ESM:${distro_codename}";
// "${distro_id}:${distro_codename}-updates";
// "${distro_id}:${distro_codename}-proposed";
// "${distro_id}:${distro_codename}-backports";
};
これによりセキュリティ更新の自動更新がオンになりますが、最初の行のコメントを外すことで、すべてに対してオンにすることもできます。
自動再起動を有効にするには、この行のコメントを外し、値を「true」に変更してください。
Unattended-Upgrade::Automatic-Reboot "true";再起動の時間を設定するには、この行のコメントを解除し、希望する時間に値を変更してください。
Unattended-Upgrade::Automatic-Reboot-Time "02:00";デフォルトの設定では、セキュリティパッチが再起動を必要とする場合、サーバーは午前2時に再起動しますが、これはたまに起こることであり、毎日サーバーが再起動することはないはずです。実行中のアプリケーションが起動時に自動的に再起動するように設定されていることを確認してください。
また、unattended-upgradesを設定して、サーバーの再起動が必要なときに手動で再起動するように知らせるメール通知を送信することもできます。これにより、予期しない再起動を防ぐことができます。
Canonicalライブパッチ
Canonical Livepatch は、サーバーを再起動することなくカーネルを自動的にパッチするサービスです。最大 3 台のマシンまでは無料で利用でき、その後は各マシンごとに Ubuntu Advantage のサブスクリプションが必要です。
システムが最新であることを確認し、snapを介してLivepatchをインストールしてください:
sudo snap install canonical-livepatch次に、彼らのウェブサイトからLivepatchトークンを取得する必要があります。それを手に入れたら、次のように実行できます:
sudo canonical-livepatch enable TOKEN次に、次のコマンドで正常に実行されていることを確認してください。
sudo canonical-livepatch status --verboseAWS のデフォルトの Ubuntu イメージは現在 Livepatch をサポートしていません。これは AWS が追加のパフォーマンスのために独自のカーネルを使用しているためです。Livepatch を使用したい場合は、古いカーネルに戻すか、別のバージョンの Ubuntu をインストールする必要があります。
