Red Hat Training

A Red Hat training course is available for RHEL 8

第 5 章 使用 MACsec 加密同一物理网络中的第 2 层流量

这部分论述了如何为以太网链路中的所有流量配置 MACsec 以安全通信。

介质访问控制安全(MACsec)是一个第 2 层协议,可通过以太网链接保护不同类型的流量类型,包括:

  • 动态主机配置协议(DHCP)
  • 地址解析协议(ARP)
  • 互联网协议版本 4 / 6(IPv4 / IPv6)和
  • 任何使用 IP的流量(如 TCP 或 UDP)

MACsec 默认使用 GCM-AES-128 算法加密并验证 LAN 中的所有流量,并使用预共享密钥在参与者主机之间建立连接。如果要更改预共享密钥,您需要更新网络中使用 MACsec 的所有主机上的 NM 配置。

MACsec 连接将以太网设备(如以太网网卡、VLAN 或隧道设备)用作父设备。您只能在 MACsec 设备上设置 IP 配置,以仅使用加密连接与其他主机通信,也可以在父设备中设置 IP 配置。在后者的情况下,您可以使用父设备使用未加密连接和 MACsec 设备加密连接与其他主机通信。

macsec 不需要任何特殊硬件。例如,您可以使用任何交换机,除非您只想加密主机和交换机之间的流量。在这种情况下,交换机还必须支持 MACsec。

换句话说,有两种常用方法来配置 MACsec:

  • 主机到主机,和
  • 主机到交换机,然后交换机到其他主机
重要

您只能在相同(物理或虚拟)LAN 的主机间使用 MACsec。

下例演示了如何使用预共享密钥在 2 个主机之间配置 MACsec。

5.1. 使用 nmcli 配置 MACsec 连接

您可以使用 nmcli 工具将以太网接口配置为使用 MACsec。这个步骤描述了如何创建使用以太网接口加密网络流量的 MACsec 连接。

在所有应在此 MACsec 保护的网络中进行通信的所有主机上运行此步骤。

流程

在主机 A 中:

  • 在您配置 MACsec 的第一个主机上,为预共享密钥创建连接关联密钥(CAK)和连接关联密钥名称(CKN):

    1. 创建 16 字节十六进制 CAK:

      dd if=/dev/urandom count=16 bs=1 2> /dev/null | hexdump -e '1/2 "%04x"'
      50b71a8ef0bd5751ea76de6d6c98c03a
    2. 创建 32 字节十六进制 CKN:

      dd if=/dev/urandom count=32 bs=1 2> /dev/null | hexdump -e '1/2 "%04x"'
      f2b4297d39da7330910a74abc0449feb45b5c0b9fc23df1430e1898fcf1c4550

在主机 A 和 B 中:

  1. 创建 MACsec 连接:

    # nmcli connection add type macsec con-name macsec0 ifname macsec0 connection.autoconnect yes macsec.parent enp1s0 macsec.mode psk macsec.mka-cak 50b71a8ef0bd5751ea76de6d6c98c03a  macsec.mka-ckn f2b4297d39da7330910a7abc0449feb45b5c0b9fc23df1430e1898fcf1c4550

    使用 macsec. mka-cak 和 macsec.mka- ckn 参数中在上一步中生成的 CAK 和 CKN。在 MACsec-protected 网络的每个主机上,这些值必须相同。

  2. 配置 MACsec 连接中的 IP 设置。

    1. 配置 IPv4 设置。例如,要为 macsec0 连接设置静态 IPv4 地址、网络掩码、默认网关和 DNS 服务器,请输入:

      # nmcli connection modify macsec0 ipv4.method manual ipv4.addresses '192.0.2.1/24' ipv4.gateway '192.0.2.254' ipv4.dns '192.0.2.253'
    2. 配置 IPv6 设置。例如,要为 macsec0 连接设置静态 IPv6 地址、网络掩码、默认网关和 DNS 服务器,请输入:

      # nmcli connection modify macsec0 ipv6.method manual ipv6.addresses '2001:db8:1::1/32' ipv6.gateway '2001:db8:1::fffe' ipv6.dns '2001:db8:1::fffd'
  3. 激活连接:

    # nmcli connection up macsec0

验证步骤

  1. 要验证流量是否已加密,请输入:

    tcpdump -nn -i enp1s0
  2. 要查看未加密的流量,请输入:

    tcpdump -nn -i macsec0
  3. 显示 MACsec 统计数据:

    # ip macsec show
  4. 针对每种保护类型显示单个计数器:仅完整性(加密关闭)和加密(加密)

    # ip -s macsec show