参加完 2025 资安大会后,感觉透过限制IP来源的防护政策还是有一定的效果,因此就在评估对现有 FortiGate VPN 增加相关设定。首先已确认 FortiGate 可以设置以 国家/ 地理地址 作为识别的地址对象,所以后续就剩相关政策的设定与套用。
原先 AI 建议可以在《防火墙政策》设定 Wan → IPSec 来过滤,但实际测试并没有挡下来,猜测是因为当建置IPSec VPN后,FortiGate 会在《进入本机流量政策 (Local-In)》加入一个政策,允许任何IP通过IPSec连入而造成《防火墙政策》无效,因此要阻挡的话,也需要从这个 Local In Policy 下手了。
我的固件版本是 7.4.7,在图形界面中,Local In Policy 只能检视,无法异动,因此在建立好相关国家的的地址对象后,接下来就需要进入《CLI 控制台》,以指令方式进行 Local In Policy 异动。
(依官方说明,7.6.0 后便可以通过 GUI 设置。)
【FortiGate 环境】
- 韧体版本:7.4.7
- VPN 连接方式:IPSec
- 设定目的:只允许特定国家IP可以连接IPSec VPN。
【CLI 控制台】
先说明一下,以优先级而言,一般可能会先设定允许的规则,再设定拒绝All,但因为我想先确认 Deny All 有生效,所以我会先设定 Deny 的规则,等最后全部设完再用 move 去调整 policy 的顺序。
1. 拒绝所有 IP 连接 IPSec VPN
config firewall local-in-policy edit 1 set intf "virtual-wan-link" # virtual-wan-link 為 Interface 的名稱 set srcaddr "all" set dstaddr "all" set action deny set service "IKE" "ESP" set schedule "always" next end
2. 允许特定国家IP连接IPSec VPN
config firewall local-in-policy edit 2 set intf "virtual-wan-link" set srcaddr "Country-Allow" set dstaddr "all" set action accept set service "IKE" "ESP" set schedule "always" next end
3. 调整 local-in-policy 顺序
config firewall local-in-policy move 2 before 1 end
4. 查看最后设定结果
show firewall local-in-policy
【番外篇】
在测试的过程,如果有想观察相关流量状况,可以通过以下指令进行。
1. 用 sniffer 观察任何进入 500, 4500 port 的流量
diag sniffer packet any 'port 500 or port 4500' 4 # 4 最詳細,1 最簡單 // 按 CTRL + C 結束
2. 用 debug 模式观察来自 123.123.123.123 的前 100 笔流量
diag debug reset diag debug flow filter addr 123.123.123.123 diag debug flow trace start 100 diag debug enable diag debug disable diag debug reset
3. 用 debug 模式观察 IKE 流量
diag debug reset diag debug console timestamp enable diag debug application ike -1 # 等級從 1 ~ 15,-1 代表最詳細 diag debug enable diag debug disable diag debug reset
《相关连结》
- FortiGate-Local-in policy介绍与设定 – Andy的IT技术分享网站
- How to move the order local-in policy For… – Fortinet Community