HCRM博客

CentOS 7.4 IPsec配置指南

CentOS 7.4 部署 IPSec VPN:构建安全通信通道的实用指南

在分布式办公和混合云架构日益普及的今天,确保不同网络节点间通信的机密性与完整性至关重要,CentOS 7.4 作为广泛应用的稳定服务器操作系统,其内置的 StrongSwan 套件为部署 IPSec VPN 提供了强大且可靠的支持,本文将引导您一步步完成 CentOS 7.4 上 IPSec VPN 的配置过程,建立安全的网络隧道。

IPSec 核心价值与协议基础

CentOS 7.4 IPsec配置指南-图1

IPSec(Internet Protocol Security)并非单一协议,而是一个协议套件,工作在网络层(OSI 第三层),它通过两大核心机制保障 IP 数据包的安全:

  1. 认证头(AH):提供数据源认证和完整性校验,确保数据包未被篡改,但不加密内容。
  2. 封装安全载荷(ESP):提供数据源认证、完整性校验以及数据加密,是保障机密性的首选,现代 IPSec VPN 实现通常优先或仅使用 ESP。

IPSec 的运行依赖两个主要协议:

  • IKE(Internet Key Exchange):负责在通信双方之间协商安全参数(如加密算法、散列算法)、进行身份验证(如预共享密钥、数字证书),并最终生成用于加密实际数据传输的会话密钥,IKE 通常运行在 UDP 500 端口。
  • IPSec 本身(AH/ESP):使用 IKE 协商好的密钥和参数,对实际的 IP 数据包进行认证和/或加密处理,ESP 协议通常使用 IP 协议号 50。

CentOS 7.4 部署 StrongSwan

  1. 环境准备与软件安装

    • 确保系统是最新状态:sudo yum update -y
    • 安装 EPEL 仓库(提供额外软件包):sudo yum install epel-release -y
    • 安装 StrongSwan 及相关组件:sudo yum install strongswan -y
  2. 核心配置文件:/etc/strongswan/ipsec.conf 此文件定义全局设置、连接(Connection)配置,一个典型站点到站点(Site-to-Site)配置如下:

    # /etc/strongswan/ipsec.conf - 核心配置文件
    config setup
        charondebug="ike 2, knl 2, cfg 2, net 2, enc 2" # 调试级别,生产环境可调整或降低
        uniqueids=no # 处理某些 NAT 场景可能需要关闭
    conn %default
        keyexchange=ikev2 # 推荐使用更安全现代的 IKEv2
        ike=aes256-sha256-modp2048! # IKE 阶段 1 加密/完整性/DH 组
        esp=aes256-sha256! # ESP 阶段 2 加密/完整性算法
        aggressive=no # 禁用不安全的主动模式
        rekey=yes # 启用密钥重协商
        dpdaction=restart # 死亡对等体检测失败后重启连接
        closeaction=restart # 连接关闭后自动重启
    conn my-vpn-tunnel # 自定义连接名称
        left=203.0.113.10 # 本机公网 IP 地址
        leftsubnet=192.168.1.0/24 # 本机需要保护的子网
        leftid=@vpn-gateway-1.example.com # 本机标识(FQDN 或 IP)
        leftfirewall=yes # 告知 StrongSwan 自动管理本机防火墙规则
        right=198.51.100.20 # 对端公网 IP 地址
        rightsubnet=10.10.0.0/16 # 对端需要保护的子网
        rightid=@vpn-gateway-2.example.com # 对端标识(必须与对端配置匹配!)
        auto=start # 启动时自动尝试建立连接
        authby=secret # 使用预共享密钥认证 (PSK)
    • 关键参数说明
      • left/right: 本端和对端的公网 IP。
      • leftsubnet/rightsubnet: 需要 IPSec 隧道保护的本端和对端子网。
      • leftid/rightid: 用于 IKE 身份认证的标识符,通常使用 FQDN 或 IP 地址,两端必须匹配且与密钥配置一致
      • ike/esp: 指定加密、完整性算法和 DH 组,示例中使用的是现代强算法(AES256, SHA256, MODP2048)。务必禁用已知弱算法(如 3DES, MD5, MODP1024)
      • authby=secret: 指定使用预共享密钥认证(PSK),更安全的替代方案是证书认证(authby=pubkey)。
  3. 预共享密钥配置:/etc/strongswan/ipsec.secrets 此文件存储认证密钥,权限必须严格限制 (chmod 600)。

    CentOS 7.4 IPsec配置指南-图2
    # /etc/strongswan/ipsec.secrets
    # 格式:<本端标识符> <对端标识符> : PSK "<预共享密钥>"
    vpn-gateway-1.example.com vpn-gateway-2.example.com : PSK "Your$tr0ngP@ssw0rd!ComplexEnough"
    • 安全警告:PSK 应足够长(>20字符)、随机且复杂,在可能的情况下,强烈推荐使用基于证书的认证,安全性更高,可管理性更好。
  4. 配置系统内核与防火墙

    • 启用内核转发:编辑 /etc/sysctl.conf,确保包含:
      net.ipv4.ip_forward = 1
      net.ipv4.conf.all.accept_redirects = 0
      net.ipv4.conf.all.send_redirects = 0

      应用:sudo sysctl -p

    • 配置防火墙 (firewalld)
      sudo firewall-cmd --permanent --add-service="ipsec" # 允许 IKE (UDP 500) 和 NAT-T (UDP 4500)
      sudo firewall-cmd --permanent --add-rich-rule='rule protocol value="esp" accept' # 允许 ESP (IP 协议 50)
      sudo firewall-cmd --permanent --add-rich-rule='rule protocol value="ah" accept' # 允许 AH (IP 协议 51),如果使用
      sudo firewall-cmd --permanent --add-masquerade # 启用 IP 伪装,用于本地子网访问外部或特定 NAT 场景
      sudo firewall-cmd --reload

      注意leftfirewall=yesipsec.conf 中会尝试自动添加规则,但显式配置防火墙更可靠。

高级主题与安全强化

  1. 证书认证(优于 PSK)

    • 建立私有 PKI 或使用公共 CA 为 VPN 网关签发证书。
    • ipsec.conf 中将 authby=secret 改为 authby=pubkey
    • 配置 leftcertrightcert 指向证书文件路径。
    • ipsec.secrets 中加载私钥(: RSA /path/to/private.key),证书认证消除了共享密钥风险,支持更精细的访问控制。
  2. NAT 穿越 (NAT-T) 当 VPN 网关位于 NAT 设备后时,需启用 NAT-T,StrongSwan 通常能自动处理,确保:

    CentOS 7.4 IPsec配置指南-图3
    • 防火墙允许 UDP 4500 端口 (--add-port=4500/udp)。
    • ipsec.confconfig setup 部分或连接配置中添加 forceencaps=yes(如果需要强制封装)。
  3. 日志监控与排错

    • 查看实时日志:sudo tail -f /var/log/messages (或 journalctl -f -u strongswan 对于使用 systemd journal 的系统)。
    • 查看连接状态:sudo ipsec statussudo ipsec statusall
    • 重启服务:sudo systemctl restart strongswan
    • 详细诊断:临时增加 charondebug="all 3"ipsec.confconfig setup 部分,重启服务后查看日志。
  4. 安全加固建议

    • 算法选择:始终使用强加密算法(如 AES-GCM, AES-CBC-256)、强完整性算法(如 SHA2-256, SHA2-384)和足够强度的 DH 组(如 modp2048, modp3072, ecp384),禁用 DES, 3DES, MD5, SHA1, MODP1024。
    • 身份认证优先使用基于证书的认证,如必须使用 PSK,确保其极其复杂且定期轮换。
    • 最小化暴露:在防火墙上严格限制访问 VPN 端口的源 IP(如果可能)。
    • 及时更新:定期运行 yum update 更新 StrongSwan 和系统,修复已知漏洞。
    • 禁用 IKEv1:如果仅需 IKEv2,在配置中明确使用 keyexchange=ikev2 并避免兼容 IKEv1 的配置,减少潜在攻击面。

验证连接与流量测试

  1. 启动/重启 StrongSwan:sudo systemctl start strongswan / sudo systemctl restart strongswan
  2. 检查状态:sudo ipsec status,成功连接应显示 INSTALLED, TUNNEL 状态。
  3. 从本端子网(leftsubnet)内的主机尝试 Ping 对端子网(rightsubnet)内的主机。
  4. 使用 tcpdump 在物理接口(如 eth0)抓包,应看到加密的 ESP 数据包,而非原始 ICMP 流量:sudo tcpdump -i eth0 -n esp

在 CentOS 7.4 上成功部署 IPSec VPN 为您的网络基础设施增添了关键的安全层,StrongSwan 的灵活性支持从简单的站点间连接到复杂的远程接入场景,实际部署中,证书认证带来的安全提升远超过其初始配置成本,值得投入,保持配置的简洁清晰并持续关注安全更新,是确保 VPN 网关长期稳定运行的核心,网络工程师的严谨配置与持续维护,是抵御潜在威胁的真正防线。

本站部分图片及内容来源网络,版权归原作者所有,转载目的为传递知识,不代表本站立场。若侵权或违规联系Email:zjx77377423@163.com 核实后第一时间删除。 转载请注明出处:https://blog.huochengrm.cn/pc/38885.html

分享:
扫描分享到社交APP
上一篇
下一篇
发表列表
请登录后评论...
游客游客
此处应有掌声~
评论列表

还没有评论,快来说点什么吧~