FortiGate 仮想パッチの設定手順|FortiOS 脆弱性の暫定緩和

  • URLをコピーしました!
目次

はじめに

FortiOS 自身に影響する脆弱性が公表されたとき、本来の対応はパッチを含むバージョンへのアップグレードです。ただし、メンテナンスウィンドウの確保や HA 構成での検証、業務影響の調整などで、すぐにアップグレードできないこともあります。こうした「パッチ適用までの間」をしのぐ暫定策として、FortiGate には仮想パッチ(virtual patch)の仕組みがあります。

本記事では、FortiGate の仮想パッチを、仕組みから設定手順・確認方法・限界までまとめます。設定全体の優先度は『FortiGate ハードニングの優先度と確認手順』で扱っています。

この記事でわかること
  • 仮想パッチが脆弱性を緩和する仕組み(IPS エンジンと FMWP データベース)
  • 仮想パッチが対象とする通信と、対象外セッションの扱い
  • local-in policy を使った仮想パッチの設定手順
  • 適用状況とブロックされた通信の確認方法
  • 暫定策としての位置づけと、恒久対応との関係

仮想パッチは、IPS エンジンが既知脆弱性のシグネチャを使い、FortiGate 自身宛の悪用通信をブロックする機能です。アップグレードを置き換えるものではなく、パッチ適用までのリスクを下げる暫定策として位置づけられます。以降では仕組みと設定を順に扱います。

仮想パッチとは

仮想パッチは、FortiGate の IPS エンジンを使って既知脆弱性の悪用を緩和する手法です。FortiGate 自身宛の通信に対して、FMWP(Firmware Virtual Patch)データベースを local-in policy で適用します。これにより、たとえば web GUI や管理アクセスを狙った既知の悪用通信を、FortiGuard から配信されるシグネチャでブロックできます。

通常のパッチがコードそのものを修正するのに対し、仮想パッチはコードを変えず、悪用にあたる通信を入口で遮断する点が異なります。脆弱性そのものが消えるわけではないため、恒久対応のアップグレードまでの時間を稼ぐ位置づけになります。

なお、この機能は FortiOS 7.2.4/7.4.0 以降で利用できます。利用には FMWP データベースを導入するためのライセンスが必要で、詳細は設定手順のセクションで扱います。

参考: Fortinet「Virtual patching on the local-in management interface」
“a method of mitigating vulnerability exploits by using the FortiGate’s IPS engine”
(FortiGate の IPS エンジンを用いて脆弱性の悪用を緩和する手法)
https://docs.fortinet.com/document/fortigate/7.6.6/administration-guide/393161/virtual-patching-on-the-local-in-management-interface

仮想パッチが脆弱性を緩和する仕組み

local-in policy で virtual-patch を有効にすると、IPS エンジンが次のように動作します。

  1. WAD プロセスが FortiGuard の API サーバーに問い合わせ、稼働中の FortiOS バージョンを狙う脆弱性の一覧を取得します。
  2. local-in インターフェース宛のセッションについて、ポート番号とプロトコルからサービスを識別し、スキャン対象かどうかを判定します。
  3. 該当する脆弱性シグネチャに一致する悪用通信を破棄し、IPS のセキュリティイベントログに記録します。

ここで押さえておきたいのが、スキャン対象が絞られている点です。現行の動作では、セッションのうちタグ付けされるのは Agentless VPN と web GUI のサービスです。タグ付けされたセッションに、稼働中の FortiOS バージョン向けの脆弱性シグネチャが存在しない場合、IPS エンジンはそのセッションをバイパスします。これは、悪用にあたる通信だけをスキャン・破棄して性能への影響を抑えるための仕組みです。

取得された脆弱性ルールは、CVE と対応づくシグネチャとして扱われます。たとえば、管理 API の認証バイパスを狙う通信は、対応する CVE のシグネチャにマッピングされた仮想パッチルールでブロックされます。

仮想パッチの設定手順

仮想パッチは、local-in policy で virtual-patch を有効にして適用します。設定の前に、いくつかの前提を確認します。

前提条件

  • FMWP データベースを導入するためのライセンス(FMWR / Firmware ライセンス)が必要です。 ライセンスがないと FMWP データベースが導入されず、仮想パッチは機能しません。
  • IPS エンジンが利用できる状態であること。仮想パッチは IPS エンジンが脆弱性シグネチャでスキャンする仕組みのためです。
  • FortiGuard への接続。virtual-patch を有効にすると、WAD プロセスが FortiGuard の API サーバーへ定期的に問い合わせ、脆弱性ルールを取得します。

FMWP データベースが導入されているかは、diagnose autoupdate versions で確認できます(次のセクションで扱います)

local-in policy での有効化

管理アクセスを受けるインターフェース宛の local-in policy に対し、virtual-patch を有効にします。

config firewall local-in-policy
    edit 1
        set intf "port2"
        set srcaddr "all"
        set dstaddr "all"
        set action accept
        set service "ALL"
        set schedule "always"
        set virtual-patch enable
    next
end

local-in policy の基本的な考え方(暗黙の deny がない点、ロックアウトのリスク、接続元の絞り込み)は、関連記事『FortiGate 管理アクセス制限の手順』で扱っています。仮想パッチを有効にする policy でも、コンソールアクセスを確保したうえで、メンテナンスウィンドウでの適用と確認をおすすめします。

確認: show firewall local-in-policy

参照: 設定手順とライセンス要件は公式ドキュメントを確認しています。
https://docs.fortinet.com/document/fortigate/7.6.6/administration-guide/393161/virtual-patching-on-the-local-in-management-interface

適用状況の確認と診断

設定後は、FMWP データベースの導入状況と、有効になっているシグネチャ、実際にブロックされた通信を確認します。

FMWP データベースのバージョンとライセンスの有効期限は、diagnose autoupdate versions で確認できます。出力の FMWP Definitions の項目に、バージョンと契約期限が表示されます。

diagnose autoupdate versions

仮想パッチで有効になっている FMWP シグネチャの数と一覧は、次のコマンドで確認できます。

diagnose ips vpatch fmwp-status

稼働中の FortiOS バージョンを狙う脆弱性ルールの一覧は、ベンダー・バージョン・製品を指定して問い合わせられます。

diagnose wad dev-vuln query vendor=fortinet&version=<fortios-version>&product=fortios

実際に悪用通信がブロックされると、IPS のセキュリティイベントログ(種別 utm、サブタイプ ips)に記録されます。ログのメッセージには vPatch: の接頭辞とシグネチャ名が含まれ、アクションは dropped になります。GUI では「ログとレポート」の侵入防止(セキュリティイベント)でこれらのログを確認できます。なお、スキャン対象としてタグ付けされても、該当バージョン向けのシグネチャがなくバイパスされたセッションは、ログを生成しません。

確認: diagnose ips vpatch fmwp-status で有効シグネチャ数が想定どおりであること。

仮想パッチの位置づけと限界

仮想パッチは便利な暫定策ですが、いくつかの前提と限界を理解したうえで使うことが重要です。

第一に、仮想パッチは恒久対応ではありません。脆弱性そのものはコード上に残るため、パッチを含むバージョンへのアップグレードが本来の対応になります。仮想パッチは、アップグレードを計画・実施するまでのリスクを下げる時間稼ぎとして位置づけます。アップグレードの進め方や対応バージョンの確認は、関連記事『FortiGate アップグレードパスの確認手順』を参照してください。

第二に、緩和できる範囲が限られます。スキャン対象としてタグ付けされるのは Agentless VPN と web GUI のサービスで、対象外の経路や、FortiGuard にまだシグネチャが存在しない脆弱性は緩和できません。公表されたばかりの脆弱性では、シグネチャの配信状況を確認する必要があります。どの脆弱性が自環境に該当するかは、公開アドバイザリで確認します。脆弱性情報の追い方は、関連記事『FortiGate PSIRT の確認手順』で扱っています。

第三に、依存する前提があります。FMWP データベースを導入するライセンス、IPS エンジン、FortiGuard への接続が前提となるため、これらが満たされない環境では機能しません。あわせて、local-in policy の設定誤りによる管理アクセスの遮断にも注意が必要です。

仮想パッチは、管理アクセスの接続元制限(Trusted Host・local-in policy)や、外部インターフェースでの管理アクセス無効化といった他のハードニングと組み合わせることで、暫定期間のリスクをより下げられます。単独の対策として過信せず、多層の一部として扱うことをおすすめします。

まとめ

FortiGate の仮想パッチは、IPS エンジンと FMWP データベースを使い、FortiGate 自身宛の既知脆弱性の悪用通信を緩和する暫定策です。local-in policy で virtual-patch を有効にし、適用状況を診断コマンドと IPS ログで確認します。恒久対応はアップグレードであり、対象範囲やライセンスの前提を踏まえて、多層防御の一部として用います。

  • IPS エンジンと FMWP データベースによる既知脆弱性の悪用緩和
  • 即時アップグレードが難しい場合の暫定策としての位置づけ
  • local-in policy での virtual-patch 有効化による適用
  • 対象は Agentless VPN と web GUI で範囲が限定的
  • FMWR ライセンス・IPS エンジン・FortiGuard 接続が前提
  • 診断コマンドと IPS ログによる適用状況の確認
  • 恒久対応はアップグレードであり多層防御の一部として併用

以上、最後までお読みいただきありがとうございました。

よかったらシェアしてね!
  • URLをコピーしました!

この記事を書いた人

関西を拠点に活動する、現役インフラエンジニア。経験20年超。

大手通信キャリアにて、中〜大規模インフラ(ネットワーク・サーバ・クラウド・セキュリティ)の設計・構築およびプロジェクトマネジメントに従事。現場で直面した技術課題への対処や、最新の脆弱性情報への実務対応を、一次情報として発信しています。

保有資格
CCIE Lifetime Emeritus(取得から20年以上)/ VCAP-DCA / Azure Solutions Architect Expert

▶ 運営者プロフィール(詳細)

目次