パッチマネジメントの自動化によるモダナイゼーション ~第一話~ パッチマネジメントの重要性

セキュリティ

2021.01.26

セキュリティパッチの重要性

2017年に発生したランサムウェアWannaCry(ワナクライ)は世界的に流行し、日本国内でも大手企業を含む数社に対して工場での操業停止など大きな影響を与えました。また、コロナ禍の昨今、テレワークなどで利用されている企業ネットワークのVPNのパスワードが漏えいする事件が多くの企業で発生しました。WannaCryの世界的流行とVPNのパスワード漏えいの2種類のセキュリティ問題は、いずれも既知の脆弱性(*1)が悪用されたものであり、前者はWindowsのSMBv1の脆弱性を利用したもの、後者はパルスセキュア社のVPN製品の脆弱性を利用したものです。
さらにパルスセキュア社の脆弱性は2019年4月に高危険度の脆弱性として発表され、修正プログラム(セキュリティパッチ)が配布されていました。つまり、2020年夏に被害にあった企業は1年以上高危険度の脆弱性に対して対策をとっていなかったことになります。

なぜセキュリティパッチは適用されないのか

それではなぜセキュリティパッチ(以下パッチ)が適用されなかったのでしょうか。被害にあった企業にはそれぞれの事情があり、それらを「無知」や「怠慢」といったキーワードで括って彼らを非難することは、いささか生産性を欠く議論ではないかと筆者は考えます。
一般論としてパッチの適用を難しくする課題を検討し、その課題の対策を考案することが、問題解決の本質であると認識し、分析を試みることにします。
まず、企業の情報システム部門の担当者になったつもりで、パッチ適用を難しくする要素を洗い出してみましょう。

パッチ適用の準備に時間がかかる サーバーごとに対策すべき脆弱性が異なり、ゆえに適用するパッチが異なります。対策しなければならない脆弱性がどれとどれで、適用するパッチがどれとどれか、適用する順番や手順はどうか。などをパッチ適用前に調査・準備しておく必要があります。サーバーの種類およびバージョン、サーバーの台数が多くなると調査・準備にかかる時間も増大します。
本番環境への適用前に事前の試験が必須 セキュリティパッチをいきなり本番環境に適用することは避けるべきです。なぜならばパッチ適用後にアプリケーション等が正しく動作するかどうか保証されないからです。試験環境でパッチ適用後のシステムの動作を検証し、本番環境での適用作業のリハーサル行い、作業時間を測定することはとてもシステム運用における重要なタスクです。
パッチ適用作業に時間がかかる いよいよ本番環境でのパッチ適用作業です。パッチ適用作業の中に、事前のバックアップや適用後の動作確認も含めると、かなりの時間を要する作業になります。

上記の他、業務の性格上、システム停止が難しいシステムでは、そもそもパッチ適用ができる機会が少ない。という理由もあるかもしれません。

先にあげたパッチ適用を難しくする要素はいずれも、「時間がかかる」ことに起因しています。さまざまな業務を担うシステム運用現場では日常業務に追われ、時間がかかるパッチの適用作業を高い頻度で実施することはたいへん難しい状況なのだと推察できます。
従ってパッチの適用作業にかかる時間を短縮することが、パッチ適用の実施率を向上させるために有益だろう。というのが筆者の考えです。
本稿ではパッチ適用の時間短縮のための「自動化」というテーマで今後進めてまいりますが、自動化を語る前に、そもそもパッチ適用作業とは何をするものなのか整理します。そのためにパッチ適用全体を管理する業務である「パッチマネジメント」について理解を深めたいと思います。

パッチマネジメントとは

パッチマネジメントとはシステムを構成するサーバーのOS、ミドルウェアおよびネットワーク機器の脆弱性を特定し、それらのセキュリティパッチを適用することで脆弱性を修正し、セキュリティリスクを低減する一連の作業を管理することです。
従ってパッチマネジメントの目的は、セキュリティリスクを低減しシステムを健全に運用することにつきます。
それではパッチマネジメントを主な工程ごとに分類して、その実施内容を確認していきましょう。

脆弱性の調査 システム内のサーバーおよびネットワーク機器に存在する脆弱性を調査します。調査には脆弱性スキャナを利用するのが一般的です。また、セキュリティ専門会社が提供するセキュリティ診断サービス(*2)を利用するとエンドユーザの作業負担が軽減されます。
パッチの特定 脆弱性の調査で発見された脆弱性を修正するためのセキュリティパッチを特定します。脆弱性個々には共通脆弱性識別子CVE(Common Vulnerabilities and Exposures)という管理番号が付与されており、その管理番号を調べると影響を受けるソフトウェアやファームウェアの情報とセキュリティパッチの情報がわかる仕組みになっています。これらの情報をインプットとして、管理しているシステムの各々のサーバーやネットワーク機器でどのパッチを適用するべきなのかを検討します。
パッチ適用の準備 適用するパッチが特定できたら適用するパッチの依存性の確認をし、適用する順番を決定します。次にパッチ適用手順を確認し手順書を作成します。
試験環境での事前調査 試験環境でパッチを適用し、その後のシステムの動作確認を行います。動作確認に問題がなければ本番環境への適用が許可されます。ここで重要となるのが、試験環境と本番環境のシステム構成、ソフトウェアのバージョンなどのパッチの適用状況が同じであることです。これらに相違があると事前調査の動作確認の精度が下がり、本番環境にパッチを適用した際に問題を起こす可能性が高まります。
本番環境への適用 いよいよ本番環境への適用を実施します。この工程には本番環境のバックアップ取得、パッチ適用後に万が一問題が発生した場合の切り戻し手順の確立も含まれます。

これらの一連の作業がパッチマネジメントで、これらを定期的に実施し、実施の度に作業品質を向上させていくのがパッチマネジメントサイクルで、システムのセキュリティリスクを一定水準で抑え込むために非常に重要となります。
また、一連のパッチマネジメントの作業内容および管理者による承認行為等を記録し証跡を残すようにしてください。

パッチマネジメントサイクル

パッチマネジメントサイクル

パッチマネジメントの自動化

それではパッチマネジメントでどのような自動化が考えられるか見ていきましょう。

脆弱性スキャンの自動化

脆弱性スキャンの自動化として脆弱性スキャンのスケジューリング機能や脆弱性スキャン結果の自動集計などがあげられます。
脆弱性スキャンのスケジューリングでは、システムの稼働率が比較的低い時間帯に自動的にスキャンが実施されるよう設定します。 また、スキャン結果を自動的に集約し、レポートやダッシュボードを使ってサーバーごと、危険度ごとにリスクレベルを可視化し、今後のパッチ適用作業の優先順位付けを支援することが可能になります。
このような脆弱性スキャンの自動化を行うためには、一般的に脆弱性管理ソリューションを導入するのがよいでしょう。

試験環境構築の自動化

試験環境を毎回一から構築することはありませんが、パッチ適用試験を実施するために新規にサーバーを構築する場合もあります。そのような場合は、システム構築を自動化することで、システム環境を毎回同じレベルに合わせ、短時間でシステム構築を実現することができます。
システム構築の自動化のためにはCI/CDツールを使うのがよいでしょう。
CI/CDとはContinuous Integration/Continuous Deliveryの略で、継続的インテグレーション/継続的デリバリーと訳されます。CI/CDとはソフトウェアの変更を常にテストして自動で本番環境にリリース可能な状態にするためのソフトウェア開発の手法ですが、一般的にそれを実現するために使用するツールの中にテスト環境の構築を自動化することに役に立つツールがあります。

パッチ適用の自動化

一般的に言って、パッチ適用を自動化するためのツールはLinux系とWindows系で大きく異なります。Linux系にはオープンソースのツールないしはそれらを元にした商用ツールがあります。Windows系はマイクロソフトのツールが一般的です。また、Linux、Windowsの両方を統合的にマネジメントする商用ツールもあります。

動作確認の自動化

パッチ適用後のシステムの動作確認を行うことも自動化することができます。このためにはシステム構築の自動化ででてきたCI/CDツールを使います。

作業承認の自動化

システムに影響を及ぼす作業を実施する場合、システム管理者に都度承認もらう必要があります。指定様式に作業内容を記載し、システム管理者がそれに押印することで承認の確認する仕組みが散見されますが、承認フローを自動化することも今回の連載のスコープにしたいと思います。

パッチマネジメントの工程 作業内容 自動化内容
脆弱性の調査 ・脆弱性スキャン
・セキュリティ診断サービス
・脆弱性スキャンの自動化
パッチの特定 ・発見された脆弱性のパッチ抽出 -
パッチ適用の準備 ・パッチ適用手順書作成 -
試験環境での事前調査 ・試験環境構築
・セキュリティパッチの適用
・動作確認
・試験環境構築の自動化
・セキュリティパッチ適用の自動化
・動作確認の自動化
本番環境への適用 ・セキュリティパッチの適用
・動作確認
・セキュリティパッチの自動化
・動作確認の自動化
その他 ・作業承認 ・作業承認の自動化(ワークフロー)

パッチマネジメント自動化の効果

パッチマネジメントを自動化することによる効果について整理すると下記のようになります。

作業時間の短縮 本稿のテーマなのであらためて説明することもありませんが、自動化によりパッチマネジメントに係る時間を短縮することが期待されます。短縮される時間はシステム規模が大きくなるほど顕著になると考えられます。
サイバーリスクの低減 パッチマネジメントの目的はサイバーリスクの低減にあります。パッチマネジメントの時間を短縮することでパッチ適用のサイクルが短くなることが期待されますので、脆弱性をそのままにしておく時間が短くなり、その結果としてシステム全体のサイバーリスクが低減されます。
作業品質の安定 自動化による効果として作業品質の安定があげられます。自動化によりパッチマネジメント作業の標準化、定式化は促進され、ヒューマンエラーが減少することでシステム保全の品質が安定すると考えられます。
作業習得時間の削減 自動化することで作業手順書が簡素化され、システム保全要員が習得すべき手順が減ることにより作業の習得時間を削減する効果も期待できます。

最後に

本稿ではパッチマネジメントの重要性とパッチマネジメントを自動化することにより、サイバーリスクを低減することができることをご説明しましたが、いかがでしたでしょうか。
次号以降ではパッチマネジメントの各工程で利用できる自動化についてより具体的に話を深堀してまいります。取り上げる自動化は以下のとおりです。

  • CI/CDツールを使ったシステム基盤構築・試験の自動化
  • Linux環境およびWindows環境のパッチ適用の自動化
  • 脆弱性管理ソリューションによる脆弱性スキャンの自動化
  • 運用も含めたパッチマネジメント全体の自動化

引用先等

  • (*1)「脆弱性」とは広義にはサイバーセキュリティを脅かすセキュリティホール全般を意味することがありますが、本稿ではサーバーのOSやミドルウェア、ネットワーク機器のファームウェア等の脆弱性を指すことにします。
  • (*2) 当社で提供するネットワークセキュリティ診断サービスは下記参照
    https://www.intellilink.co.jp/business/security/diagnose_01/

パッチマネジメントの自動化によるモダナイゼーション ~第一話~ パッチマネジメントの重要性