FortiGateの設計/設定ガイド

FortiGateの設計・設定方法を詳しく書いたサイトです。 FortiGateの基本機能であるFW(ファイアウォール)、IPsec、SSL‐VPN(リモートアクセス)だけでなく、次世代FWとしての機能、セキュリティ機能(アンチウイルス、Webフィルタリング、SPAM対策)、さらにはHA,可視化、レポート設定までも記載します。初期化方法やバージョンアップなどの管理面も書いています。標的型攻撃を守るためのゲートウェイとしても導入されることが多いので、セキュリティ機能に関しては充実した記載を心がけます。

AWSにFortigateを設置して、インターネットの出口をFortigate に集約する

方法はいくつかあると思うが、TransitGWを使うといいのではないか。ルータとして、経路制御をコントロールできる。
2つのVPCの間にこのTransitGWを設置し、TransitGWのデフォルトルートをFortigate にする。
以下に資料が配置されている。
https://www.fortinet.com/jp/demand/gated/fgvm-aws-transitgw

まあ、普通にできますね。

 

AWS上に作成したネットワークにおいて、インターネットの出口をFortigate にする。

 

■1.構成
(1)概要
①ざっくり
簡単にいうと、以下です。
 インターネット - FG ― LAN
   ※FGとLANはAWSVPC上にある
AWSでは
AWSを意識すると、以下になります。
 インターネット ― (igw) - Publicセグメント(10.0.0.0/24)←(eth0)FG(eth1)→Privateセグメント(10.0.1.0/24)-PCとしてWorkspacesを使用(10.0.1.x)

 

(2)詳細
①Fortigate
・ポート構成
 eth0 FGのPort1 10.0.0.99 Publicセグメント(10.0.0.0/24)に接続
 eth1 FGのPort2 10.0.1.99 Privateセグメント(10.0.1.0/24)に接続
 ※IFの設定として、HTTPSを許可するなどの設定をする。
★あとでeth2 FGのPort3 Private(DMZセグメント)(10.0.2.0/24)に接続
 
・ポリシー
 LAN(Port2)→WAN(Port1)をANYで許可
 ログもとっておこう
・ルーティング
 デフォルトGWとしてWANのPort1を指定しておく

 

AWSの設定
VPC:10.0.0.0/16
・PublicSubnet : 10.0.0.0/24
・PrivateSubnet : 10.0.1.0/24
・igw VPCに割り当て
・EIP FGのWAN側(10.0.0.99)に対して割り当て
・ルートテーブル
  VPCのルートテーブルは、0.0.0.0/0 igwに向ける
  Publicサブネットのルートテーブルは、VPCのルートテーブルと同じ
  Privateサブネットのルートテーブルは、0.0.0.0/0 をFGのeth1に向ける(AWS上ではeni-xxxというインターフェース名が割り当てられている)
・IFの設定として、eth1では送信元/送信先の変更チェックを無効化する
・セキュリティグループとして、eth1などはPrivateセグメント(10.0.1.0/24)からの通信はANYで許可する

 

③Workspaces
 PrivateSubunet上にWorkspacesのPCを作成する。
 セキュリティグループは設定しない (デフォルト)
 インターネットへのアクセスは無効 →FGを経由してインターネットに接続させる

 

※ただし、ipconfigで見ると、デフォルトGWは、FGではなく、末尾1になっている。末尾1はAWSに存在する内部用のルータ。このあたりは少しわかりにくい。

 

■2.設定
(1)AWSの設定
VPCの作成
名前タグ:TEST
IPv4CIDER 10.0.0.0/16
IPv6 CIDR: ブロックなし
テナンシー:デフォルト
VPCのIDをメモしておくと、そのあとの作業の確認がやりやすいと思う。→vpc-01cb4f3・・

 

②サブネットの作成
・名前タグ:TEST_toGW  →つまりWANセグメント(Publicセグメント)
VPC:先ほど作成したTEST(表記は乱数)を作成
・AZ:どれかを選択(aでいいと思う)
・IPv4CIDRブロック:10.0.0.0/24

 

・名前タグ:TEST_LAN →つまりLANセグメント(Privateセグメント)
VPC:先ほど作成したTEST(表記は乱数)を作成
・AZ:先と同じにする
・IPv4CIDRブロック:10.0.1.0/24

 

③インターネットゲートウェイ
何をしているかというと、デフォルトGWの設定である。
VPCダッシュボードから、「インターネットゲートウェイ」を選び、「インターネットゲートウェイを作成」
 - 名前タグ:Fortgate_GWとした
・作成されたインターネットゲートウェイVPCにアタッチする
 -アクションから「VPCにアタッチ」、今回のVPCを選択する。

 

④ルーティングの設定
 作成したVPCのルーティングがきちんと設定されていない。なので、同じく「VPCダッシュボード」から「ルートテーブル」メニューを選択。
 -作成したTEST用のVPCのルートテーブルを選択
 -下の「ルート」でルートを確認する。ここで、デフォルトルートがどこかのインターネットGWに接続されていれば何もしなくていい。されていないだろうから、「ルートの編集」
 -「ルートの追加」で「送信先」を0.0.0.0/0にして、ターゲットは「インターネットゲートウェイ」を選ぶ。作成したインターネットゲートウェイを選び、「ルートの保存」
 ・次にサブネットの関連付けをする。このルーティングはどのネットワークのルーティングなのか。
 「サブネットの関連づけの編集」でtoGWのサブネット(つまり、WANというかPublicセグメント)を関連づけする。このとき、サブネットのリンクを押してはダメ。チェックを入れて青ランプをつけて、「保存」ボタンを押す。★注意

 

④-2 他のルーティング  ★後での作業
 ・LAN用のルーティング「route_LAN」も作る
 ★怪しい 「ルートテーブルの作成」から作り、VPCをTESTに割り当てる。サブネットやルートの設定が必要。
 ★怪しい -サブネットの関連づけとして、10.0.1.0/24を選択
  -ルートから「ルートの編集」で、0.0.0.0/0を作り、ネットワークIFを選び、eth1を選ぶ。
  -さらに、サブネットで、TEST_LANのルートテーブルが、先ほど作成したroute_LANになっているかを確認。なっていなければ対応付けをする。これで、このネットワークのデフォルトGWがeth1になり、このネットワーク上の端末のパケットが、eth1に届く。※ただし、同じVPC内は別のルータがあって、そこでルーティングされるため、少し特殊であることは理解しておこう。ただ、インターネット宛てのパケットなどは、きちんとこのルートに従う。

 

⑤セキュリティGの設定
ForitgateのLAN側のネットワークに存在するFGのIFやWorkspaces、SVのセキュリティGはLAN側からのセグメントからのインバウンドをすべて許可 例として、送信元10.0.1.0/24 からはALLで許可



⑥IFの設定
EC2のネットワークセキュリティ>ネットワークインターフェースで、eth1を選択し、アクションをクリックし、「送信元/送信先の変更チェック」を「無効」にします。これをすると、サブネット内のEC2のサーバやWorkspacesからインターネットにアクセスできるようになる。
※何をしているかというと、AWSは基本的に自分宛てのパケット以外を拒否します。それを、受け付けるようにするのです。ネットにいろいろと情報が載っている。

 

(2)FWを構築する
①FortigateVMの設定
・EC2の画面で、通常のサーバを建てる画面を開く
インスタンスの作成を押す
・左のメニューでAWS Marketplaceを選ぶ
・検索窓で「Fortigateを選ぶ」
・料金は、一番小さいt2.smallで0.33ドル(/時間)
 ただ、もう少し大きい方がいいだろう。NICが3枚欲しいので、C4.largeを選ぶ(0.856ドル/時間)
※ インスタンスのタイプと、NICの数などは以下に記載がある。
 NICが4枚なら、c5.largeが必要
 ★ここで注意。いきなりインスタンスを作成しない
 ・「インスタンスの詳細の設定」を押す
  -ネットワークとしてVPCをTEST
  -サブネットをTEST_toGW →下の方にあるeth0のプライマリIPとして10.0.0.99を割り当てる。
  ※このとき、eth1を作成しておいてもいいだろう。→あとでも修正できるが、eth1を10.0.1.99で作成する。このとき、サブネットを正しく選ぶ。サブネットが違うと、エラーになる。
  -基本的には「次へ」で。
  -SSHのキーを選択して、起動

 

自動割当パブリックIP を有効にしておくべき? →デフォルトでもうまくいったけど・・・
  
②EC2の起動と確認 
しばらくすると、仮想Fortigateが起動します。
状態を見ると、グローバルIPが割り当てられ、設定した、PrivateIP(10.0.0.99)と作成したVPCにつながっていることでしょう。またeth0とeth1があることも分かる。
 ※ネットワークのインターフェースIDを調べておこう
 
③ElasticIPの取得
VPCダッシュボードからElasticIPを選ぶ
・新しいアドレスの割当
 Amazonプールを選び「割り当て」を押す
 →ElasticIPが作成される
・アドレスの関連づけ
 作成したElasticIPを選び、アクションから「アドレスの関連づけ」で、先ほど調べたFortigateのネットワークインターフェースIDを選択。プライベートIPも10.0.0.99を選択し、「関連づけ」を押す
 
④Fortigateにアクセス
 ・EC2でFortigateのインスタンスに、ElasticIPが接続されていることを確認
 ・そのIPにアクセスする
  https://203.0.113.25/ ←ここはElasticIP
 ・ユーザ名:admin
  パスワード:FortigateのインスタンスID
  でログイン
 ・すぐにPWを変更する。
 ・初期設定をしよう
 
⑤起動確認
 CLIコンソールから、pingで疎通確認をしよう
 #execute ping 8.8.8.8 これが接続できれば、インターネットにも接続されていることが実感できるだろう。
 ただ、IFがeth0の一つだけしかない。
 
⑥IFの作成  ※これは、インスタンス作成時に2つ目のIFを作っていなかった場合、3つ目のIFを作る場合など。
・EC2の画面で、「ネットワーク&セキュリティ」から「ネットワークインターフェイス」を選択。
・既存では2つ以上のFortigate関連のIFがあると思う。それぞれ、EC2の画面でIFのIDをみて、eth0とeth1という名前を付けておく→わかりやすい
・eth2用にネットワークインターフェースを作成する。
「ネットワークインターフェースを作成」
 -Description:eth2 →あとでNameもeth2にしよう
 -subnet:TEST_DMZ
 -IPv4address:10.0.2.99
 -Security group:他と同じくForti用のセキュリティGを
・作成したIFをFortigateのインスタンスにアタッチ
 IFの一覧に戻るので、eth2を選択して「アタッチ」。そして、インスタンスとして作成したFortigateのIDを入れる。
 これで、EC2上のFortiGateインスタンスに、eth2が登場するはず。
 →でも、Fortigateの再起動が必要(まだ起動していなければしなくていいと思う)

 

⑦FortiGateにて
 IFの設定を正しくしよう。
 たとえば、port1はロール:WAN、IPを固定、管理者アクセスも適宜。port2はロールがLAN、port3はロールがDMZ 
 ※eth0をDHCPから固定に変更したら、なぜかつながらなくなった。eth1は固定にすることに成功したが、eth0はダメ。→おかしいのでとりあえず再起動、EIPの再度割り当てをしたがダメ。WANはDHCPに戻すとうまくいった。
 →AWSで設定されたIPアドレスを割り当てるという意味で、DHCPのままでいいようだ。

 

⑧ポリシー
  LAN(Port2)→WAN(Port1)をANYで許可

 

⑨ルーティング
 何も無かったので、入れる。デフォゲ(0.0.0.0/0)をPort1にした。が、通信には関係が無いように感じる。とはいえ、入れておく方が無難ではないか。
 
■3.LANにWorkspacesのPCとサーバを建てる
(1)Linuxサーバ
インスタンスの作成
EC2で新しいインスタンスを作成する。
このとき、VPCを正しく選択し、IPは自動でも固定でもいい。
※自動にしてみた。

 

②セキュリティグループ
・FGから、作成したサーバへのpingを許可するには、サーバのセキュリティグループで、ICMPを許可する必要がある。
どうように、サーバからFGへpingを許可するのも同様。
→という観点から、セキュリティグループは、WANのIFとLAN内のIFで変える。

 

インスタンスへの接続方法
ここで作成しても、インターネットからこのサーバにアクセスできないので、WorkspacesのPCを作って、そこからSSHでアクセスする。



(2)WorkspacesのPC
SimpleADで作成する
Workspacesを作るときに、サブネットは1つだけにもできる。

 

AWS独特のルーティング
FortiGateでNWを分離しても、LANからDMZはForiGateを通ってくれません。
同一VPC内には特殊なlocalというルータがあり、ルーティングテーブルとして、localというのが作成されている。だから、FGを導入しても、勝手にlocalルータで経由されてします。
たとえば、10.0.0.0/16のVPCを作りセグメントとしてLAN(10.0.0.0/24)とDMZ(10.0.1.0/24)を作ったとします。
LANのデフォゲ(つまりLocalのルータ)は10.0.0.1でDNSは10.0.0.2と割り当てられます。
→EC2のサーバのデフォルトゲートウェイを変えればうまくいく?→仕様としてできないみたいだ。
また、ロンゲストマッチを利用して、10.0.1.0/24のルートを個別に書いても、10.0.0.0/16のルート(宛先Local)がすでに存在するのでエラーになる。
This route table is used by a subnet, and doesn't support route destination which are more specific than VPC local CIDR.


→これを解消するにはVPC Ingress Routingを設定する。