20.3. 配置 FreeRADIUS ,以使用 EAP 安全地验证网络客户端


FreeRADIUS 支持通过不同的扩展验证协议(EAP)的方法。但是,对于受支持的安全场景,请使用 EAP-TTLS (隧道传输层安全)。

使用 EAP-TTLS ,客户端使用安全 TLS 连接作为外部身份验证协议来设置隧道。然后,内部身份验证使用 LDAP 向身份管理进行身份验证。要使用 EAP-TTLS,您需要一个 TLS 服务器证书。

注意

默认的 FreeRADIUS 配置文件充当文档,并描述了所有参数和指令。如果要禁用某些特性,请注释掉它们,而不是删除配置文件中的相应部分。这可让您保留配置文件和包含的文档的结构。

先决条件

  • 您已安装了 freeradiusfreeradius-ldap 软件包。
  • /etc/raddb/ 目录中的配置文件保持不变,并由 freeradius 软件包提供。
  • 主机已在 Red Hat Identity Management (IdM)域中注册。

流程

  1. 创建一个私钥并从 IdM 请求一个证书:

    # ipa-getcert request -w -k /etc/pki/tls/private/radius.key -f /etc/pki/tls/certs/radius.pem -o "root:radiusd" -m 640 -O "root:radiusd" -M 640 -T caIPAserviceCert -C 'systemctl restart radiusd.service' -N freeradius.idm.example.com -D freeradius.idm.example.com -K radius/freeradius.idm.example.com
    Copy to Clipboard Toggle word wrap

    certmonger 服务将私钥存储在 /etc/pki/tls/private/radius.key 文件中,将证书存储在 /etc/pki/tls/certs/radius.pem 文件中,并设置安全权限。另外,certmonger 将监控证书,在证书过期前续订证书,并在证书续订后重启 radiusd 服务。

  2. 验证 CA 是否已成功发布证书:

    # ipa-getcert list -f /etc/pki/tls/certs/radius.pem
    ...
    Number of certificates and requests being tracked: 1.
    Request ID '20240918142211':
            status: MONITORING
            stuck: no
            key pair storage: type=FILE,location='/etc/pki/tls/private/radius.key'
            certificate: type=FILE,location='/etc/pki/tls/certs/radius.crt'
            ...
    Copy to Clipboard Toggle word wrap
  3. 使用 Diffie-Hellman (DH)参数创建 /etc/raddb/certs/dh 文件。例如,要创建带有 2048 位素数的 DH 文件,请输入:

    # openssl dhparam -out /etc/raddb/certs/dh 2048
    Copy to Clipboard Toggle word wrap

    为了安全起见,请不要使用小于 2048 位素数的 DH 文件。根据位数,文件的创建可能需要几分钟。

  4. 编辑 /etc/raddb/mods-available/eap 文件:

    1. tls-config tls-common 指令中配置与 TLS 相关的设置:

      eap {
          ...
          tls-config tls-common {
              ...
      	private_key_file = /etc/pki/tls/private/radius.key
      	certificate_file = /etc/pki/tls/certs/radius.pem
      	ca_file = /etc/ipa/ca.crt
              ...
          }
      }
      Copy to Clipboard Toggle word wrap
    2. eap 指令中的 default_eap_type 参数设为 ttls

      eap {
          ...
          default_eap_type = ttls
          ...
      }
      Copy to Clipboard Toggle word wrap
    3. 注释掉 md5 指令,以禁用不安全的 EAP-MD5 身份验证方法:

      eap {
          ...
          # md5 {
          # }
          ...
      }
      Copy to Clipboard Toggle word wrap

      请注意,在默认的配置文件中,其他不安全的 EAP 身份验证方法默认被注释掉了。

  5. 编辑 /etc/raddb/sites-available/default 文件,然后注释掉 eap 以外的所有身份验证方法:

    authenticate {
        ...
        # Auth-Type PAP {
        #     pap
        # }
    
        # Auth-Type CHAP {
        #     chap
        # }
    
        # Auth-Type MS-CHAP {
        #     mschap
        # }
    
        # mschap
    
        # digest
        ...
    }
    Copy to Clipboard Toggle word wrap

    这将只对外部身份验证启用了 EAP,并禁用了纯文本身份验证方法。

  6. 编辑 /etc/raddb/sites-available/inner-tunnel 文件,并进行以下更改:

    1. 注释掉 -ldap 条目,并将 ldap 模块配置添加到 authorize 指令中:

      authorize {
          ...
      
          #-ldap
          ldap
          if ((ok || updated) && User-Password) {
              update {
                  control:Auth-Type := ldap
              }
          }
      
          ...
      }
      Copy to Clipboard Toggle word wrap
    2. authenticate 指令中取消 LDAP 身份验证类型的注释:

      authenticate {
          Auth-Type LDAP {
              ldap
          }
      }
      Copy to Clipboard Toggle word wrap
  7. 启用 ldap 模块:

    # ln -s /etc/raddb/mods-available/ldap /etc/raddb/mods-enabled/ldap
    Copy to Clipboard Toggle word wrap
  8. 编辑 /etc/raddb/mods-available/ldap 文件,并进行以下更改:

    1. ldap 指令中,设置 IdM LDAP 服务器 URL 和基本可分辨名称(DN):

      ldap {
          ...
          server = 'ldaps://idm_server.idm.example.com'
          base_dn = 'cn=users,cn=accounts,dc=idm,dc=example,dc=com'
          ...
      }
      Copy to Clipboard Toggle word wrap

      在服务器 URL 中指定 ldaps 协议,以便在 FreeRADIUS 主机和 IdM 服务器之间使用 TLS 加密的连接。

    2. ldap 指令中,启用 IdM LDAP 服务器的 TLS 证书验证:

      tls {
          ...
              require_cert = 'demand'
          ...
      }
      Copy to Clipboard Toggle word wrap
  9. 编辑 /etc/raddb/clients.conf 文件:

    1. localhostlocalhost_ipv6 客户端指令中设置安全密码:

      client localhost {
          ipaddr = 127.0.0.1
          ...
          secret = localhost_client_password
          ...
      }
      
      client localhost_ipv6 {
          ipv6addr = ::1
          secret = localhost_client_password
      }
      Copy to Clipboard Toggle word wrap
    2. 为网络验证器添加客户端指令:

      client hostapd.example.org {
          ipaddr = 192.0.2.2/32
          secret = hostapd_client_password
      }
      Copy to Clipboard Toggle word wrap
    3. 可选:如果其他主机也能够访问 FreeRADIUS 服务,也为它们添加客户端指令,例如:

      client <hostname_or_description> {
          ipaddr = <IP_address_or_range>
          secret = <client_password>
      }
      Copy to Clipboard Toggle word wrap

      ipaddr 参数接受 IPv4 和 IPv6 地址,您可以使用可选的无类别域间路由(CIDR)表示法来指定范围。但是,在这个参数中您只能设置一个值。例如,要授予对 IPv4 和 IPv6 地址的访问,您必须添加两个客户端指令。

      为客户端指令使用一个描述性名称,如主机名或一个描述 IP 范围在哪里使用的词语。

  10. 验证配置文件:

    # radiusd -XC
    ...
    Configuration appears to be OK
    Copy to Clipboard Toggle word wrap
  11. firewalld 服务中打开 RADIUS 端口:

    # firewall-cmd --permanent --add-service=radius
    # firewall-cmd --reload
    Copy to Clipboard Toggle word wrap
  12. 启用并启动 radiusd 服务:

    # systemctl enable --now radiusd
    Copy to Clipboard Toggle word wrap

故障排除

  • 如果 radiusd 服务无法启动,请验证您是否可以解析 IdM 服务器主机名:

    # host -v idm_server.idm.example.com
    Copy to Clipboard Toggle word wrap
  • 对于其他问题,请在 debug 模式下运行 radiusd

    1. 停止 radiusd 服务:

      # systemctl stop radiusd
      Copy to Clipboard Toggle word wrap
    2. 以 debug 模式启动该服务:

      # radiusd -X
      ...
      Ready to process requests
      Copy to Clipboard Toggle word wrap
    3. 在 FreeRADIUS 主机上执行验证测试,如 验证 部分中所述。

后续步骤

  • 禁用不再需要的身份验证方法,以及您不使用的其他功能。
返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。 了解我们当前的更新.

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

Theme

© 2025 Red Hat