标签: FortiGate

  • 在 FortiGate 中配置 Spamhaus DROP 列表:实现恶意网段自动同步与拦截

    通过 FortiGate 外部连接器 (External Connectors) 自动化集成 Spamhaus DROP 威胁情报。该方案通过 curljq 提取恶意 CIDR 网段,并利用防火墙的 Threat Feed 功能实现动态同步,旨在为企业边界安全提供一层自动化的“零误伤”过滤屏障。

    一、 环境准备:获取并整理 DROP 列表

    Spamhaus 提供的 DROP (Don’t Route Or Peer) 列表包含了由恶意组织控制的网段。其原始格式为 JSON,需转换为 FortiGate 兼容的纯文本。

    1. 原始格式预览

    {"cidr":"1.10.16.0/20","sblid":"SBL256894","rir":"apnic"}
    {"cidr":"1.19.0.0/16","sblid":"SBL434604","rir":"apnic"}

    2. 数据提取脚本

    在你的 Web 服务器(或中转服务器)上运行以下命令,提取 cidr 字段并生成纯文本:

    # 下载、解析并保存为文本文件
    curl -s https://www.spamhaus.org/drop/drop_v4.json | jq -r '.cidr' > spamhaus_drop.txt

    注意:FortiGate 无法直接解析该 JSON 文件,因此必须通过上述步骤将其托管在内部或公网的 HTTP/HTTPS 服务器上。

    二、 FortiGate 配置步骤

    1. 创建外部连接器 (Threat Feed)

    1. 登录 FortiGate,进入 Security Fabric > External Connectors
    2. 点击 Create New,在 Threat Feeds 类别下选择 IP Address
    3. 参数配置详情:
    • Name: Spamhaus_DROP
    • URL: http://yourserver.com/spamhaus_drop.txt
    • Refresh Rate: 设置为 60 分钟(平衡实时性与服务器负载)。

    2. 状态验证

    保存配置后,在列表中观察连接器图标状态:

    • 绿色箭头:连接正常。
    • 红色感叹号:请检查 FortiGate 是否有权限访问该 URL,或 DNS 解析是否正常。
    • 查看内容:右键点击连接器选择 View Entries,确认是否已成功拉取 IP 列表。

    三、 应用安全策略

    获取列表后,必须将其应用到安全策略中才会生效。

    1. 进入 Policy & Objects > Firewall Policy
    2. 创建一条新的拦截策略:
    • Name: Deny_Spamhaus_Inbound
    • Incoming Interface: WAN (外部接口)
    • Source: 选择刚才创建的动态对象 Spamhaus_DROP
    • Destination: All
    • Service: ALL
    • Action: DENY
    1. 关键操作:在策略列表中,手动将该策略 移至顶端 (Top)

    提示:为了防范内网主机被感染后回连 C&C 服务器,建议额外创建一条 SourceInternalDestinationSpamhaus_DROP 的拦截策略。


    四、 自动化更新

    为了确保列表始终最新,建议在 Web 服务器上设置 Crontab 定时任务:

    # 每小时自动更新一次列表
    0 * * * * curl -s https://www.spamhaus.org/drop/drop_v4.json | jq -r '.cidr' > /var/www/html/spamhaus_drop.txt
  • 使用 AbuseIPDB 与 FortiGate 打造全自动威胁情报拦截系统

    通过FortiGate 的“外部连接器(External Connectors)”功能,实时联动 AbuseIPDB 威胁情报库。通过构造动态 API 请求,防火墙可自动获取并更新全球恶意 IP 黑名单,实现对攻击源的毫秒级自动封禁,有效提升企业边界安全。

    准备工作

    • 注册一个AbuseIPDB账户
    • 在My API 栏目生成一个 API Key
    • 设置 API 请求链接

    构造如下格式的 URL:

    https://api.abuseipdb.com/api/v2/blacklist?plaintext=true&confidenceMinimum=75&limit=131072&key=[YOUR API KEY HERE]

    confidenceMinimum:黑名单中包含的最低滥用置信度分数(25-100),建议 ≥75,避免误报。

    FortiGate 配置步骤

    1. 创建外部连接器 (Threat Feed)

    • 登录 FortiGate,进入 Security Fabric > External Connectors
    • 点击 Create New,在 Threat Feeds 类别下选择 IP Address。
    • 参数配置
      • Name: AbuseIPDB_IP_Blacklist
      • URL: 粘贴你在第一阶段构造好的 URL
      • Refresh Rate: 设置为 60 分钟(避免请求过于频繁导致 API 超限)

    2. 验证连接

    保存后,观察连接器图标:

    • 绿色箭头:连接成功,已获取数据
    • 红色/感叹号:检查 URL 是否正确,或防火墙是否有权限访问互联网
    • 点击 View Entries:确认列表内已填充大量恶意 IP

    3. 应用安全策略

    获取到数据后,必须通过策略才能生效:

    • 进入 Policy & Objects > Firewall Policy
    • 创建拦截策略:
      • Incoming Interface: WAN (或外部接口)。
      • Source: 选择刚才创建的对象 AbuseIPDB_IP_Blacklist
      • Destination: All
      • Action: DENY
    • 排序:将该策略 移至顶端(Top),确保流量在匹配放行策略前先经过黑名单过滤。
  • 使用 MobaXterm 搭建 TFTP 服务器为 FortiGate 提供离线特征库更新

    在一些隔离网络或无法直连 FortiGuard 的环境中,FortiGate 防火墙需要通过 手动方式 来更新 IPS、防病毒、应用识别等特征库。使用 MobaXterm 自带的 TFTP 服务 搭建文件服务器,并通过 CLI 命令在 FortiGate 上完成特征库的离线更新。

    一、准备工作

    1. 安装 MobaXterm
    2. 准备 Fortinet 官方特征库文件
    • NIDS、ISDB、APDB
    • FFDB
    • AV(ETDB、MMDB、AVAI)
    • 将这些 .pkg 文件放在一个统一的目录,例如:
    D:\Fortinet\update\

    二、MobaXterm 配置 TFTP 服务器

    1. 打开 TFTP 服务配置
      启动 MobaXterm 菜单栏选择:
    Servers → TFTP server
    1. 设置共享目录
    D:\Fortinet\update\
    1. 启动 TFTP 服务

    三、FortiGate CLI 更新命令

    在 FortiGate CLI 下,使用以下命令从 TFTP 服务器导入更新包:

    1. 更新 IPS 特征库

    execute restore ips tftp nids_OS7.2.0_34.00073.NIDS.pkg 192.168.1.100
    execute restore ips tftp isdb_OS7.2.0_33.00069.ISDB.pkg 192.168.1.100
    execute restore ips tftp apdb_OS7.2.0_34.00073.APDB.pkg 192.168.1.100

    2. 更新其他对象库

    execute restore other-objects tftp ffdb_fos72_00007.04316.pkg 192.168.1.100

    3. 更新防病毒(AV)特征库

    execute restore av tftp vsigupdate-OS7.2.0_93.05729.ETDB.High.pkg 192.168.1.100
    execute restore av tftp vsigupdate-OS7.2.0_93.05729.MMDB.pkg 192.168.1.100
    execute restore av tftp vsigupdate-OS7.2.0_4.03050.AVAI.pkg 192.168.1.100

    其中:

    • 192.168.1.100 → MobaXterm 服务器所在电脑的 IP
    • *.pkg → 存放在 TFTP 目录下的特征库文件

    四、验证更新结果

    执行:

    diagnose autoupdate versions

    可查看 IPS、AV、应用识别库、URL 分类库等版本,确认更新是否成功。

  • FortiGate与StrongSwan IPsec VPN隧道实现互联互通

    如何利用 IPsec VPN 技术,在 FortiGate防火墙 与 StrongSwan 开源IPsec工具之间建立稳定且安全的互联互通隧道。IPsec VPN作为一种成熟可靠的加密隧道技术,广泛应用于连接不同的分支机构或云环境,确保跨网络通信的安全。实现两端网络的加密通信。

    拓扑概述

    在开始配置之前,请确保您对IPsec VPN的基本概念有一定了解。本文的配置基于以下假设:

    • FortiGate 端:公网IP为 10.10.20.1,内部网络为 192.168.1.0/24
    • StrongSwan 端:公网IP为 10.10.10.1,内部网络为 192.168.2.0/24
    • 预共享密钥 (PSK)qixinlee.com

    我们的目标是建立一个IPsec隧道,使 192.168.1.0/24192.168.2.0/24 两个子网能够相互通信。

    StrongSwan配置步骤

    StrongSwan是一款功能强大的开源IPsec实现,常用于Linux系统。以下是详细的配置步骤:

    1. 系统准备与安装

    首先更新系统并安装StrongSwan:

    apt update
    apt install strongswan -y

    2. 启用IP转发

    为了让StrongSwan服务器能够转发来自VPN隧道的数据包,您需要启用IPv4转发:

    echo "net.ipv4.ip_forward=1" | sudo tee -a /etc/sysctl.conf
    sysctl -p

    运行sysctl -p是为了立即应用配置,无需重启系统。

    3. 配置防火墙(UFW)

    如果您的StrongSwan服务器启用了UFW防火墙,需要允许IPsec相关的流量通过:

    ufw allow 500/udp   # IKE(Internet Key Exchange)端口
    ufw allow 4500/udp  # NAT-T(NAT Traversal)端口
    ufw allow proto esp from any to any # 允许ESP协议
    ufw allow proto ah from any to any  # 允许AH协议(如果使用)

    注意: 在调试阶段,您可以临时禁用UFW (ufw disable) 以排除防火墙引起的问题,但在生产环境中务必重新启用并配置正确的规则。

    4. 配置预共享密钥

    编辑 /etc/ipsec.secrets 文件,添加FortiGate的公网IP、StrongSwan的公网IP和预共享密钥:

    vim /etc/ipsec.secrets
    10.10.10.1 10.10.20.1 : PSK "qixinlee.com"

    重要提示: 密钥应使用强密码,并妥善保管。

    5. 配置IPsec连接

    编辑 /etc/ipsec.conf 文件,定义IPsec连接的详细参数:

    vim /etc/ipsec.conf
    config setup
        charondebug="ike 2, knl 2, cfg 2, net 2"
    
    conn fortigate-cloud-vpn
        auto=start # StrongSwan启动时自动建立连接
        keyexchange=ikev2 # 使用IKEv2协议,更安全高效
        ike=aes256-sha256-modp2048! # 阶段1加密算法:AES256, 完整性算法:SHA256, DH组:MODP2048 (Group 14)
        esp=aes256-sha256! # 阶段2加密算法:AES256, 完整性算法:SHA256
        ikelifetime=8h # 阶段1密钥生存周期
        lifetime=1h # 阶段2密钥生存周期
        dpddelay=30 # DPD检测间隔
        dpdtimeout=120 # DPD超时时间
        dpdaction=restart # DPD超时后重启隧道
        authby=secret # 认证方式为预共享密钥
    
        left=%defaultroute # StrongSwan的本地IP使用默认路由接口IP
        leftid=10.10.10.1 # StrongSwan的本地ID,应与FortiGate配置的远端ID匹配
        leftsubnet=192.168.2.0/24 # StrongSwan本地网络的子网
    
        right=10.10.20.1 # FortiGate的对端公网IP
        rightid=10.10.20.1 # FortiGate的对端ID,应与FortiGate配置的本地ID匹配
        rightsubnet=192.168.1.0/24 # FortiGate远程网络的子网

    6. 重启IPsec服务并检查状态

    保存 ipsec.conf 文件后,重启StrongSwan服务并检查隧道状态:

    ipsec down fortigate-cloud-vpn # 如果连接已存在,先关闭
    ipsec restart # 重启StrongSwan服务
    ipsec up fortigate-cloud-vpn # 尝试建立连接
    ipsec status # 查看IPsec隧道状态

    您应该能看到隧道建立成功的相关信息。

    FortiGate配置步骤

    FortiGate防火墙的配置通常通过图形界面完成,以下将列出关键配置项:

    1. 网络配置(FortiGate VPN阶段1通用设置)

    • IP版本: IPv4
    • 远端网关: 静态IP地址,填写StrongSwan的公网IP 10.10.10.1
    • 接口: 填写 FortiGate 出口到公网的网卡(例如 wan1
    • NAT穿越: 启用
    • 保持存活: 10 秒
    • 对等体状态探测(DPD): 按需
    • DPD重试计数: 4
    • DPD重试间隔: 30 秒

    2. 认证(FortiGate VPN阶段1认证设置)

    • 方法: 预共享密钥
    • 预共享密钥: qixinlee.com
    • IKE版本: 2

    3. VPN阶段1(Phase 1)配置

    阶段1定义了ISAKMP(Internet Security Association and Key Management Protocol)的安全参数:

    • 加密算法: AES256
    • 认证算法: SHA256
    • Diffie-Hellman组: 组 14 (与StrongSwan的 modp2048 对应)
    • 密钥生存时间 (秒): 28800 (8小时,与StrongSwan的 ikelifetime 对应)
    • 本地ID: 10.10.20.1 (FortiGate的公网IP)。这个ID与StrongSwan的 rightid 对应。

    4. VPN阶段2(Phase 2)配置

    阶段2定义了IPsec隧道的安全参数:

    • 本地地址: 子网 192.168.1.0/24
    • 对端地址: 子网 192.168.2.0/24
    • 加密算法: AES256
    • 认证算法: SHA256
    • Diffie-Hellman组: 组 14 (与StrongSwan的 modp2048 对应)
    • 启用重放检测: 启用
    • PFS (Perfect Forward Secrecy): 启用
    • 本地端口: 全部
    • 对端端口: 全部
    • 协议: 全部
    • 密钥周期 (秒/kb): 3600 秒 (1小时,与StrongSwan的 lifetime 对应)

    5. 隧道接口与策略路由

    建立IPsec隧道后,您需要配置相应的策略路由和防火墙策略,以允许流量通过隧道:

    • 创建IPsec隧道接口: 在FortiGate中,您需要创建一个虚拟IPsec隧道接口,例如 VPN_to_StrongSwan
    • 策略路由:
      • FG_to_VPN (FortiGate到VPN):
        • 源接口: 内部网络接口 (例如 lan)。
        • 源地址: 192.168.1.0/24
        • 目的接口: VPN_to_StrongSwan 隧道接口。
        • 目的地址: 192.168.2.0/24
        • 动作: 接受 (ACCEPT)。
        • NAT: 不启用 NAT。
      • VPN_to_FG (VPN到FortiGate):
        • 源接口: VPN_to_StrongSwan 隧道接口。
        • 源地址: 192.168.2.0/24
        • 目的接口: 内部网络接口 (例如 lan)。
        • 目的地址: 192.168.1.0/24
        • 动作: 接受 (ACCEPT)。
        • NAT: 不启用 NAT。

    验证与故障排除

    配置完成后,请务必进行验证:

    1. 检查IPsec状态: 在StrongSwan端运行 ipsec status,在FortiGate端查看VPN监控界面。
    2. Ping测试: 从StrongSwan内部网络的主机Ping FortiGate内部网络的主机,反之亦然。
    3. 抓包分析: 如果通信不畅,可以使用tcpdump (StrongSwan) 或 FortiGate的诊断工具进行抓包分析,查看是否有加密和解密的数据包。
    4. 日志分析: 检查FortiGate和StrongSwan的系统日志,寻找任何错误或警告信息。StrongSwan的 charondebug 参数可以帮助提供详细的IKE日志。

    常见问题与排查思路:

    • 预共享密钥不匹配: 确保两端的PSK完全一致。
    • IKE/ESP参数不匹配: 加密算法、认证算法、DH组、密钥生存周期等参数必须严格一致。
    • NAT穿越问题: 如果任何一端位于NAT设备后面,确保端口 500/udp4500/udp 已正确转发。
    • 防火墙规则: 确保两端防火墙都允许IPsec流量(UDP 500, UDP 4500, ESP协议)。
    • 子网定义错误: 确保 leftsubnetrightsubnet 定义正确,且与实际网络匹配。
    • 路由问题: 检查路由表,确保流量被正确地送入IPsec隧道。
  • macOS 使用CONSOLE线连接 FortiGate Console

    macOS 使用 USB 连接默认 Terminal 连接 FortiGate Console

    使用 macOS 操作系统自带的终端(Terminal)应用程序,通过 USB Console 线缆 连接到 FortiGate 防火墙设备的控制台接口。这种连接方式允许您在没有网络连接的情况下直接访问 FortiGate 的命令行界面(CLI),进行配置、故障排除等操作。

    前提条件

    • 一台运行 macOS 的计算机。
    • 一条 USB Console 线缆(线缆一端为 RJ45 接口,连接 FortiGate 的 Console 端口,另一端为 USB 接口,连接您的 macOS 电脑)。
    • 通常情况下,macOS 会自动识别并加载 USB Console 设备的驱动程序,您可能无需手动安装。

    操作步骤

    1. 打开终端(Terminal)应用

    在 macOS 中,打开“应用程序”文件夹,然后进入“实用工具”文件夹,找到并双击“终端”应用程序,或者使用 Spotlight 搜索“终端”并打开。

    2. 列出 USB 设备

    使用以下命令列出系统中所有与 USB 相关联的设备文件:

    ls /dev/*usb*

    解释

    • /dev/ 是一个特殊的目录,包含了系统中所有设备文件的入口。
    • *usb* 是一个通配符,用于匹配文件名中包含 “usb” 字符串的所有文件。通过执行此命令,您可以找到与 USB 连接相关的设备文件,包括您的 USB Console 设备。

    输出示例

    /dev/cu.usbserial-A9XBSOU6
    /dev/tty.usbserial-A9XBSOU6

    在输出结果中,您需要找到一个包含 tty.usbserialcu.usbserial 字符串的设备文件。通常,tty. 开头的设备文件用于拨出连接,而 cu. 开头的设备文件用于呼入连接。在 screen 命令中,通常使用 tty. 开头的设备。

    3. 选择 USB 串口设备

    仔细查看 ls /dev/*usb* 命令的输出,找到与您的 FortiGate 设备连接的 USB Console 线缆对应的设备路径。例如,在上述示例中,/dev/tty.usbserial-A9XBSOU6 就是您可能需要使用的设备。如果您不确定是哪个,可以尝试在插入和拔出 USB Console 线缆时多次运行该命令,观察新增或消失的设备文件。

    4. 连接到 FortiGate 控制台

    使用 screen 命令连接到 FortiGate 控制台。您需要将 /dev/tty.usbserial-A9XBSOU6 替换为您在第 3 步中找到的实际设备路径。大多数 FortiGate 设备的默认波特率为 9600,数据位为 8,停止位为 1,无奇偶校验(8N1)。因此,您可以运行以下命令:

    screen /dev/tty.usbserial-A9XBSOU6 9600

    解释

    • screen 是一个强大的命令行全屏窗口管理器,在这里我们用它来建立与串口设备的连接。
    • /dev/tty.usbserial-A9XBSOU6 是您选择的 USB 串口设备文件路径。
    • 9600 是波特率,必须与 FortiGate 设备的控制台配置匹配。

    5. 登录提示

    执行 screen 命令后,如果您的连接配置正确,您可能会看到一个空白的终端窗口。此时,请尝试按下 Enter 键。这通常会触发 FortiGate 设备的登录提示符显示出来。

    如果按下 Enter 键后仍然没有任何反应,请检查以下几点:

    • FortiGate 是否已开机? 确保 FortiGate 设备已通电并正在启动。
    • USB 连接是否牢固? 检查 USB Console 线缆的两端是否都已正确连接到您的 macOS 电脑和 FortiGate 设备的 Console 端口。
    • 是否选择了正确的 USB 串口设备? 再次运行 ls /dev/*usb* 命令,确认您使用的设备路径是正确的。
    • 波特率是否正确? 虽然 9600 是默认值,但如果之前被更改过,您可能需要尝试其他常见的波特率(例如 115200)。

    如果 FortiGate 正在启动,您可能会在终端窗口中看到设备的启动日志和系统信息,最终会显示登录提示符。

    注意事项

    • 确认连接:在执行 screen 命令之前,请务必检查 USB Console 线缆连接是否牢固,并确保 FortiGate 设备已正常开机。
    • 检查 USB 串口设备:仔细核对 ls /dev/*usb* 命令的输出,确保您选择了与连接 FortiGate 控制台的 USB 串口设备对应的正确 /dev/tty.usbserial/dev/cu.usbserial 设备路径。
    • 驱动程序:对于大多数现代 macOS 版本和常见的 USB Console 线缆,通常不需要手动安装驱动程序。macOS 会自动识别并配置。但如果遇到问题,请查阅您的 USB Console 线缆的说明文档。
  • 解决FortiGate防火墙 DHCP 保留 IP 地址无法释放问题

    问题描述:

    由于某台设备长期离线,其在FortiGate 上通过 DHCP 保留的 IP 地址未能正常释放。尽管该设备已不再连接网络,且防火墙的 GUI 界面中未显示该保留地址,但 DHCP 服务器仍旧占用该 IP,导致无法将该地址重新分配给其他设备。因此,我们需要通过命令行强制删除该保留地址。

    解决方案步骤:

    1. 进入 DHCP 服务器配置模式:

    config system dhcp server

    2. 显示当前的 DHCP 服务器配置:

    show
    • 此步骤用于确认当前 DHCP 服务器的配置信息,并找到需要编辑的 DHCP 服务器 ID。

    3. 编辑特定的 DHCP 服务器(例如,ID 为 1):

    edit 1
    • 根据实际情况,将“1”替换为需要编辑的 DHCP 服务器 ID。

    4. 进入保留地址配置模式:

    config reserved-address

    5. 删除指定的保留地址(例如,编号为 14 的地址):

    delete 14
    • 根据实际情况,将“14”替换为需要删除的保留地址编号。