34.4.无线高级身份验证 ===================== FreeBSD 支持不同的无线网络连接方式。本节将介绍如何对无线网络进行高级身份验证。 要连接无线网络并进行基本身份验证,网络章中的\ `连接无线网络并进行身份验证 `__\ 一节将介绍如何操作。 34.4.1.使用 EAP-TLS 的 WPA -------------------------- 使用 WPA 的第二种方法是使用 802.1X 后端身份验证服务器。在这种情况下,WPA 被称为 WPA Enterprise,以将其与安全性较低的 WPA Personal 区分开来。WPA 企业版中的身份验证基于可扩展身份验证协议(EAP)。 EAP 不附带加密方法。相反,EAP 嵌入在加密隧道中。有许多 EAP 身份验证方法,但 EAP-TLS、EAP-TTLS 和 EAP-PEAP 是最常见的。 具有传输层安全性(EAP-TLS)的 EAP 是一种得到良好支持的无线身份验证协议,因为它是第一个获得 `Wi-Fi 联盟 `__\ 认证的 EAP 方法。EAP-TLS 需要三个证书才能运行:所有计算机上安装的证书颁发机构(CA)的证书、身份验证服务器的服务器证书以及每个无线客户端的一个客户端证书。在此 EAP 方法中,身份验证服务器和无线客户端都通过提供各自的证书来相互验证,然后验证这些证书是否由组织的 CA 签名。 与之前一样,配置是通过 **/etc/wpa_supplicant.conf** 完成的: .. raw:: latex \diilbookstyleinputcell .. code:: shell-session network={ ssid="freebsdap" ① proto=RSN ② key_mgmt=WPA-EAP ③ eap=TLS ④ identity="loader" ⑤ ca_cert="/etc/certs/cacert.pem" ⑥ client_cert="/etc/certs/clientcert.pem" ⑦ private_key="/etc/certs/clientkey.pem" ⑧ private_key_passwd="freebsdmallclient" ⑨ } ① 此字段指示了网络名称(SSID)。 ② 此示例使用了 RSN IEEE® 802.11i 协议,也称为 WPA2。 ③ 引用要使用的密钥管理协议。在此示例中,它是使用 EAP 身份验证的 WPA。 ④ 此字段指示连接的 EAP 方法。 ⑤ 字段包含了 EAP 的标识字符串。 ⑥ 字段指示了 CA 证书文件的路径名。需要此文件来验证服务器证书。 ⑦ 行提供了客户端证书文件的路径名。此证书对于网络的每个无线客户端都是唯一的。 ⑧ 字段是客户端证书私钥文件的路径名。 ⑨ 字段包含了私钥的密码。 然后,将以下行添加到 **/etc/rc.conf**\ : .. raw:: latex \diilbookstyleinputcell .. code:: shell-session wlans_ath0="wlan0" ifconfig_wlan0="WPA DHCP" 下一步是调出接口: .. raw:: latex \diilbookstyleinputcell .. code:: shell-session # service netif start Starting wpa_supplicant. DHCPREQUEST on wlan0 to 255.255.255.255 port 67 interval 7 DHCPREQUEST on wlan0 to 255.255.255.255 port 67 interval 15 DHCPACK from 192.168.0.20 bound to 192.168.0.254 -- renewal in 300 seconds. wlan0: flags=8843 mtu 1500 ether 00:11:95:d5:43:62 inet 192.168.0.254 netmask 0xffffff00 broadcast 192.168.0.255 media: IEEE 802.11 Wireless Ethernet DS/11Mbps mode 11g status: associated ssid freebsdap channel 1 (2412 Mhz 11g) bssid 00:11:95:c3:0d:ac country US ecm authmode WPA2/802.11i privacy ON deftxkey UNDEF AES-CCM 3:128-bit txpower 21.5 bmiss 7 scanvalid 450 bgscan bgscanintvl 300 bgscanidle 250 roam:rssi 7 roam:rate 5 protmode CTS wme burst roaming MANUAL 也可以使用 `wpa_supplicant(8) `__ 和 `ifconfig(8) `__ 手动调出接口。 34.4.2.使用 EAP-TTLS 的 WPA --------------------------- 使用 EAP-TLS,身份验证服务器和客户端都需要证书。使用 EAP-TTLS,客户端证书是可选的。此方法类似于 Web 服务器,即使访问者没有客户端证书,也会创建安全的 SSL 隧道。EAP-TTLS 使用加密的 TLS 隧道来安全传输身份验证数据。 所需的配置可以添加到 **/etc/wpa_supplicant.conf**\ : .. raw:: latex \diilbookstyleinputcell .. code:: shell-session network={ ssid="freebsdap" proto=RSN key_mgmt=WPA-EAP eap=TTLS ① identity="test" ② password="test" ③ ca_cert="/etc/certs/cacert.pem" ④ phase2="auth=MD5" ⑤ } ① 此字段指定连接的 EAP 方法。 ② 字段包含加密 TLS 隧道内用于 EAP 身份验证的身份字符串。 ③ 字段包含用于 EAP 身份验证的密码短语。 ④ 字段表示 CA 证书文件的路径名。需要此文件来验证服务器证书。 ⑤ 此字段指定加密的 TLS 隧道中使用的身份验证方法。在此示例中,使用具有 MD5-Challenge 的 EAP。“内部身份验证”阶段通常称为“阶段 2”。 接下来,将以下行添加到 **/etc/rc.conf** 中: .. raw:: latex \diilbookstyleinputcell .. code:: shell-session wlans_ath0="wlan0" ifconfig_wlan0="WPA DHCP" 下一步是调出接口: .. raw:: latex \diilbookstyleinputcell .. code:: shell-session # service netif start Starting wpa_supplicant. DHCPREQUEST on wlan0 to 255.255.255.255 port 67 interval 7 DHCPREQUEST on wlan0 to 255.255.255.255 port 67 interval 15 DHCPREQUEST on wlan0 to 255.255.255.255 port 67 interval 21 DHCPACK from 192.168.0.20 bound to 192.168.0.254 -- renewal in 300 seconds. wlan0: flags=8843 mtu 1500 ether 00:11:95:d5:43:62 inet 192.168.0.254 netmask 0xffffff00 broadcast 192.168.0.255 media: IEEE 802.11 Wireless Ethernet DS/11Mbps mode 11g status: associated ssid freebsdap channel 1 (2412 Mhz 11g) bssid 00:11:95:c3:0d:ac country US ecm authmode WPA2/802.11i privacy ON deftxkey UNDEF AES-CCM 3:128-bit txpower 21.5 bmiss 7 scanvalid 450 bgscan bgscanintvl 300 bgscanidle 250 roam:rssi 7 roam:rate 5 protmode CTS wme burst roaming MANUAL 34.4.3.使用 EAP-PEAP 的 WPA --------------------------- **注意** PEAPv0/EAP-MSCHAPv2 是最常见的 PEAP 方法。在本章中,术语 PEAP 用于指代该方法。 受保护的 EAP(PEAP)设计为 EAP-TTLS 的替代方案,是继 EAP-TLS 之后最常用的 EAP 标准。在具有混合操作系统的网络中,PEAP 应该是仅次于 EAP-TLS 最受支持的标准。 PEAP 类似于 EAP-TTLS,因为它使用服务器端证书通过在客户端和身份验证服务器之间创建加密的 TLS 隧道来对客户端进行身份验证,从而保护随后的身份验证信息交换。PEAP 身份验证与 EAP-TTLS 不同,因为它以明文形式广播用户名,并且仅在加密的 TLS 隧道中发送密码。EAP-TTLS 将对用户名和密码使用 TLS 隧道。 将以下行添加到 **/etc/wpa_supplicant.conf** 以配置 EAP-PEAP 相关设置: .. raw:: latex \diilbookstyleinputcell .. code:: shell-session network={ ssid="freebsdap" proto=RSN key_mgmt=WPA-EAP eap=PEAP ① identity="test" ② password="test" ③ ca_cert="/etc/certs/cacert.pem" ④ phase1="peaplabel=0" ⑤ phase2="auth=MSCHAPV2" ⑥ } ① 此字段指定了连接的 EAP 方法。 ② 字段包含了加密 TLS 隧道中 EAP 身份验证的标识字符串。 ③ 字段包含 EAP 身份验证的通行短语。 ④ 字段指示了 CA 证书文件的路径名。需要此文件来验证服务器证书。 ⑤ 此字段包含了身份验证的第一阶段(TLS 隧道)的参数。根据所使用的身份验证服务器,指定用于身份验证的特定标签。大多数情况下,标签将是“客户端 EAP 加密”,这是通过使用 ``peaplabel=0`` 设置的。更多信息可以在 `wpa_supplicant.conf(5) `__ 中找到。 ⑥ 此字段指定了加密的 TLS 隧道中使用的身份验证协议。在 PEAP 的情况下,它是 ``auth=MSCHAPV2``\ 。 将以下内容添加到 **/etc/rc.conf**\ : .. raw:: latex \diilbookstyleinputcell .. code:: shell-session wlans_ath0="wlan0" ifconfig_wlan0="WPA DHCP" 然后,调出界面: .. raw:: latex \diilbookstyleinputcell .. code:: shell-session # service netif start Starting wpa_supplicant. DHCPREQUEST on wlan0 to 255.255.255.255 port 67 interval 7 DHCPREQUEST on wlan0 to 255.255.255.255 port 67 interval 15 DHCPREQUEST on wlan0 to 255.255.255.255 port 67 interval 21 DHCPACK from 192.168.0.20 bound to 192.168.0.254 -- renewal in 300 seconds. wlan0: flags=8843 mtu 1500 ether 00:11:95:d5:43:62 inet 192.168.0.254 netmask 0xffffff00 broadcast 192.168.0.255 media: IEEE 802.11 Wireless Ethernet DS/11Mbps mode 11g status: associated ssid freebsdap channel 1 (2412 Mhz 11g) bssid 00:11:95:c3:0d:ac country US ecm authmode WPA2/802.11i privacy ON deftxkey UNDEF AES-CCM 3:128-bit txpower 21.5 bmiss 7 scanvalid 450 bgscan bgscanintvl 300 bgscanidle 250 roam:rssi 7 roam:rate 5 protmode CTS wme burst roaming MANUAL