Linux WPA/WPA2/WPA3/IEEE 802.1X Supplicant

Wi-Fi 中的 WPAWi-Fi Protected Access 的缩写,意为 Wi-Fi 保护访问。它是一种用于保护无线网络安全的协议,旨在替代早期的 WEP(Wired Equivalent Privacy) 协议,提供更强的安全性。

WPA 的背景

WEP 的缺陷

WEP 是 Wi-Fi 最早的安全协议,但由于其加密算法(RC4)和密钥管理机制存在严重漏洞,容易被破解。

随着技术的发展,WEP 已经不再安全。

WPA 的推出

WPA 由 Wi-Fi 联盟(Wi-Fi Alliance)于 2003 年推出,旨在解决 WEP 的安全问题。

WPA 基于 IEEE 802.11i 标准,提供了更强的加密和认证机制。

WPA 的主要特点

加密算法

WPA 使用 TKIP(Temporal Key Integrity Protocol) 加密协议,相比 WEP 的 RC4 更安全。

TKIP 动态生成密钥,并定期更换密钥,防止被破解。

认证机制

WPA 支持两种认证方式:

WPA-PSK(Pre-Shared Key):适用于家庭和小型办公室,用户需要输入预共享密钥(密码)来连接网络。

WPA-Enterprise:适用于企业环境,使用 RADIUS 服务器进行认证,支持更复杂的用户管理。

完整性校验

WPA 引入了 MIC(Message Integrity Check),用于检测数据包是否被篡改。

WPA 的版本

WPA 有两个主要版本:WPAWPA2,以及最新的 WPA3

WPA(WPA1)

基于 TKIP 加密,解决了 WEP 的安全问题,但仍存在一些漏洞。

目前已被 WPA2 取代。

WPA2

引入了更强大的 AES(Advanced Encryption Standard) 加密算法,取代了 TKIP。

是目前最广泛使用的 Wi-Fi 安全协议。

支持 CCMP(Counter Mode Cipher Block Chaining Message Authentication Code Protocol),提供更高的安全性。

WPA3

于 2018 年推出,进一步增强了安全性。

主要改进:

更强的加密:使用 192 位加密(WPA3-Enterprise)。

防止暴力破解:即使密码简单,也能抵御字典攻击。

前向保密:即使密码泄露,之前的通信记录也无法被解密。

简化设备连接:支持 Wi-Fi Easy Connect(通过二维码等方式快速连接设备)。

WPA 的使用场景

家庭和小型办公室

使用 WPA2-PSKWPA3-PSK,设置一个预共享密钥(密码)即可。

企业网络

使用 WPA2-EnterpriseWPA3-Enterprise,结合 RADIUS 服务器进行用户认证。

WPA 的安全性建议

使用强密码

密码应包含大小写字母、数字和特殊符号,避免使用常见词汇。

启用 WPA2 或 WPA3

如果设备支持,优先使用 WPA3,否则使用 WPA2。

禁用 WEP 和 WPA1

WEP 和 WPA1 已不安全,建议禁用。

定期更新路由器固件

确保路由器固件是最新版本,以修复已知漏洞。

总结

WPA 是 Wi-Fi 的安全协议,用于保护无线网络免受未经授权的访问。

WPA2 是目前最常用的版本,使用 AES 加密,安全性较高。

WPA3 是最新版本,提供了更强的安全性和便利性。

为了确保网络安全,建议使用 WPA2 或 WPA3,并设置强密码。

WPA(Wi-Fi Protected Access)和WAP(Wireless Application Protocol)是两个截然不同的概念,它们各自在网络安全领域扮演着重要的角色。以下是对两者的详细比较:

一、定义与功能

WPA:是一种用于保护无线网络连接的计算设备内部安全标准,由Wi-Fi联盟开发,旨在替代原先的无线安全标准WEP,提供数据加密和用户认证等安全功能。

WAP:即无线应用协议,是一种实现移动电话等移动终端与互联网之间进行通讯的开放性全球标准,主要用于优化现有的无线网络应用环境,使无线设备可以更方便地访问互联网及收发电子邮件等。

二、应用场景

WPA:主要应用于家庭、企业等各类Wi-Fi网络环境中,保护无线网络的安全性,防止未经授权的访问和窃听。

WAP:广泛应用于移动互联网领域,如手机浏览器访问网站、收发邮件、即时通讯等,为移动用户提供便捷的互联网服务。

三、安全性

WPA:采用高级加密标准(AES)和动态密钥管理等技术,提供较强的加密和认证机制,有效防止网络攻击和窃听。

WAP:本身并不直接提供安全性保障,但可通过与WPA等安全协议结合使用,提高无线网络的安全性。

四、兼容性

WPA:与大多数现代Wi-Fi设备兼容,包括路由器、网卡等。

WAP:作为一种开放的标准,具有广泛的兼容性,支持多种类型的移动设备和网络环境。

综上所述,WPA和WAP在定义、功能、应用场景、安全性以及兼容性方面均存在显著差异。WPA专注于提升无线网络的安全性,而WAP则致力于优化无线网络的应用体验。两者各有侧重,共同推动着无线网络技术的发展和应用。

另外,还有个wapi,是中国自主研发的无线技术标准,在国内得到了一定程度的推广和应用。然而,由于历史原因和市场惯性等因素,其在全球市场上的认可度相对较低。

 

参考:wpa_supplicant 终端连接 wifi — Linux latest 文档 (gnu-linux.readthedocs.io)

为了管理无线网卡驱动,并且能正常连接到无线网络,你需要一个无线连接管理工具。

如何选择一个最佳的管理方法,将依赖于下面几个因素:

  • 是否使用加密及使用加密的类型

  • 是否经常切换不同网络(如笔记本电脑)

下表按照加密和管理方式分类,列出了管理无线网络的工具。 虽然还有其他办法,但这些是最常用的。

iwconfig是啥?

参考:WIFI实践入门--基本命令--iwconfig-CSDN博客

Iwconfig类似于ifconfig,但专门用于无线接口。它用于设置特定于无线操作的网络接口的参数(例如:频率)。还可以使用Iwconfig来显示这些参数和无线统计信息(从/proc/net/wireless中提取)。所有这些参数和统计数据都依赖于设备。每个驱动程序根据硬件支持只提供其中的一部分,值的范围可能会改变。

现在大部分无线网络使用 WPA/WPA2 加密,最少需要配置 wpa_supplicant 才能连接网络。另外,wpa_supplicant 目前只能连接到已经配置好 ESSID 的无线网络。

wpa_supplicant简介

官网:Linux WPA Supplicant (IEEE 802.1X, WPA, WPA2, WPA3, RSN, IEEE 802.11i) (w1.fi)

wpa_supplicant is a WPA Supplicant for Linux, BSD, Mac OS X, and Windows with support for WPA, WPA2 (IEEE 802.11i / RSN), and WPA3. It is suitable for both desktop/laptop computers and embedded systems. Supplicant is the IEEE 802.1X/WPA component that is used in the client stations. It implements key negotiation with a WPA Authenticator and it controls the roaming and IEEE 802.11 authentication/association of the wlan driver.

wpa_supplicant is designed to be a "daemon" program that runs in the background and acts as the backend component controlling the wireless connection. wpa_supplicant supports separate frontend programs and a text-based frontend (wpa_cli) and a GUI (wpa_gui) are included with wpa_supplicant.

wpa_supplicant是Linux BSD, Mac OSX和Windows的WPA的服务,支持WPA和WPA2(IEEE 802.11i/RSN),它适用于台式机/笔记本和嵌入式系统,Supplicant是在客户端站中使用的IEEE 802.1X/WPA组件,它使用WPA身份验证器实现秘钥协商,并控制漫游和IEEEE802.11认证/关联的WLAN驱动程序。 wpa_supplicant被设计成一个在后台运行的"守护进程"程序,并作为控制无线连接的后端组件,wpa_supplicant支持单独的前端程序,包含基于文本的前端(wpa_cli)和GUI(wpa_gui)。

本文基于的下载安装等信息如下所示:

Installation Environment :  Ubuntu 16.04 
Download (HTTP): https://w1.fi/releases/wpa_supplicant-2.6.tar.gz
Download MD5 sum: 091569eb4440b7d7f2b4276dbfc03c3c
Download size: 2.6 MB
Estimated disk space required: 36 MB
Estimated build time: 0.4 SBU (includes optional gui)

由于wpa_supplicant 已经许久不更新,配置的方式和通用的开源库不一样。

更多参考:玩转「Wi-Fi」系列之wpa_supplicant 介绍(七)-腾讯云开发者社区-腾讯云 (tencent.com)

如图所示wpa_supplicant的迭代版本 ,最新的版本为2016年10月的2.6版本

  • 绿色背景 = 稳定版本

  • 白色背景 = 开发版本

  • 版本后的字母(发布中包含的内容)

    • d = Host AP driver

    • u = Host AP driver utilities

    • h = hostapd

    • w = wpa_supplicant

第三方依赖

wpa_supplicant 依赖于 openssl , libnl , 需要提前进行安装。安装方法自行百度

配置

由于wpa_supplicant 已经许久不更新,配置的方式和通用的开源库不一样。

  • wpa_supplicant目录中cp defconfig .config 拷贝生成编译配置

  • 配置文件中可以针对功能进行裁剪,适应更多的平台, 如指定openssl 库的路径, 配置libnl的版本

# Uncomment following two lines and fix the paths if you have installed OpenSSL
# or GnuTLS in non-default location
#CFLAGS += -I/usr/local/openssl/include
#LIBS += -L/usr/local/openssl/lib

# Use libnl v2.0 (or 3.0) libraries.
#CONFIG_LIBNL20=y

# Use libnl 3.2 libraries (if this is selected, CONFIG_LIBNL20 is ignored)
#CONFIG_LIBNL32=y
  • 指定编译器,默认的编译器为GCC,如需要交叉编译需要修改Makefile

CC=arm-linux-gnueabihf-gcc

  • 指定安装路径,默认的安装路径为/usr/local/目录下,交叉编译的时候需要指定路径来存放,方便打包制作文件系统,同时也不会影响系统,指定路径需要修改Makefile中

  20 export LIBDIR ?= /usr/local/lib/
  21 export INCDIR ?= /usr/local/include/
  22 export BINDIR ?= /usr/local/sbin/

安装

前面的配置完成之后,执行make编译,make install 进行安装 最终生成的二进制可执行文件: wpa_supplicant 和wpa_cli 。

启动wpa_supplicant应用

wpa_supplicant是一个连接、配置WiFi的工具,它主要包含wpa_supplicant与wpa_cli两个程序。 可以通过wpa_cli来进行WiFi的配置与连接,前提要保证wpa_supplicant正常启动。

相当于wpa_supplicant 是服务端,wpa_cli 是客户端。

  • 启动wpa_supplicant应用

wpa_supplicant -D nl80211 -i wlan0 -c /etc/wpa_supplicant.conf -B

  • -D 驱动程序名称(可以是多个驱动程序:nl80211,wext)

  • -i 接口名称

  • -c 指定启动配置文件,配置文件的模板路径为 wpa_supplicant/wpa_supplicant.conf

  • -B 在后台运行守护进程

配置文件 ​/etc/wpa_supplicant.conf​文件里,添加下面代码:

ctrl_interface=/var/run/wpa_supplicant // 
update_config=1  // 强制更新覆盖配置 

  • ctrl_interface指向的是一个目录,在这个目录中默认会生成一个文件/var/run/wpa_supplicant/wlan0,这是local socket address,相当于UNIX Domain Socket,程序和后台程序wpa_supplicant进行通信(其实是wpa_supplicant作为后台服务程序是通过本地socket和客户端进行通信的)

  • update_config = 1时会在(客户端发送SAVE_CONFIG命令)更新这个配置文件。

其他还有:

  • priority 网络连接优先级

  • ap_scan=1 AP扫描/选择,默认情况下,wpa_supplicant请求驱动程序执行AP扫描,然后 使用扫描结果选择合适的AP。 ap_scan = 1是使用nl80211进行优化的工作。 为了找到使用隐藏SSID的网络,网络块中的scan_ssid = 1可以 与nl80211一起使用。

  • network 选项, 配网成功之后,配置文件中会有一个network选项, 包括SSID,PSK,KEY 等信息

network={
    ssid="simple"
    psk="very secret passphrase"
    priority=5
}

更多待补充 

启动wpa_cli应用

wpa_cli 有命令和界面交互的方式进行操作

本文讲述的是命令的方式

一些常用的命令示例

wpa_cli -i wlan0 scan               //搜索附件wifi热点
wpa_cli -i wlan0 scan_result        //显示搜索wifi热点
wpa_cli -i wlan0 status              //当前WPA/EAPOL/EAP通讯状态
wpa_cli -i wlan0 ping                //pings wpa_supplicant

  • 添加新的连接

wpa_cli -i wlan0 add_network   //添加一个网络连接,会返回<network id> 
wpa_cli set_network <network id>  ssid '"name"'  //ssid名称 
wpa_cli set_network <network id>  psk '“psk”'  //密码
wpa_cli set_network <network id>  scan_ssid 1   
wpa_cli set_network <network id>  priority  1   //优先级

  • 添加无密码的连接

//连接无密码的ssid 字段,需要添加key_mgmt=NONE去连接这个网络
network={
        key_mgmt=NONE
        ssid="wifi-name"}
set_network num ssid "wifi-name"
set_network num key_mgmt NONE

  • 保存连接

wpa_cli -i wlan0 save_config   //信息保存到默认的配置文件中,前面提到的/etc/wpa_supplicant.conf

  • 断开连接

wpa_cli -i wlan0 disable_n
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值