【公開中】FortiGate のコンフィグを解析して表形式で出力するツールを作成した話

ファイアウォール(UTM)
スポンサーリンク

ワンクリックでパラメータシートができちゃう!?

FortiGate に限らず、ファイアウォール機器でアドレス、サービス、ポリシーなどのオブジェクトが大量に設定されているケースがあると思います。

ネットワーク構築案件で詳細設計書(パラメータシート)を作成する際には、これらの大量のオブジェクトもすべて記載しなければなりません。これ、ものすごく工数がかかりますよね。ミスが混入する可能性も高くなります。

ここで、コンフィグからパラメータシートにコピペできる形式のデータを出力できるツールがあったら有用ではないでしょうか。

というわけで、FortiGate のコンフィグからパラメータシートの材料を出力出来るツール(VBA マクロ)を作成しちゃいました。

【公開中】FortiGate コンフィグ解析ツール

ダウンロード

ツールは Box で公開しています。以下リンクからダウンロードできます。

お試し用コンフィグも以下からダウンロードできます。

使い方

マクロファイルを開くと以下のような「macro」シートがあります。

まず、「①コンフィグファイル選択」をクリックします。すると、ファイル選択ダイアログが表示されるため、解析対象の FortiGate コンフィグファイルを選択します。

使用可能なコンフィグファイルは以下の通りです。

指定できるコンフィグファイル
  • CLI の show コマンドで取得したコマンドログ
    • show でも show full-configuration でもどちらでも OK です
  • GUI のコンフィグバックアップで取得したバックアップファイル

GUI のコンフィグバックアップで取得したバックアップファイルは改行コードが LF になっています。そのため、そのままのファイルをマクロで指定して実行すると内容が正常に表示されません。バックアップファイルを使用する場合は、改行コードを CRLF に置換してから使用してください。

コンフィグファイルを選択したら、「②解析対象コンフィグ選択」の表に、解析したいコンフィグ項目を入力します。いくつかの項目はドロップダウンリストに入れているので、その中から選択するか、または手入力してください。

解析対象コンフィグの指定もできたら「③コンフィグ解析実行」をクリックします。

この後はマクロ処理が行われるため処理完了まで待ちます。

完了するとメッセージが表示されます。

出力内容

処理完了後は以下のようにシートが追加されています。

追加されるシートは「②解析対象コンフィグ選択」で指定した項目ごとに以下の 2 つです。

  1. 対象コンフィグ項目のコンフィグテキストを抜き出したシート
    • シート名は <コンフィグ名> です ※頭の「config」は抜いています
  2. 対象コンフィグ項目の内容を表形式に記載したシート
    • シート名は <コンフィグ名_table> です ※頭の「config」は抜いています

シート名の文字数が制限(31文字)を超える場合は、制限内に収まるようコンフィグ名部分の後ろ側が削られます。

例えば、config firewall address を指定した場合は以下のような出力になります。

<firewall address> シート

<firewall address_table> シート

上画像のように、edit でオブジェクトが設定されているコンフィグについては 1 行 1 オブジェクト(1 edit)の形式で表示されます。また、コンフィグが何階層もある構造になっている場合は、列ラベルの部分(1~6行目)で階層が分かるような構造になっています。

VDOM を使用している場合

VDOM を使用したコンフィグの場合は、以下のように VDOM 別にシートが作成されます。

シート名の頭には「【<VDOM名>】」が付与されます。またグローバルコンフィグについては「【global】」が付与されます。

config と edit が何階層にもなっている複雑なコンフィグの場合

例えば config webfilter profile のコンフィグ構造は、以下のように configedit が何重にもなっている複雑な構造となっています。

config webfilter profile
    edit "default"
        set comment "Default web filtering."
        set feature-set flow
        .
        .
        .
        config override
            set ovrd-cookie deny
            .
            .
            .
        end
        config web
            set bword-threshold 10
            .
            .
            .
        end
        config ftgd-wf
            unset options
            unset ovrd
            config filters
                edit 1
                    set category 0
                    set action block
                    set log enable
                next
                edit 2
                    set category 2
                    set action block
                    set log enable
                next
                .
                .
                .
            end
            set rate-javascript-urls enable
            set rate-css-urls enable
            set rate-crl-urls enable
        end
        set log-all-url disable
        .
        .
        .
    next
    edit ...
    	set ...
    	config ...
    	end
    	.
    	.
    	.
    next
    .
    .
    .
end

このような構造にも対応しています。この場合、以下のような出力になります。

出力サンプル

config system interface

config firewall policy

config router static

連続してツールを実行する場合について

ツールを連続して実行することは可能です。ただしツール実行時に「macro」と「更新履歴」以外のシートを削除するため注意してください。

留意点

  • ツールで出力される表において、設定値はコンフィグ上の設定値がそのまま表示されます
  • 基本的にどの構造のコンフィグでも対応できるようなアルゴリズムになっているはずですが、対応できない構造もあるかもしれません
  • コンフィグの階層は第 5 階層までに対応しています。第 6 階層以上あるコンフィグには対応していません(恐らくそのようなコンフィグは無いとは思います)
  • 処理の都合上、シート上に表示される設定項目の記載順がコンフィグと一致しない場合があります
  • VDOM を使用しているコンフィグについては対応していません
    • ポリシーや各種オブジェクト設定などは VDOM 別にコンフィグがありますが、これが原因です
    • コンフィグの内、解析したい箇所のテキストを VDOM 別に抜き出して、それぞれ個別にツールに読み込ませることでコンフィグ解析をすることが可能です
    • 2022/04/03 ver. から VDOM にも対応しました

更新履歴

  • 2022/04/09 版
    • config emailfilter profile など一部コンフィグに対応できていなかったため対応できるように修正
  • 2022/04/03 版
    • VDOM を使用したコンフィグに対応
    • コンフィグファイルの文字コード指定機能追加
    • その他、内部処理の修正
  • 2022/03/30 版
    • 初版

問い合わせ

バグ報告、改善要望などの連絡は以下の問い合わせフォーム、または Twitter からお願いします。


タイトルとURLをコピーしました