無料試用 英語ドイツ語和風ロシア語スペイン語
KernelCareブログ

死亡、税金、およびLinuxサーバの再起動を回避する - Linuxカーネルのアップデート、3のさまざまな方法

Linuxカーネルのアップデートは生命の事実です - 税金のように鈍く、死よりほんの少し不便です。 Linuxカーネルで新たに発見されたセキュリティの脆弱性は単調な規則性をもって出現しているようです。 すべてではありませんがほとんどの場合、それらを修正するために必要なパッチはその後すぐに実行されます。 最新のLinuxカーネルセキュリティパッチをインストールすることに関する作業があります、そしてあなたがそれを遅らせるのであれば危険 - それをあまりにも長くしておくと脅威の主体は脆弱性の期間を利用するかもしれません。

Linuxは、Webホスティングサービス、スタンドアロンWebサーバー、およびWebアプリケーションのプラットフォームとして人気があり、リモートコード実行(RCE)、クロスサイトスクリプティング(XSS)、サービス拒否(DoS)などの手法を使用するハッカーの主な標的となっています)攻撃。 最新のオペレーティングシステムとアプリケーションソフトウェアのパッチでシステムを最新の状態に保つことは、システムセキュリティを強化し、こうした種類のサイバー脅威から保護するための最も効果的な方法の1つです。 Linuxの場合、ほとんどのカーネルアップグレードとセキュリティパッチはシステムの再起動を必要とするため、OSを安全に保つことは困難です。

この記事では、リブートせずにLinuxカーネルを更新する方法について説明します。 私はいくつかの最も人気のあるLinuxカーネルのための3つの異なる方法をカバーしています。 彼らです:

  1. コマンドラインで。
  2.   ケクセック;
  3. 再起動不要のライブカーネルパッチツール:Oracle Ksplice Uptrack、Canonical Livepatch、Red HatのKpatch、SUSE Kgraft(SLEライブパッチ)、CloudLinuxのKernelCare。

1 コマンドライン

これは、Linuxディストリビューションベンダーのリポジトリから更新を行う標準的な方法であり、ドキュメントで最もよく見られる方法です。

Ubuntuでは、端末でこれらのコマンドを使用できます。

sudo apt-get upgrade linux-image-generic sudo reboot

Debianでは、これでしょう。

sudo apt-get upgrade kernel sudo reboot

Red Hat Enterprise Linux(RHEL)用、または他のRPMベースのディストリビューション用のCentOSカーネルアップデートを実行する場合は、これを使用してください。

sudo yum update kernel sudo reboot

これまでのところ、とても簡単です。 ただし、カーネルパッチは、再起動するまで有効になりません。

リブート? はい。 ユーザーをキックオフし、ファイルを保存し、プロセスを終了し、多くの人を非常に不幸にする必要があります(たとえば、購入途中の人)。 そして、Linuxサーバーが再び起動してその状態を回復するのを待つ必要があります。 バウンスにどれくらい時間がかかりますか? 顧客は気づくでしょうか? 通知しない場合でも、最初に通知する必要があります。

これが、多くのシステム管理者がパッチのインストールを延期し、ダウンタイムを回避しながらシステムセキュリティを低下させる理由の1つです。

+長所: インストールなし
- 短所: 自動化されていません。 再起動が必要です。

2 kexec:より速い再起動

次のコマンドを使うと再起動の手順を早くすることができます。 ケクセック。 このLinuxカーネルシステムコールを使用すると、ブートローダとハードウェアの初期化フェーズを省略し、再起動時間を大幅に短縮して、新しいカーネルを起動できます。

それを使用するには、まずインストールする必要があります kexecツール.

Ubuntu / Debianについて

sudo apt-getインストールkexec-tools

次のような構成ウィンドウが表示されます。

CentOS / RHELの場合:

sudo yumインストールkexec-tools

次に、新しいカーネルをインストールします。 それらをリストし、そしてあなたが望むものを選択してください。

sudo yumアップデートカーネル

or

sudo rpm -qaカーネル

出力は次のようになります。

kernel-3.10.0-514.26.1.el7.x86_64 
kernel-3.10.0-862.3.2.el7.x86_64

今すぐあなたの選んだバージョンで起動します。

sudo kexec -l /boot/vmlinuz-3.10.0-862.3.2.el7.x86_64 \ -initrd = / boot / initramfs-3.10.0-862.3.2.el7.x86_64.img \ -reuse-cmdline sudo sync; sudo umount -a; sudo kexec -e

忍耐力がない場合は、次のコマンドを使用できます(ただし、そうする前に以下の警告を参照してください)。

sudo kexec -e

警告! これは、rebootコマンドを実行してプロセスを正しく終了させ、ファイルキャッシュを同期させ、ファイルシステムをマウント解除する時間を与えずにサーバーの電源を入れ直すことに似ています。 データの損失や破損を引き起こす可能性があります。

+長所: 起動が速くなります。
- 短所: ワンタイムインストール より多くのフィンガーワーク(そしてそれをうまく記述しない限りエラーの可能性がより高い)。

3 再起動せずにカーネルを更新する

はい、あなたはそれを正しく読みました。 そこ is その方法です。

セキュリティパッチの適用が非常に重要な場合もありますが、再起動時に停止するプロセスも同様です。 「常時オン」または「高可用性」システムを実行している場合、すでにこのジレンマに精通しているでしょう。

リブートレスカーネルの更新により、「ケーキを食べて(あまりにも)」食べられるようになります。 セキュリティの脆弱性に対するパッチまたは重大なバグ修正のみを適用するため、完全なカーネルアップグレードの代わりにはなりません。 しかし、多くの場合、必要なのはこれだけです。これらの方法を使用すると、サーバーを安全に保ち、再起動するまで何年も実行することができます。

多くの主要なLinuxベンダーが、再起動のないカーネルアップデートを提供しています。 選択するものは、実行するディストリビューションによって異なります。 この記事の残りの部分では、次の製品について説明します。

  • オラクルによるKsplice (Oracle Linuxアップデート、Ksplice Uptrack for enterprise)
  • Kpatch by Red Hat (RHELカーネルアップデートおよびCentOSアップデート用)
  • Canonicalによるライブパッチ (Ubuntuカーネルアップデート用)
  • SUSEによるKgraft (SUSEアップデート専用)
  • CloudLinux KernelCare (複数のOSの場合)

Oracle Ksplice

Kspliceは、リブートレスカーネルアップデートの最初の市販されている実装です。 Ksplice Inc.は最終的にOracleに買収されたため、現在では(当然のことながら)Oracle LinuxおよびRedHat Enterprise Linuxディストリビューションでのみ入手可能であり、展開にはOracleからのライセンスが必要です。

デプロイするには、以下を実行してください。

sudo wget -N https://ksplice.oracle.com/uptrack/install-uptrack-oc sudo sh install-uptrack-oc -autoinstall

rebootコマンドはありません。インストールスクリプトを実行する必要があるのは、サーバーの存続期間中に1回だけです。 その後、 アップトラック serviceは自動的に新しいカーネルアップデートを検出してあなたに代わってデプロイします。 スケジューリング、ダウンタイム、そしてそれ以上のことはありません。

+長所: 再起動は必要ありません。 自動更新。
- 短所: Oracleディストリビューション専用です。 サポートライセンスが必要です。

正規のライブパッチ

これは、ライブパッチングカーネル用のCanonicalの技術です(何と思われますか?)。 (Canonicalは人気のあるUbuntu Linuxディストリビューションの背後にある会社です。)独自のパッチを作成することもできますが、困難で時間のかかる作業になる可能性があります。 (一部のベンダーは有料でUbuntuアップグレードカーネルを作成します。)

このサービスは、Ubuntu 16.04以降、およびRHEL 7.x(ベータ版)で利用できます。

このように展開されます。

sudoスナップインストールcanonical-livepatch sudo canonical-livepatch enable [トークン]

注意: Canonical Livepatchサービスは、Ubuntuコミュニティメンバーのための3マシンまで無料です。 あなたはトークンにサインアップすることができます こちら.

+長所: 再起動は必要ありません。 自動カーネルアップデート
- 短所: 自明ではないカスタムカーネルパッチ。 更新可能なホストの数を制限します(追加ホストは有料)。

Red Hat Kpatch

これは、Red Hat独自のカーネルパッチツールです。 2014で発表され、 移植された 同じファミリーの他の人々(Fedora、CentOS)や、いくつかのDebianベースのシステム(Ubuntu、Gentoo)で作業すること。

RHEL 7にデプロイする例を次に示します。

sudo yum install kpatch sudo yum install kpatch-patch-XXXel7.x86_64.rpm

UbuntuのLivepatchサービスやOracleのKspliceとは異なり、自動ではないため、各カーネルパッチが利用可能になったら手動で確認してインストールする必要があります。

+長所: 再起動は必要ありません。
- 短所: 自動化されていません。 限られた分布

SUSEクラフト

Red Hatのソリューションとほぼ同時に開発および発表されたKgraftは、SUSEのライブパッチング製品(SUSE Linux Enterprise Live Patchingとして知られています)です。 これはSUSE独自のLinux Enterprise Server 12専用であり、プリインストールされているため、実際には何もする必要はありません(料金を支払う以外は)。 他のほとんどのアプローチとは異なる原理で機能しますが、Kpatchと同等の機能セットを備えています。

+長所: インストールは不要です。 再起動は必要ありません。
- 短所: 単一プラットフォームのサポート 商用(ただし、60日の無料トライアルがあります)。

CloudLinux KernelCare

2014でも開始されたKernelCareのLinuxカーネルライブパッチサービスは、CentOS、RHEL、Oracle Linux、Debian、Ubuntu、 他人。 また、Oracleのソリューションと同様に、KernelCareはRHEL 2.6.32の古い6カーネルをサポートしています。

KernelCareのインストール方法は次のとおりです。

wget -qq -O-https://kernelcare.com/installer | bash sudo / usr / bin / kcarectl -register <キー>

KernelCareは「インストールして忘れる」ソリューションです。 KernelCareをインストールすると、サーバーを再起動せずに、新しいカーネルセキュリティパッチが自動的にダウンロードされて適用されます。

しかし、最も近い競合他社とは対照的に、KernelCareは次のような脆弱性に対するより複雑なパッチのいくつかを処理できます。 メルトダウン (CVE-2017-5754), 分光 (CVE-2017-5753CVE-2017-5715そして最近では、Linuxカーネルのバッファオーバーフロー欠陥がロマンチックに知られています。 変異原天文学 (CVE-2018-14634) KernelCareは、カスタムパッチ設定、固定日付パッチ、遅延パッチ、および再起動不要のロールバック、つまりパッチ削除をサポートします。

ここで検討している他のベンダーのように、KernelCareも良い血の流れから湧き出ています。 CloudLinux、大手WebホスティングLinuxベースのOSベンダー。

+長所: 簡単インストール。 再起動は必要ありません。 幅広いOS対応(最も人気のあるLinuxフレーバーの1つであるUbuntuを含む)。 カスタムおよび固定日のパッチ適用をサポートします。 CloudLinuxによる優れたサポートと業界のノウハウ。
- 短所: コマーシャル(があります 無料の30日トライアル) またあります 無料のKernelCareライセンス 非営利団体向けです。

[hubspot type=cta portal=5408110 id=77c921a7-e20a-4732-9117-d7e372d5a6da]

結論

サーバーが重要でなく、オフラインに耐えられる場合は、コマンドラインの標準ツールを使用してカーネルを更新するのは比較的簡単です。

常時オンのシステムを実行している場合(つまり、再起動できない、または再起動しない場合)は、ライブカーネルパッチソリューションをご覧ください。 これらのうち、3種類があります。

  1. 管理者 - あなたは自分でやらなければなりません。 例えば Kパッチ, クラフト.
  2. 全自動 - それはあなたのためにそれをします。 例えば ライブパッチ, Ksplice.
  3. 全自動、高度なマルチプラットフォーム - それはあなたのためにそれをし、すべてのプラットフォームで高度な脅威を処理します。 例えば カーネルケア from CloudLinux.