この記事の概要

本記事はFortigateをMarketplaceでサブスクリプション契約をして展開しEC2をFortigateVM経由で通信させる方法を記載しております。
Fortigateの機能自体は物理Fortigateと変わりませんので記事では触れません。

AWS環境でFortigateを利用するメリット

Fortigateを使う事でIPS/IDSやアンチウイルス機能などを提供する事が可能となりますがAWS環境で使うメリットに焦点を当てて記載します。
1. 使い慣れたFortigateでIPS/IDSなどのセキュリティサービスをAWS環境で利用できる。
2. オンプレミス環境のFortigateと簡易的にVPN接続が行える。
3. ルールベースでのWebフィルタリングが提供出来る。
4. FQDNレベルでの通信制御ではなく、SaaSサービス単位などで通信制御が行える。
5. 通信状況の可視化が行える。
6. Sandboxの提供が可能。
現在はAWS network Firewallの登場によりアウトバウンド制御なども行えるようになっていますがオンプレミスでFortigateを導入していてクラウド環境も一元管理したい、同じポリシーを適用したいなど細かなニーズに対応が出来ます。

構成図

検証は以下の構成で行います。

料金

料金はFortigate推奨のc6i.xlargeを利用、東京リージョン基準で記載します。

インスタンス利用料 Fortigateライセンス料 合計/1H
$0.214 $1.02 $1.234

その他EBSの利用量gp2(32GB)が$3.84かかります。
24時間31日稼働計算で 918.096(??2+ライセンス)+3.84(EBS)=$921.936が月ごとに発生します。
※通信料は上記料金以外に別途発生しますのでご注意ください。特にAZ間通信料にお気をつけください。

Fortigate VMのデプロイ、初期設定など

以下にFortigate VMをデプロイ、初期設定の方法を記載します。
一部省略、デフォルトパラメータを使用しておりますのでご自身の環境、ご要望に応じて変更を行ってください。

Fortigate VMのデプロイ

「EC2インスタンスを起動」を選択して「その他のAMIを閲覧する」を選択します。
検索窓に「fortigate」と入力して検索、AWS Marketplace AMIのタブを選択して「Fortinet FortiGate Next-Generation Firewall」を選択します。

料金など表示されますので「続行」を選択します。

セキュリティグループはデフォルトのまま設定します。
任意のグローバルアドレスからアクセスを絞る、不要なポートを閉じる場合は以下のドキュメントを確認して任意のポート設定、許可アドレス設定を行ってください。
通常の利用であればhttpsのみだけでOKです。
https://docs.fortinet.com/document/fortigate-public-cloud/7.2.0/aws-administration-guide/228062/opening-ports-in-the-security-group

デプロイするサブネットはパブリックサブネットにしてキーペアなど設定してデプロイします。
インスタンスの起動中はインスタンスのデプロイと合わせてサブスクライブが行われます。

サブスクライブは時間がかかることがあり、以下のような表示が行われる場合があります。

デプロイが行われました。通常のEC2と特別な差異はありません。

管理画面へのアクセスはパブリックIPへ行いますのでEIPを割当します。

Fortigate VMの初期設定

EIPの割当が完了しましたらEIPのアドレスにhttpsでアクセスします。

ユーザ名は「admin」パスワードは「EC2のインスタンスID」を入力してください。と表示されますので「Accept」を選択します。

ユーザ名とパスワードを入力して「Login」を選択します。

パスワード変更画面が表示されますのでパスワードを変更します。

設定開始の画面が表示されますので「Begin」を選択します。

ホスト名を入力して「OK」を選択します。

ダッシュボードの設定画面が表示されますが時にカスタマイズは不要なので「Optimal」を選択します。

Fortigateの紹介ビデオが表示されますので「OK」を選択します。

ダッシュボード表示されます。

ダッシュボード画面を日本語に変更するために「Settings」から「Language」からJapaneseに選択して「Apply」を選択します。

続いてファームウェアを最新までアップグレードします。
v7.0.10にまずはアップグレードします。

確認画面が表示されますのでアップグレードします。自動的にEC2が再起動されます。

v7.0の紹介ビデオが表示されますので「OK」を選択します。

続いてv7.2にアップグレードしていきます。

v7.2の紹介ビデオも表示されますので「OK」を選択します。

最新版のv7.2までアップグレードが出来ました。

Fortigate VMのネットワーク設定、通信確認用EC2の設定など

インターフェイスの状態を確認します。現在はネットワークインターフェイスは1個だけWANインターフェイスがあるワンアームの状態なので他のEC2からアクセスを受けるLAN(internal)用のインターフェイスを追加していきます。

先にLAN(internal)用のインターフェイス用にセキュリティグループを作成します。
Fortigate側でアクセス制御をしますのでセキュリティグループはプライベートIPからanyで開放します。

ENIを取得します。セキュリティグループは先程作ったセキュリティグループをアタッチします。

取得したENIをFortigate VMにアタッチします。

インターネットネット向けの通信処理が出来るように送信元/送信先チェックを変更して無効化します。

Fortigate VMにログインしてインターフェイスを確認するとport2が表示されています。

IPが付与されていませんのでport2を編集してDHCPに設定、「サーバからデフォルトゲートウェイを取得」を無効にします。
デフォルトゲートウェイを取得してしまうとAWS VPCのデフォルトゲートウェイであるVPC内のルータに通信してしまいport1経由で通信ができなくなってしまいます。

port2にIPが設定されました。

次に通信確認用のEC2からFortigate VM経由でインターネットが出来るように通信確認用EC2が所属するプライベートサブネットのルーティングを設定して0.0.0.0/0へのルーティングをFortigate VMのport1に設定されているENIに向けます。

続いて通信確認用EC2からインターネットアクセスが出来るようにファイアウォールポリシーを追加します。
通信元はport2、通信先はport1に設定します。
宛先はall、サービスもallで設定します。検証のためall any許可をしておりますが要件に応じて設定をしてください。
NATは有効にしてください。

通信確認用EC2からインターネット通信をするとFortigate VMのEIPでアクセスが出来ています。

以上でFortigate VM経由で通信確認用のEC2から通信する方法の手順でした。

(参考)アクセス制御について

Fortigate VMを利用することでFQDNでの通信制御やSaaSサービスなどの利用制限などが行なえます。
ポリシーを追加して宛先を任意のFQDNやSaaSサービスを選択してアクションを拒否にして設定します。

許可ポリシーより優先度を上げる必要がありますので設定追加したポリシーをドラッグして一番上に位置するように設定します。

googleにアクセスすると拒否された事が確認できます。

Dropboxへの拒否を設定して拒否されたログを取得してみます。「違反トラフィックをログ」をONにします。

ログ&レポート内の転送トラフィックを選択すると虚偽されたログが表示されます。

(参考)FortiViewによるトラフィック可視化

ダッシュボードからFortiViewを選択することでIP単位などで通信先や通信量などを確認することが出来ます。

(参考)Fortigate VMとAWS VPC VPNとの接続

Fortigate VMとAWS VPC VPNとVPN接続することが出来ます。
カスタマーゲートウェイをFortigate VMのEIPで設定し、Fortigate用のVPN定義をダウンロードしてFortigate VMに設定してVPN接続を行います。
AWS VPC VPNはトンネルが2個接続出来ますがAWS側からのルーティングは重み付けが出来ないためトンネル2個でロードバランシングされる仕様の為Fortigate VM側で非対称ルーティングを許可しないと通信がブロックされてしまいますのでご注意ください。