FortiGate 次世代ファイアウォール:インターフェースからトラブルシューティングまでの設定の考え方

FortiGate 次世代ファイアウォール:インターフェースからトラブルシューティングまでの設定の考え方

FortiGateはFortinetの次世代ファイアウォールです。ポリシーでトラフィックを検査し、アンチウイルス、Webフィルター、侵入防止などのセキュリティプロファイルを適用し、VPNトンネルを終端します。この記事では、機器の役割、ネットワークの計画、初回アクセス、インターフェースとルーティング、ファイアウォールポリシー、バーチャルIPによる公開、セキュリティプロファイル、拠点間VPN、高可用性とトラブルシューティングを、出会う順番に沿って解説します。各セクションには図かチェックリストがあり、機器設定の例では各手順のFortiOSコマンドを示します。

必要なもの

IPアドレスとサブネット、ルーターとスイッチの役割を理解しておいてください。このサイトのCCNA記事とPalo Alto NGFW記事を読んでおくと役立ちます。ゾーン、ポリシー、NATの考え方は共通だからです。練習にはラボ用のユニット、ラボ内のFortiGate VM、またはベンダーの評価イメージを使います。自分が所有している、または設定を許可された機器だけで作業し、本番のファイアウォールは文書化された計画とロールバック手順なしに変更しないでください。

図解

一般的なFortiGateの構成:インターネットはport1(WAN)に接続し、FortiGateは中央にあり、port2は社内LANに、port3は公開サーバーを置くDMZに接続します
一般的なFortiGateの構成:インターネットはport1(WAN)に接続し、FortiGateは中央にあり、port2は社内LANに、port3は公開サーバーを置くDMZに接続します

トピック 1: FortiGateの役割

FortiGateは、ステートフルファイアウォール、セキュリティ検査、VPN、ルーティングを一台にまとめています。同じトラフィックに複数の検査エンジンを動かす場合、Fortinetはこれを統合脅威管理(UTM)と呼びます。インターフェース、ゾーン、ポリシーが通過の可否を決め、プロファイルが何を検査するかを決めます。

ファイアウォール、UTM、Security Fabric

ステートフルファイアウォールは各接続を追跡し、戻りの通信を自動的に許可します。その上で、UTM機能が中身を検査します。アンチウイルスはファイルをスキャンし、Webフィルターはサイトをカテゴリに分け、IPS(侵入防止システム)は攻撃を検出します。多くのFortiGateはSecurity Fabricにも参加し、他のFortinet機器と脅威情報を共有します。

ポリシーが決め、プロファイルが検査する

ファイアウォールポリシーは、送信元インターフェース、宛先インターフェース、送信元と宛先のアドレス、サービス、スケジュールを照合します。ポリシーがトラフィックを許可すると、そのポリシーに付けられたプロファイルがそれを検査します。プロファイルのないポリシーはアドレスとポートだけを確認するので、次世代の機能を与えているのはプロファイルです。

位置と見えるもの

FortiGateは通常、インターネット側のルーターと社内ネットワークの間に置かれます。インターフェース間を通るすべてのパケットがファイアウォールに見えます。実際の送信元アドレスを隠す機器の背後にあると、ユーザー単位のポリシーやログの価値が大きく下がります。

トピック 2: 設定の前に計画を立てる

ファイアウォールのトラブルの多くは、機器ではなく不明確な設計から生じます。守るネットワーク、許可したい通信、設定を組み立てる順序を書き出してください。

構成図を描く

インターネット回線、FortiGate、社内LAN、公開サーバーを置くDMZを描きます。各ポートに名前(port1、port2、port3)、役割(WAN、LAN、DMZ)、IPアドレスを書き込みます。この図は各ポリシーの置き場所を示すので、設定と一緒に保管してください。

インターフェースとアドレスの計画を書く

各ポートについて、役割、IPアドレスとマスク、用途、その背後のサブネットを記録します。営業のサブネットやWebサーバーなど、必要なアドレスオブジェクトも追加します。計画を書いておけば、後でアドレスを変えるときに、どのポリシーが依存しているかがわかります。

必要な通信を一覧にする

必要な通信を平易な言葉で書きます。営業のサブネットはHTTPとHTTPSでインターネットを閲覧できる、インターネットからDMZのWebサーバーにはHTTPSだけで届く、支店は本社とIPsecで接続する、などです。各文が一つのポリシーになり、一覧にない通信は末尾の暗黙の拒否(implicit deny)で拒否されます。

ロールバックを計画する

最初の変更の前に設定をバックアップし、復元の方法を控えておきます。実際の通信に影響する変更には保守時間帯を設け、影響を受けるユーザーに知らせます。

トピック 3: 初回アクセスと初期設定

新しいFortiGateは、何かを守る前に、ホスト名、安全な管理者アカウント、DNS、インターフェースのIPアドレス、ライセンスと更新が必要です。GUIのメニューはFortiOSのバージョンによって異なるため、この記事のコマンドは目安です。使用するバージョンのドキュメントで確認してください。

接続して初期パスワードを変更する

管理ポートにPCを接続し、ベンダーのガイドに記載されたアドレスでWebインターフェースを開きます。初期アカウントでの初回ログインの後、すぐにパスワードを変更し、必要最小限の権限で個人ごとに名前付きの管理者アカウントを作成します。

管理できる人を制限する

各管理者アカウントに信頼されたホストを設定し、管理サブネットからのログインだけを許可します。WANポートから管理アクセス(ping、HTTPS、SSH)を外し、LANまたは専用の管理インターフェースだけで許可します。機器が対応していれば、管理者ログインに二要素認証を有効にしてください。

DNS、時刻、ホスト名を設定する

FGT-HQ-01のようなわかりやすい名前を付けます。ライセンス、更新、名前解決を確認できるように、DNSサーバーを設定します。ログ、証明書、VPNには正確な時刻が重要なので、信頼できるNTPから時刻を設定します。

ライセンス、FortiGuard更新、ファームウェア

購入したライセンスを有効化して、FortiGuardのサービス(アンチウイルス、IPS、Webフィルタリング、アプリケーション制御)を使えるようにします。シグネチャーデータベースが最新かを確認し、お使いのモデルにFortinetが推奨するファームウェアを入れます。先にリリースノートを読み、元のファームウェアイメージを残して、戻せるようにしてください。

機器の設定: ホスト名、管理アクセス、DNS、インターフェースを設定する

FortiGateに名前を付け、DNSサーバーを設定し、管理アカウントを信頼できるサブネットに限定します。WANポートに公開アドレスを設定して役割を指定し、LANポートにプライベートのゲートウェイアドレスを設定します。get system interface physicalで各ポートがupになっているか確認します。

# FortiOS CLI: hostname, admin access, DNS and interfaces
config system global
    set hostname FGT-HQ-01
end
config system dns
    set primary 8.8.8.8
end
config system admin
    edit "netadmin"
        set accprofile "super_admin"
        set password <strong-password>
        set trusthost1 192.168.1.0 255.255.255.0
    next
end
config system interface
    edit "port1"
        set alias WAN
        set mode static
        set ip 203.0.113.2 255.255.255.252
        set role wan
        set allowaccess ping https ssh
    next
    edit "port2"
        set alias LAN
        set mode static
        set ip 10.10.10.1 255.255.255.0
        set role lan
        set allowaccess ping https ssh
    next
end
# Check
get system status
get system interface physical

トピック 4: インターフェース、ゾーン、アドレス、ルーティング

各ポートはアドレスを持つインターフェースです。ゾーンは同じ信頼レベルのインターフェースをまとめ、ポリシーが複数のポートではなく一つの名前を参照できるようにします。アドレスオブジェクトはサブネットやホストに名前を付けます。ルーティングは、直接接続されていないネットワーク向けの通信をどこへ送るかを機器に教えます。

物理ポートとその役割

各ポートをIPアドレスとマスクを持つstaticモードに設定し、役割(WAN、LAN、DMZ)を与えます。役割はGUIと既定値を意味のあるものにしますが、何を通すかはポリシーが決めます。aliasを使うと、インターフェース一覧に読みやすい名前を表示できます。

ゾーンでポートをまとめる

port2とport4を含むゾーンを作ると、一つのポリシーで社内LANの両方のポートを対象にできます。ポリシーはゾーン名を参照できるので、読みやすく変更もしやすくなります。ゾーンは設計図と一致させてください。

スタティックルートとデフォルトルート

デフォルトルートは、未知の宛先への通信をWANポート経由でISPのゲートウェイへ送ります。スタティックルートは、他のルーターの背後にあるネットワークを追加します。get router info routing-table allでルーティングテーブルを確認し、戻りの経路が存在することも確認してください。経路がないトラフィックは機器が転送できないからです。

アドレスオブジェクト

各サブネットやサーバーに、SALES-NETやWEB-SERVERのようなアドレスオブジェクトを作り、ポリシーでその名前を使います。アドレスオブジェクトはポリシーを読みやすくし、オブジェクトを一度変更すれば、それを使うすべてのポリシーに反映されます。

機器の設定: ゾーン、デフォルトルート、アドレスオブジェクトを作る

ゾーンはLANのポートをまとめ、ポリシーが一つの名前で参照できるようにします。スタティックルートは、インターネット向けの通信をport1からISPのゲートウェイへ送ります。アドレスオブジェクトはサブネットに名前を付け、ポリシーを読みやすく保ちます。get router info routing-table allで経路を確認します。

# FortiOS CLI: zones, a default route and an address object
config system zone
    edit "LAN"
        set interface "port2"
    next
end
config router static
    edit 1
        set device "port1"
        set gateway 203.0.113.1
    next
end
config firewall address
    edit "SALES-NET"
        set subnet 10.10.10.0 255.255.255.0
    next
end
# Check
get router info routing-table all
diagnose ip address list

トピック 5: ファイアウォールポリシー:順序、暗黙の拒否、ログ

ファイアウォールポリシーは順序付けられたルールの一覧です。機器はポリシーを上から下へ調べ、送信元インターフェース、宛先インターフェース、アドレス、サービス、スケジュールに最初に一致したものを適用します。どのポリシーにも一致しなければ、暗黙の拒否で破棄されます。

FortiOSがセッションの最初のパケットを処理する流れ:経路検索、次にポリシーの一致、次にセキュリティプロファイル、そしてセッションが作られます
FortiOSがセッションの最初のパケットを処理する流れ:経路検索、次にポリシーの一致、次にセキュリティプロファイル、そしてセッションが作られます

重要なポリシーの項目

ポリシーには、名前、送信元と宛先のインターフェース、送信元と宛先のアドレス、サービス(HTTPやHTTPSなど)、スケジュール(always または時間帯)、アクション(accept または deny)、NATの有効無効、セキュリティプロファイル、ログ設定があります。ログを見ればどのルールに一致したかわかるように、各ポリシーに名前を付けてください。

順序と暗黙の拒否

最初に一致したものが適用されるので、具体的なポリシーは一般的なポリシーより上に置きます。すべてのFortiGateは、目に見えない暗黙の拒否で終わります。そのため、ポリシーを書いていない通信はすべて破棄されます。新しいポリシーは、クライアントで試し、ログを確認してから次に進みます。

ログとポリシー検索

重要なポリシーではログを有効にし、検査結果を見るためにallまたはutmのログを使います。diagnose firewall iprope lookupは、ある通信がどのポリシーに一致するかを示します。ユーザーがサイトが遮断されたと言ったときに、時間を節約できます。

厳しく始め、根拠をもって緩める

新しい通信には、まず拒否してログを残すポリシーで始めます。ログで実際に使われている通信を確認し、確かめたトラフィックに対してaccept のポリシーを書きます。他の機器からポリシーをコピーして、必要以上に許可してしまうのを防げます。

機器の設定: セキュリティプロファイル付きの発信ポリシーを書く

ポリシー10は、営業のサブネットがHTTPとHTTPSでインターネットに出ることを許可し、発信インターフェースでNATを使い、アンチウイルス、Webフィルター、IPSのプロファイルを適用します。diagnose firewall iprope lookupは、ある通信がどのポリシーに一致するかを示し、実際のクライアントで試す前に役立ちます。

# FortiOS CLI: outbound policy for the sales network with security profiles
config firewall policy
    edit 10
        set name "allow-sales-web"
        set srcintf "port2"
        set dstintf "port1"
        set srcaddr "SALES-NET"
        set dstaddr "all"
        set action accept
        set schedule "always"
        set service "HTTP" "HTTPS"
        set nat enable
        set utm-status enable
        set av-profile "default"
        set webfilter-profile "default"
        set ips-sensor "default"
        set logtraffic all
    next
end
# Check which policy a flow would match
diagnose firewall iprope lookup 10.10.10.20 0 8.8.8.8 443 port2 6

トピック 6: バーチャルIP:内部サーバーを公開する

バーチャルIP(VIP)は、外部のアドレスとポートを内部のサーバーに対応づけるアドレスオブジェクトです。そのうえでポリシーは、プライベートアドレスではなくVIPへの通信を許可します。インターネットのユーザーがDMZのWebサーバーに届くのは、この仕組みによります。

変換の仕組み

ユーザーは、公開アドレス203.0.113.10のポート443に接続します。FortiGateは宛先を同じポートのまま172.16.10.10に変換し、DMZのインターフェースへ転送します。セッションが追跡されるので、戻りの通信は自動的に逆変換されます。

ポリシーはVIPを使う

インターネット側のインターフェースからDMZのインターフェースへのポリシーは、宛先としてVIPを使います。ポリシーは変換の後のアドレスを、逆方向で検査することを覚えておいてください。よくある間違いは、ポリシーにプライベートアドレスを書いてしまい、届いたトラフィックと一致しなくなることです。

セッションを確認する

diagnose sys session filterとdiagnose sys session listで、各セッションの元のアドレスと変換後のアドレスを確認します。クライアントから応答がなければ、VIP、ポリシー、サーバー自身のファイアウォールの順に確認してください。

機器の設定: バーチャルIPとポリシーでサーバーを公開する

バーチャルIPは、公開アドレスとポートをDMZのプライベートサーバーに対応づけます。その後、ポリシーでバーチャルIPへの通信を許可し、DMZのインターフェースへ送る必要があります。diagnose sys sessionでセッションを確認し、変換が機能していることを確かめます。

# FortiOS CLI: a virtual IP (DNAT) for the DMZ web server and the policy that allows it
config firewall vip
    edit "WEB-SERVER"
        set extintf "port1"
        set extip 203.0.113.10
        set mappedip "172.16.10.10"
        set portforward enable
        set extport 443
        set mappedport 443
    next
end
config firewall policy
    edit 20
        set name "allow-web-to-dmz"
        set srcintf "port1"
        set dstintf "port3"
        set srcaddr "all"
        set dstaddr "WEB-SERVER"
        set action accept
        set schedule "always"
        set service "HTTPS"
        set ips-sensor "default"
        set logtraffic all
    next
end
# Check the sessions for the web server
diagnose sys session filter dst 172.16.10.10
diagnose sys session list

トピック 7: セキュリティプロファイルとSSL検査

プロファイルは、FortiGateがトラフィックの中を見る部分です。次世代の機能を与えますが、暗号化された通信は復号しなければ検査できず、復号はプライバシーと一部のアプリに影響するため、計画も必要です。

主なプロファイル

アンチウイルスプロファイルは、ファイルのマルウェアをスキャンします。Webフィルタープロファイルは、サイトのカテゴリを遮断または警告します。IPSセンサーは攻撃パターンを検出して遮断します。アプリケーション制御は、チャットやファイル共有などのアプリケーションを識別します。まずは既定のプロファイルから始め、ログを見て調整してください。

暗号化通信とSSL検査

ほとんどのWebトラフィックはTLSを使うので、機器が復号しない限りプロファイルは中身を読めません。SSL検査では、FortiGateが自分の証明書をクライアントに提示します。そのため、クライアントがFortiGateの認証局を信頼している必要があります。証明書検査は証明書だけを確認し、内容は復号しません。そのため、最初に行う方法としてより安全です。

銀行や医療の例外

銀行や医療サービスなど一部のサイトは、証明書が差し替えられると動かなくなり、データも機密性が高いです。復号から除外し、その判断をネットワークの所有者と一緒に文書化してください。

トピック 8: 拠点間IPsec VPN

IPsecトンネルは、インターネットを越えて二つの拠点を暗号化して結びます。フェーズ1は二つのゲートウェイの間に安全な経路を作ります。フェーズ2は二つのサブネットの間の通信を保護するトンネルを作ります。両端が一致していないと、トンネルは起動しません。

フェーズ1とフェーズ2

フェーズ1は、事前共有鍵または証明書で二つのゲートウェイを認証し、暗号化方式とハッシュ方式を合意します。フェーズ2は、保護するサブネットと、データ自体の方式を合意します。どちらのフェーズでも一致しないことが、トンネルが起動しない最も一般的な原因です。

ルーティングとポリシー

スタティックルートは、相手側のサブネット向けの通信をトンネルのインターフェースに送ります。その後、ポリシーが社内LANとトンネルの間の通信を、両方向で許可する必要があります。トンネルは起動しているのに通信が通らない場合、ほとんどは片側の経路かポリシーが不足しています。

トンネルを確認する

get vpn ipsec tunnel summaryでトンネルが起動しているかを確認し、diagnose vpn ike gateway listでフェーズ1の状態を見ます。問題が起きたときは、IKEのデバッグ出力で交渉の各段階を確認できますが、テストが終わったら必ず止めてください。

機器の設定: 拠点間のIPsecトンネルを作る

両端でフェーズ1とフェーズ2の設定を一致させ、同じ事前共有鍵を使い、相手のネットワークを覆うサブネットを指定する必要があります。スタティックルートで相手のサブネット向けの通信をトンネルに入れ、ポリシーで通信を許可します。get vpn ipsec tunnel summaryでトンネルを確認します。

# FortiOS CLI: site-to-site IPsec tunnel to the branch office
config vpn ipsec phase1-interface
    edit "to-branch"
        set interface "port1"
        set peertype any
        set net-device disable
        set proposal aes256-sha256
        set remote-gw 198.51.100.20
        set psksecret <shared-secret>
    next
end
config vpn ipsec phase2-interface
    edit "to-branch-p2"
        set phase1name "to-branch"
        set proposal aes256-sha256
        set src-subnet 10.10.10.0 255.255.255.0
        set dst-subnet 10.20.0.0 255.255.0.0
    next
end
config router static
    edit 2
        set device "to-branch"
        set dst 10.20.0.0 255.255.0.0
    next
end
# Check the tunnel
get vpn ipsec tunnel summary
diagnose vpn ike gateway list
拠点間IPsecトンネル:フェーズ1で二つのゲートウェイの間に安全な経路を作り、フェーズ2で二つのサブネットの間の通信を保護します
拠点間IPsecトンネル:フェーズ1で二つのゲートウェイの間に安全な経路を作り、フェーズ2で二つのサブネットの間の通信を保護します

トピック 9: 高可用性とトラブルシューティング

FortiGateを二台、クラスタとして動かすと、一台が故障してもネットワークを動かし続けられます。同じ技能は問題の原因を素早く見つけるのにも役立ち、場当たり的な変更よりずっと時間を節約できます。

アクティブ・パッシブのクラスタ

アクティブ・パッシブモードでは、プライマリ機がトラフィックを処理し、プライマリが故障するとセカンダリが引き継ぎます。二台は専用のハートビートリンクを通じて設定とセッション状態を共有します。プライオリティの高い機器がプライマリになり、overrideの設定が、復旧後に役割を取り戻すかどうかを決めます。

フェイルオーバーをテストする

業務側が把握している時間帯にフェイルオーバーのテストを計画します。テストの前後にget system ha statusでクラスタの状態を確認し、ユーザーの接続が維持されるかを確かめます。設定を誤ったクラスタは、単独のファイアウォールなら起きなかった停止を引き起こすことがあります。

デバッグで一つの通信を追う

通信が失敗したら、一つずつ追います。クライアントのアドレスでフィルターを設定し、フローデバッグを有効にし、数パケット分のトレースを開始して、出力を読みます。経路、ポリシーの一致、プロファイルの結果を確認します。答えがわかったらすぐにデバッグを止めてください。デバッグ出力はCPUを多く使うからです。

ログ、バックアップ、監視

問題が起きたときだけでなく、定期的にトラフィックとイベントのログを確認します。変更の前には毎回設定のバックアップを取り、変更内容と理由を記録します。VPNの失敗、ライセンスの期限切れ、インターフェースのエラーのダッシュボードとアラートを使えば、問題を早く捉えられます。

機器の設定: アクティブ・パッシブのHAを設定し、通信を切り分ける

プライマリ機はより高いプライオリティを持ち、ハートビートポートが二台を接続します。diagnose debug flowを使うと、一つの接続を経路検索、ポリシー一致、プロファイルの順に追えます。答えが分かったら、debugはすぐにdiagnose debug disableで止めてください。デバッグの出力はCPUを多く使うためです。

# FortiOS CLI: active-passive HA, then the basic diagnose commands for troubleshooting
config system ha
    set group-name "FGT-HA"
    set mode a-p
    set hbdev "port8" 50
    set priority 200
    set override disable
    set password <ha-password>
end
# Troubleshooting: follow one flow and look at the debug output
diagnose debug reset
diagnose debug flow filter addr 10.10.10.20
diagnose debug flow show console enable
diagnose debug enable
diagnose debug flow trace start 20
diagnose debug disable
get system ha status

ラボで練習する

FortiGateの技能は実際に手を動かして身につきます。インターネット側、オフィスLAN、Webサーバーを置くDMZの三つのネットワークを持つ小さなラボを作ってください。FortiGate VMまたは評価イメージを使い、次の手順を順番に進めます。

1. 構成図を描き、三つのネットワークのインターフェースとアドレスの計画を書きます。

2. ホスト名、DNS、名前付きの管理者アカウントを設定し、管理アクセスを管理サブネットに限定します。

3. 三つのポートを役割とアドレス付きで設定し、デフォルトルートを追加します。

4. ポリシーを追加する前に、各ネットワークからpingで接続を確認します。

5. 営業のサブネット向けに、NATと既定のプロファイルを使った発信ポリシーを追加し、クライアントから試します。

6. DMZのWebサーバー向けにバーチャルIPと対応するポリシーを作り、セッションを確認します。

7. もう一台のラボ機器へのサイト間IPsecトンネルを作り、経路とポリシーを追加して、トンネルの状態を確認します。

8. 設定をバックアップし、一か所だけ変更し、デバッグで通信を追ってから、バックアップを復元して、ロールバックが機能することを確認します。

次のステップ

設定の後は、ポリシー検索とデバッグコマンドを使って、遮断された通信を数分で見つける練習をしてください。次に、リモートユーザー向けのSSL VPNとFortiClient、共有の脅威情報のためのSecurity Fabricを学びましょう。行ったすべての変更を記録してください。停止の多くは、誰も記録しなかった変更から起きます。一つの悪いポリシーが原因であることは少ないです。

まとめ

FortiGateはポリシーによってトラフィックを検査し、そのトラフィックにセキュリティプロファイルを適用します。良い設定は、構成図、インターフェースとアドレスの計画、必要な通信の一覧から始まります。次に、初回アクセス、インターフェース、ゾーンとルート、各通信に明示的な許可を含む順序付きのポリシー、サーバー向けのバーチャルIP、プロファイルとSSL検査、支店向けのIPsecトンネル、高可用性と続きます。変更の前には必ずバックアップを取り、問題が起きたらデバッグで通信を追い、終わったらデバッグを止めてください。