FortiGate 下一代防火墙:从接口到故障排查的配置思路
FortiGate 是 Fortinet 的下一代防火墙。它按策略检查流量,应用防病毒、Web 过滤和入侵防御等安全配置文件,并终结 VPN 隧道。本文按你实际会遇到的顺序,讲解完整的配置过程:设备的作用、网络规划、首次访问、接口与路由、防火墙策略、用虚拟 IP 发布服务器、安全配置文件、站点到站点 VPN,以及高可用性与故障排查。每个部分都配有图示或检查清单,设备配置示例给出了每个步骤对应的 FortiOS 命令。
需要准备的东西
你需要了解 IP 地址和子网划分,以及路由器和交换机的作用。如果已读过本站的 CCNA 文章和 Palo Alto NGFW 文章,会更容易理解,因为区域、策略和 NAT 的概念在这里同样适用。练习时可以使用实验设备、实验环境中的 FortiGate VM,或厂商提供的评估镜像。请只在你拥有或获准配置的设备上操作;没有书面计划和回滚方案时,不要更改生产环境的防火墙。
示意图
知识点 1: FortiGate 的作用
FortiGate 在一台设备中整合了有状态防火墙、安全检测、VPN 和路由功能。当多个检测引擎同时处理同一流量时,Fortinet 称之为统一威胁管理(UTM)。接口、区域和策略决定什么可以通过,配置文件决定检查什么内容。
防火墙、UTM 与 Security Fabric
有状态防火墙跟踪每个连接,并自动允许返回流量。在此基础上,UTM 功能检查内容:防病毒扫描文件,Web 过滤把网站分类,入侵防御系统(IPS)检测攻击。许多 FortiGate 还加入 Security Fabric,与其他 Fortinet 设备共享威胁信息。
策略决定,配置文件检查
防火墙策略匹配源接口、目的接口、源和目的地址、服务以及时间表。如果策略允许流量,附加在该策略上的配置文件就会检查这些流量。没有配置文件的策略只检查地址和端口,因此正是配置文件让 FortiGate 具备下一代功能。
位置与能看到的内容
FortiGate 通常位于互联网路由器和内部网络之间。所有跨接口的数据包都会被防火墙看到。如果它位于隐藏了真实源地址的设备后面,基于用户的策略和日志的作用就会大打折扣。
知识点 2: 配置前先做规划
防火墙的大多数问题源于设计不清晰,而不是设备本身。请写下你要保护的网络、希望允许的流量,以及构建配置的顺序。
画出部署示意图
画出互联网链路、FortiGate、办公室局域网,以及放置公网服务器的 DMZ。为每个端口标注名称(port1、port2、port3)、角色(WAN、LAN、DMZ)和 IP 地址。这张图说明每条策略应该放在哪里,应与配置一起保存。
编写接口与地址规划
对每个端口记录角色、IP 地址和掩码、用途,以及其后面的子网。添加需要的地址对象,例如销售子网和 Web 服务器。书面规划让你以后修改地址时更容易,因为能看到哪些策略依赖它。
列出所需的流量
用通俗的语言写下每一条必要的流量,例如:销售子网可以通过 HTTP 和 HTTPS 浏览互联网;互联网只能通过 HTTPS 访问 DMZ 中的 Web 服务器;分支机构通过 IPsec 连接总部。每一句都会成为一条策略,清单之外的流量会被末尾的隐式拒绝(implicit deny)拒绝。
规划回滚
在第一次修改之前备份配置,并记下如何恢复。对会影响正在运行流量的更改,安排维护时间窗口,并通知会受影响的用户。
知识点 3: 首次访问与初始配置
新的 FortiGate 在能够保护任何东西之前,需要主机名、安全的管理员账户、DNS、接口地址,以及许可证和更新。不同 FortiOS 版本的 GUI 菜单有所不同,因此本文的命令只是参考。请以你所用版本的文档为准进行核对。
连接并修改默认密码
用网线把电脑连接到管理口,并在厂商指南给出的地址打开 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 检查每个端口是否已启动。
# 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: 接口、区域、地址与路由
每个端口都是带有地址的接口。区域把具有相同信任级别的接口归为一组,使策略可以用一个名称代替多个端口。地址对象为子网和主机命名。路由告诉设备,对于不在直连网络中的流量应该送往哪里。
物理端口及其角色
把每个端口设置为 static 模式,配置 IP 地址和掩码,并指定角色(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: 防火墙策略:顺序、隐式拒绝与日志
防火墙策略是一个有序的规则列表。设备从上到下检查策略,应用第一条匹配源接口、目的接口、地址、服务和时间表的策略。如果没有任何策略匹配,流量会被隐式拒绝丢弃。
重要的策略字段
策略包括名称、源和目的接口、源和目的地址、服务(如 HTTP 或 HTTPS)、时间表(always 或时间段)、动作(accept 或 deny)、NAT 开关、安全配置文件以及日志设置。为每条策略命名,让日志能说明匹配的是哪条规则。
顺序与隐式拒绝
具体的策略应放在一般策略之上,因为第一条匹配的策略生效。每台 FortiGate 都以一条看不见的隐式拒绝结尾,所以你没有为其编写策略的任何流量都会被丢弃。每条新策略都应使用客户端测试,并检查日志,然后再进行下一条。
日志与策略查询
对重要的策略开启日志,并使用 all 或 utm 日志查看检测结果。diagnose firewall iprope lookup 命令显示某个流量会匹配哪条策略,当用户说网站被阻止时,它能节省大量时间。
先严格,再凭证据放宽
对新的流量,先用 deny 并记录日志的策略开始,检查日志以了解实际使用的情况,然后再为已确认的流量编写 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 检测
大多数网页流量使用 TLS,因此除非设备解密,配置文件无法读取其内容。SSL 检测让 FortiGate 向客户端出示自己的证书,这要求客户端信任 FortiGate 的证书颁发机构。证书检测只检查证书,不解密内容,是更安全的第一步。
银行与医疗服务的例外
一些网站,例如银行和医疗服务,在证书被替换后会无法正常工作,而且其数据高度敏感。应将它们排除在解密之外,并与网络所有者一起记录这一决定。
知识点 8: 站点到站点的 IPsec VPN
IPsec 隧道通过加密把两个办公地点通过互联网连接起来。第一阶段在两个网关之间建立安全通道。第二阶段为两个子网之间的流量建立受保护的隧道。两端必须匹配,否则隧道无法建立。
第一阶段与第二阶段
第一阶段使用预共享密钥或证书对两个网关进行身份验证,并协商加密和哈希算法。第二阶段协商受保护的子网以及数据本身的算法。任一阶段不匹配,都是隧道无法建立的最常见原因。
路由与策略
静态路由把通往远端子网的流量送入隧道接口。然后,策略必须允许本地 LAN 与隧道之间双向的流量。隧道已建立却不通流量,几乎总是某一端缺少路由或策略。
检查隧道
使用 get vpn ipsec tunnel summary 查看隧道是否已建立,使用 diagnose vpn ike gateway list 查看第一阶段的状态。出现问题时,IKE 调试输出会显示协商的每一步,但测试完成后必须关闭它。
设备配置: 建立站点到站点的 IPsec 隧道
两端的第一阶段和第二阶段配置必须一致,使用相同的预共享密钥,并且子网要覆盖对方的网络。静态路由把通往远端子网的流量送入隧道,然后策略必须允许这些流量。用 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
知识点 9: 高可用性与故障排查
两台 FortiGate 可以组成集群,使其中一台故障时网络仍能继续运行。同样的技能也有助于快速找到问题原因,比随意的修改更能节省时间。
主备集群
在 active-passive 模式下,主设备处理流量,主设备故障时备用设备接管。两台设备通过专用的心跳链路共享配置和会话状态。优先级更高的设备成为主设备,而 override 设置决定恢复后是否重新夺回这一角色。
测试故障切换
在业务方知情的时间窗口中规划故障切换测试。测试前后使用 get system ha status 检查集群状态,并确认用户的连接得以保持。配置不当的集群可能造成单台防火墙不会造成的中断。
用调试跟踪一条流量
当某条流量失败时,逐步跟踪它。为客户端地址设置过滤器,启用流量调试,为少量数据包启动跟踪,然后阅读输出:路由、策略匹配、配置文件结果。一旦得到答案就立即关闭调试,因为调试输出会占用大量 CPU。
日志、备份与监控
定期查看流量日志和事件日志,而不只是在出问题时才看。每次修改前都备份配置,并记录修改内容和原因。针对 VPN 故障、许可证到期和接口错误设置仪表板和告警,可以及早发现问题。
设备配置: 配置主备 HA 并排查流量问题
主设备的优先级更高,心跳口连接两台设备。用 diagnose debug flow 逐步跟踪一个连接:路由查找、策略匹配,然后是配置文件。得到答案后立即用 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 的技能来自动手实践,因此请搭建一个小型实验环境,包含三个网络:互联网侧、办公室局域网,以及带有 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 隧道,以及高可用性。每次修改前都要备份,出现问题时用调试跟踪流量,结束后关闭调试。