NETWORK BASICS / 04
ファイアウォールとは?
役割と基本設定を実際のネットワーク構成から解説
ネットワーク基礎シリーズ第4回。ファイアウォールは、ネットワークの境界で通信を確認し、ルールに基づいて許可・拒否する機器です。本記事では、Stractoの検証環境で使用しているFortiGate-60Eの実設定を一般化しながら、Security Zone、Address Object、Firewall Policy、ルーティング、NAT、管理・監視などの基本を整理します。
NETWORK BASICS SERIES
ネットワーク基礎シリーズ
ネットワークを構成する主要機器を、実際の構成・設定例を交えながら順番に解説します。
ファイアウォールとは
ファイアウォールは、ネットワーク間を流れる通信を検査し、あらかじめ定義したポリシーに基づいて通信を許可または拒否する機器です。社内LANとインターネットの境界だけでなく、DMZ、管理ネットワーク、開発ネットワークなど、異なるセキュリティレベルのネットワークを分離するためにも利用されます。
ルータも異なるネットワーク間の通信を中継しますが、ファイアウォールでは「どこから、どこへ、何の通信を許可するか」というセキュリティ制御が中心になります。
送信元、宛先、サービスなどの条件で通信を許可・拒否します。
Trust、Untrust、DMZ、MGMTなど、役割ごとに境界を作ります。
許可・拒否された通信を記録し、障害解析やセキュリティ確認に利用します。
ネットワークの中でどこに置かれるのか
Stractoの検証環境では、FortiGate-60Eを次世代ファイアウォールとして使用しています。内部側はLAGでコアスイッチへ接続し、外部側は2本のWANインターフェースをRedundant Interfaceとしてまとめる構成です。
Internal Network
Routing
Internet
さらに、検証環境ではDMZと管理用ネットワークも個別に定義しています。通信経路だけでなく、「そのインターフェースがどのセキュリティ領域に属するのか」を整理しておくことで、ポリシーを設計しやすくなります。
ルータとの違い
| 項目 | ファイアウォール | ルータ |
|---|---|---|
| 主な役割 | 通信の許可・拒否、セキュリティ制御 | 宛先に応じた経路制御 |
| 判断条件 | Zone、送信元、宛先、Service、Applicationなど | 主に宛先IPとルーティングテーブル |
| 状態管理 | セッションを追跡するStateful Inspectionが中心 | 製品・機能による |
| NAT | 構成に応じて実施 | 構成に応じて実施 |
ファイアウォールで必要になる基本設定
StractoのFortiGateでは、物理・論理インターフェース、LAG、Redundant Interface、Security Zone、Address Object、Firewall Policy、Static Route、管理アクセス、NTP、SNMPなどを設定しています。
- Interface:Trust / Untrust / DMZ / MGMTなどの接続先を定義する
- Zone:複数のインターフェースを役割ごとのセキュリティ領域へまとめる
- Address Object:IPアドレスやFQDNを名前付きオブジェクトとして管理する
- Service:HTTP、HTTPS、IKE、ESPなど通信種別を定義する
- Firewall Policy:送信元・宛先・サービス・Actionを組み合わせて通信を制御する
- Routing:接続ネットワーク以外への経路を設定する
- NAT:必要な場合にアドレス変換を行う
- 管理・監視:管理元制限、NTP、SNMP、ログなどを設定する
Security Zoneの設定
FortiGateでは、インターフェースをZoneにまとめてポリシーを作成できます。StractoのFortiGateでは、Trust、Untrust、DMZ、MGMTの4つのZoneを定義しています。
config system zone
edit "DMZ"
set interface "dmz"
next
edit "MGMT"
set interface "mgmt"
next
edit "Trust"
set interface "LAN-LAG" "VLAN30"
next
edit "Untrust"
set interface "WAN-REDUNDANT"
next
end
公開用の例ではインターフェース名を一般化しています。Zoneを利用すると、個々の物理ポートではなく「TrustからUntrustへ」のように、役割を基準にポリシーを設計できます。
LAGとWAN冗長化
StractoのFortiGateでは、内部側の2ポートをAggregate Interfaceとしてまとめ、Trust側の接続に利用しています。また、外部側の2ポートはRedundant Interfaceとして構成しています。
config system interface
edit "LAN-LAG"
set type aggregate
set member "internal1" "internal2"
set role lan
next
end
config system interface
edit "WAN-REDUNDANT"
set type redundant
set member "wan1" "wan2"
set role wan
next
end
AggregateとRedundantは目的が異なります。Aggregateは複数リンクを束ねて利用する構成、Redundant Interfaceは複数ポートのうち利用可能なリンクを使う冗長構成です。実際の利用可否や動作は機種・FortiOSバージョン・対向機器の構成に合わせて確認します。
Address Objectを使う理由
Firewall PolicyへIPアドレスを直接書き続けると、ルールが増えたときに管理しづらくなります。FortiGateでは、ネットワークやFQDNをAddress Objectとして登録し、名前でポリシーから参照できます。
config firewall address
edit "USER-NETWORK"
set associated-interface "Trust"
set subnet 192.0.2.0 255.255.255.0
next
edit "VPN-DESTINATION"
set type fqdn
set associated-interface "Untrust"
set fqdn "vpn.example.com"
next
end
StractoのFortiGateでも、内部ネットワークをSubnet Objectとして登録し、外部の特定宛先をFQDN Objectとして登録しています。FQDN Objectを使えば、IPアドレスが変化するサービスでも名前を基準に扱える場合があります。
Firewall Policyの基本
Firewall Policyでは、「どこから」「どこへ」「どのアドレスが」「どのサービスを使うか」を条件として通信を制御します。StractoのFortiGateではTrustからUntrustへの通信を対象に、特定のVPN通信、一般的な外向き通信、その他の通信という順序でポリシーを構成しています。
config firewall policy
edit 1
set srcintf "Trust"
set dstintf "Untrust"
set srcaddr "USER-NETWORK"
set dstaddr "VPN-DESTINATION"
set action accept
set schedule "always"
set service "IKE" "ESP"
set logtraffic all
next
end
上記の例では、Trust側のネットワークから特定のVPN宛先へのIKE / ESP通信のみを許可しています。
最後に拒否する
config firewall policy
edit 100
set srcintf "Trust"
set dstintf "Untrust"
set srcaddr "all"
set dstaddr "all"
set action deny
set schedule "always"
set service "ALL"
set logtraffic all
next
end
ポリシーは上から順に評価されるため、必要な通信を先に許可し、それ以外を拒否する考え方が基本です。公開例では意図を分かりやすくするため、拒否Actionを明示しています。
ファイアウォールにもルーティングが必要
ファイアウォールはポリシーだけでは通信できません。宛先ネットワークへパケットを転送するためのルーティング情報も必要です。StractoのFortiGateでは、内部ネットワーク向けの個別ルートと、外部側へ向ける経路を設定しています。
config router static
edit 1
set dst 192.0.2.0 255.255.255.0
set gateway 198.51.100.1
set device "VLAN30"
next
edit 2
set gateway 203.0.113.1
set device "WAN-REDUNDANT"
next
end
Firewall Policyで通信を許可していても、適切な経路がなければ宛先へ転送できません。ポリシーとルーティングはセットで確認する必要があります。
NATは必ずファイアウォールで行うとは限らない
NATはファイアウォールでもよく使われる機能ですが、ネットワーク構成によっては上位ルータ側でNATを担当する場合があります。
今回の検証環境では、Trust → UntrustポリシーでNATを有効化していません。NATは外接ルータ側で実施しており、FortiGateは主に通信制御を担当する構成としています。このように、ネットワーク構成によってはルータとファイアウォールで役割を分け、NATをルータ側で実施する場合があります。
config firewall policy
edit 10
set srcintf "Trust"
set dstintf "Untrust"
set srcaddr "USER-NETWORK"
set dstaddr "all"
set action accept
set service "ALL"
set nat enable
next
end
上記はNATをファイアウォール側で行う場合の一般的な例です。これはStractoのFortiGateポリシーをそのまま抜粋したものではありません。
管理・監視のための設定
StractoのFortiGateでは、管理用インターフェースを別に用意し、管理端末の送信元IPアドレスをTrusted Hostとして限定しています。管理アクセスとしてHTTPS、SSH、SNMPなども有効化しています。
config system interface
edit "mgmt"
set ip 192.0.2.10 255.255.255.0
set allowaccess ping https ssh snmp
set role lan
next
end
config system admin
edit "admin"
set trusthost1 192.0.2.100 255.255.255.255
set trusthost2 192.0.2.101 255.255.255.255
next
end
NTP / SNMP
FortiGateは内部のNTPサーバと時刻同期し、SNMPによる監視も有効化しています。記事内では、実際のSNMP Communityや監視サーバのIPアドレスは公開していません。
config system ntp
set ntpsync enable
set type custom
config ntpserver
edit 1
set server "192.0.2.20"
next
end
end
まとめ
ファイアウォールは、異なるセキュリティ領域の間で通信を制御するネットワーク機器です。Zone、Address Object、Service、Firewall Policy、Routingなどを組み合わせて、「必要な通信だけを許可する」構成を作ります。
StractoのFortiGateでは、Trust / Untrust / DMZ / MGMTのZone、LAG、Redundant Interface、Address Object、TrustからUntrustへのFirewall Policy、Static Route、管理元制限、NTP、SNMPなどを利用しています。
これで「ネットワーク基礎シリーズ」は、コアスイッチ、アクセススイッチ、ルータ、ファイアウォールの4記事が揃います。主要機器の役割を理解した後は、VLAN、STP、LAG、Routing、NAT、Firewall Policy、VPNなどを個別テーマとして掘り下げていくと、ネットワーク全体の理解をさらに深められます。
記事について
本記事は、Stractoのネットワーク検証環境におけるFortiGate-60E(FortiOS 6.2.7)の実機設定ログを基に、公開可能な内容へ一般化・匿名化して構成しています。