使用 hostapd 轻松实现强 WiFi 加密
使用 WPA2 加密保护您的开放式 WiFi 访问
简介:
保持简单的无线安全性。hostapd 是 Host Access Point 守护进程,它提供了可靠的 WiFi 加密,可满足企业标准,无需承担运行 FreeRADIUS 的所有开销。了解有关此工具的更多信息,以及如何将其纳入自己的环境中。
发布日期:
2012 年 5 月 15 日
级别:
中级
原创语言:
英文
访问情况 :
529 次浏览
评论:
0 (
| 添加评论
- 登录)

平均分 (1个评分)
简介
hostapd 是 Host Access Point 守护进程,提供对基于 Linux 的无线接入点的强 WPA2
加密和身份验证。配置 hostapd 非常简单,它支持 WPA2-Personal 和 Enterprise,提供了对
WPA2-Personal 的独特修改,可让管理它变得更复杂或更简单。
WPA2-Personal 和 WPA2-Enterprise 之间的差距非常大。WPA2-Enterprise
提供了最强的无线安全性,但是管理它非常复杂,因为它需要一个带有服务器和客户端证书的公共密钥基础架构 (PKI) 和一个认证机构。大多数商店使用
FreeRADIUS 服务器来管理所有这些内容,当您有少量接入点需要管理,或者是想要为临时事件或项目设置服务器时,这非常耗时。
对于小商店而言,WPA2-Personal
应该非常简单或非常复杂,因为它对所有用户使用一个共享密钥,部署非常简单,但是却提出了持续安全和管理威胁。删除一个用户并没有什么好方法,但是无论何
时,只要更改了密钥,就必须为所有用户分发新密钥,您无法排除不需要密钥的用户,因为它们只需要一个内部的朋友接收新密钥即可。这更适用于半公共的热点;
例如,您想为访问您办公室的人员提供免费 WiFi,但并不是为附近所有吃白食的人提供免费 WiFi。
hostapd 为您提供了一个很好的中间平台,可为每个用户使用具有私有密钥的 WPA2-Personal,而不是为所有人使用一个共享密钥。这些密钥只是 hostapd
配置文件和客户端上的密码,因此 PKI 或单独的身份验证服务器不是必需的。
记住,只有客户端和无线路由器之间的通信是加密的,为了防止qie窃 ting听;没有提供端到端加密。端到端加密是 OpenVPN 或 SSH 隧道等软件的工作。
回页首
先决条件
您需要一个包含 hostapd
的无线接入点,或者需要允许您安装 hostapd 的 iw
命令,而您需要在 Linux PC 上提供 wpa_supplicant
,以便进行测试。您的接入点应支持 hostapd
0.6.8 或其更高版本(目前的 hostapd
版本是 0.7.3)。hostapd
V0.6.8 实现了 nl80211 驱动程序。在 Linux 内核中,mac80211 框架支持的所有无线网卡 (WIC) 都不需要特殊的驱动程序;它已经内置到了本机支持中。
nl80211 驱动程序将加密、身份验证、密钥旋转和其他接入点功能都移动到了用户空间中。如果您通常使用 iwconfig
命令,那么现在请开始使用 iw
命令,因为 iwconfig
无法在 V0.6.8 上工作。
DD-WRT 和 OpenWRT 是类似 Linksys WRT54G 类型的设备等消费级无线路由器的两个出色的开源固件置换(请参见 参考资料
部分),它们包含 hostapd
。它们都有广泛的数据库支持设备。我喜欢在 Soekris、PC Engines 和 MicroTik 单板计算机上使用删减版 Linux 创建自己的 WAP(请参见 参考资料
部分)。这些小插件很耐用,并且我拥有完全控制权和灵活性。
如果您想要构建自己的 WAP,最重要的组件是具有本机 Linux 内核支持的 WIC,它支持所有重要的 AP
模式。这种模式也称为接入点、主、基础架构模式,并且需要一个无线接入点。许多无线网络接口都不支持 AP 模式,仅支持删减到最少功能的客户端设备支持
AP 模式。我坚持使用 Atheros 无线接口,因为它们的功能全面,并且在其旧版 Madwifi 驱动程序和新 mac80211
驱动程序中都受到良好支持。
请避免在您的接入点上使用 ndiswrapper。当您没有其他选择时,这是让 WIC 工作的一种好方法,但是它同时也隐藏了大量问题,所以请坚持使用具有本机内核支持的优秀无线接口。
访问 Linux Wireless.org 设备数据库,查找受支持的接口,以及与无线驱动程序和用户空间命令相关的大量信息(请参见 参考资料
部分)。Linux Wireless 项目在清理和协调 Linux 无线堆栈方面表现非常出色。
在客户端上这样做更简单一些,因为几乎所有具有本机 Linux 内核支持的所有与 WiFi 兼容的 WIC 都可以连接到具有强 WPA2 安全性的接入点。Mac 和 Windows® 客户端还可以使用良好的基于 Linux 的接入点。
回页首
探索 WIC
您如何知道 WIC 支持哪些功能?iw
会告诉您。请参阅 “受支持的接口模式” 部分,了解它是否支持 AP 模式。清单 1
显示了一个示例。
清单 1. iw 清单
$ iw list
[...]
Supported interface modes:
*IBSS
*managed
*monitor
*AP
*AP/VLAN
|
本示例显示了一个支持 AP 模式和无线 VLAN 的 WIC。IBSS 是临时模式。监控模式用于探查无线网络。所有 WIC 都支持托管模式,它是接入点的客户端。
在使用 Madwifi 驱动程序的 Atheros 接口上,尝试使用 wlanconfig
。请参见 清单 2
。
清单 2. wlanconfig 的示例
# wlanconfig ath0 list caps
ath0=7782e40f<WEP,TKIP,AES,AES_CCM,HOSTAP,TXPMGT,SHSLOT,SHPREAMBLE,TKIPMIC,WPA1,WPA2,BURST
,WME>
|
这表明它支持 AP 模式,以及 WPA2 和强 AES-CCMP 密码。
另一种探查无线硬件的好方法是使用非常有用的 hwinfo
命令。它具有一个特殊的无线接口选项,会生成大量各式各样的信息,如 清单 3
中的代码段所示:
清单 3. WIC 的 hwinfo 数据示例
$ hwinfo --wlan
27: PCI 500.0: 0282 WLAN controller
Model: "Intel WLAN controller"
Driver: "iwlagn"
Driver Modules: "iwlagn"
WLAN encryption modes: WEP40
WEP104 TKIP CCMP
WLAN authentication modes: open sharedkey wpa-psk wpa-eap
Status: iwlagn is active
Driver Activation Cmd: "modprobe iwlagn"
|
hwinfo
命名驱动程序,说明支持的加密方式和设备的名称等内容。您还可以对 PCI 网络接口使用 lspci
,并对 USB 接口使用 lsusb
。此 WIC 将不会充当一个接入点,因为 hostapd
不支持 iwlagn 驱动程序,并且在所有情况下,它都不支持 AP 模式。(它是低预算的集成 Centrino 芯片的一部分。)
回页首
配置 hostapd
具体安装取决于您使用的 Linux 发行版,我将其留作您的家庭作业,您可以自行解决它。您首先要配置接入点上的 hostapd
,然后需要配置客户端 PC 上的 wpa_supplicant 以测试密钥交换。
如果您的接入点上没有 /etc/hostapd.conf 文件,那么请创建一个新文件。如果您的安装提供了该文件,那么请为它做一份备份,以便您参考,并使用一个空白的全新文件作为开始。清单 4
中的示例提供了您设置 WPA2-Personal 所需的一切内容:
清单 4. 示例 /etc/hostapd.conf
interface=ath0
bridge=br0
driver=nl80211
ssid=alracnet
auth_algs=1
wpa=1
wpa_psk_file=/etc/hostapd-psk
wpa_key_mgmt=WPA-PSK
wpa_pairwise=CCMP TKIP
rsn_pairwise=CCMP
|
您可能需要使用自己的值替换其中一些参数,比如 interface、driver 和 ssid。当您列出多个选项时,使用空格分隔它们,如 wpa_pairwise 行所示。下面是此示例的说明。
- Atheros 接口始终名为 athx,所有其他接口都是 wlanx。
- 如果您的接入点没有以太网桥接,可省略 bridge 一行的内容。
- 如果您使用的是
hostapd
0.6.8 或其更高版本以及具有 mac80211 支持的 WIC,那么驱动程序是 nl80211。惟一受支持的旧版驱动程序是 HostAP、madwifi 和 prism54。V0.6.8 之前的 hostapd
发行版支持 hostap、wired、madwifi、test、nl80211 和 bsd 驱动程序。
- ssid 是您想要 ssid 或接入点名称显示的内容。
- auth_algs=1 只支持 WPA2 身份验证算法。auth_algs=2 表示支持 WEP。永远不要使用有线等效加密
(wired equivalent privacy, WEP),因为它非常容易破解,并且多年前就已经被完全破解了。auth_algs=3
表示支持这两种方式。
- wpa=2 仅支持 WPA2。wpa=1 表示支持 WPA1,而 wpa=3 表示二者都支持。
- wpa_psk_file 指向包含共享密钥的文件。
- wpa_key_mgmt 指定您想支持的加密密钥算法。您的选择有 WPA-PSK、WPA-EAP 或两者均使用。PSK 是预共享密钥。EAP 是可扩展认证协议,是一个支持许多不同身份验证方法的框架。对于小的预共享密钥设置,不需要使用它。
- wpa_pairwise 和 rsn_pairwise 控制支持加密数据的密钥,您可以使用 CCMP、TKIP
或两者均使用。CCMP 比 TKIP 更强,因此您可以尝试仅支持 CCMP。Windows 客户端以繁琐和棘手的强安全性而闻名,因此您可能想让
TKIP 支持它们。
所有人都应该使用 WPA2;WEP (Wired Equivalent Privacy) 比较薄弱,没有什么用,而 WPA 几乎和
WEP 一样薄弱。自 2006 年以来,WPA2 支持已被强制添加到 WiFi 认证设备中,并且所有现代操作系统(包括 Windows XP
SP3)都支持它。倘若您必须替换一些 WIC,可以这样考虑,它比入侵后再清理要便宜得多。
接下来,创建一个包含通配符 MAC 地址和简单的纯文本测试密码(多达 63 个字符)的 /etc/hostapd-psk 文件:
00:00:00:00:00:00 testpassword
|
现在,转到您的 Linux 客户端 PC,为 wpa_supplicant 创建一个简单的配置文件,wpa_supplicant.conf 类似于 清单 5
中的示例。
清单 5. 示例 wpa_supplicant.conf
ctrl_interface=/var/run/supplicant
network={
ssid="alracnet"
psk="testpassword"
priority=5
}
|
ctrl_interface 允许您与命令行中的 wpa_supplicant 交互。使用您自己的 ssid 并测试纯文本密码,为它们加上双引号。优先级数字越高,连接到接入点的速度就越快。现在返回到您的接入点并在调试模式下启动 hostapd
:
# hostapd -d /etc/hostapd.conf
如果有配置错误,系统会报告这些错误并停止运行,否则,系统会生成许多行输出。按 CTRL+C 组合键停止它。当您找出错误时,可以将它配置为自动开始,您现在就可以这样做。
然后,在客户端上,如果正在使用无线连接,请终止无线连接,并将 wpa_supplicant 作为根命令运行:
# wpa_supplicant -i wlan0 -D wext -c wpa_supplicant.conf -d
-i 指定了无线接口,-D wext 是通用 wpa_supplicant 驱动程序,-c 指向配置文件,而 -d 表示调试模式。您将在接入点和客户端看到许多输出。当密钥交换成功后,它会快速完成,并且您将在客户端上看到与 清单 6
类似的信息。
清单 6. wpa_supplicant 的示例信息
EAPOL: SUPP_BE entering state IDLE
EAPOL authentication completed successfully
RTM_NEWLINK: operstate=1 ifi_flags=0x11043 ([UP][RUNNING][LOWER_UP])
RTM_NEWLINK, IFLA_IFNAME: Interface 'wlan0' added
|
它可以正常运行。按 CTRL+c 组合键终止 wpa_supplicant
会话。最后一步是创建私人用户密钥。首先在接入点创建它们,然后使用您喜爱的网络配置实用程序将它们复制到您的客户端。所有图形配置都非常类似:输入
SSID,选择 WPA2 Personal 身份验证,然后复制密钥。
回页首
添加用户、更强的密钥
现在是准备好一切并添加用户的时候了。从计算角度讲,纯文本密码非常昂贵,因为必须对其进行加密,因此 wpa_supplicant 随附提供了一个很好的命令来根据纯文本密码生成 256-位加密密钥,该命令是 wpa_passphrase。按照 清单 7
所示的方法使用它和 SSID:
清单 7. 使用 wpa_passphrase 创建用户
$ wpa_passphrase "alracnet" "greatbiglongpasswordbecauselongerisbetter"
network={
ssid="alracnet"
#psk="greatbiglongpasswordbecauselongerisbetter"
psk=a8ed05e96eed9df63bdc4edc77b965770d802e5b4389641cda22d0ecbbdcc71c
}
|
返回到 /etc/hostapd-psk,您现在可以开始添加用户。每个加密预共享密钥都必须与用户的 MAC 地址相匹配。清单 8
显示了一个示例。
清单 8. 示例 /etc/hostapd-psk
11:22:33:44:55:66 a8ed05e96eed9df63bdc4edc77b965770d802e5b4389641cda22d0ecbbdcc71c
22:33:44:55:66:77 eac8f79f06e167352c18c266ef56cc26982513dbb25ffa485923b07bed95757a
33:44:55:66:77:aa 550a613348ffe64698438a7e7bc319fc3f1f55f6f3facf43c15e11aaa954caf6
44:55:66:77:aa:bb ad328e5f2b16bdd9b44987793ed7e09e6d7cca3131bc2417d99e48720b4de58c
|
当您对一切正常运行感到满意时,您可能想要自动运行 hostapd
。可使用以下几种方法来达到此目的:创建一个
启动脚本,在启动机器时启动它,或者是在连接无线网络接口时启动它。在不同的 Linux
发行版中,有多种配置它的方法,因此我将它留作您的家庭作业。您也可能想要使用 -B 选项(这会将任务转化到后台进行)而不是 -d 选项进行调试。
关于出色 hostapd
守护进程的介绍到此为止。请参阅 参考资料
部分,了解有关的更多信息。
参考资料
学习
获得产品和技术
讨论
关于作者
Carla
Schroder 是管理 PC 方面的自由作家,她为小企业管理 Linux 和 Windows 系统,为真正需要的人们编写 how-to
教程。她喜爱计算机和高科技,并认为 Linux/开放源码/自由软件是世界上最好的游乐场。Carla 大约自 1994
年开始从事计算机和高技术工作;她的第一台 PC 是 Apple II。通过 DOS/Windows(从 3.1 到
XP),她逐步对计算机有了深入了解。自 1998 年起,她开始从事 Linux 方面的工作。Carla
是一个在中年通过自学成为计算机界领袖的生动的例子。
分享到:
相关推荐
Hostapd是一个开源软件,...总之,Hostapd 2.10是一个强大且灵活的工具,允许用户在Linux系统上轻松创建和管理WIFI热点。通过理解和掌握上述知识点,你可以更好地利用这个软件来搭建和维护安全、高效的无线网络环境。
WiFi-AP 库利用 Python 的强大功能,为开发者提供了易于使用的 API,可以轻松实现以下功能: 1. **配置接入点**:创建、修改或删除接入点的 SSID、密码、加密方式等参数。 2. **管理无线接口**:切换无线接口的工作...
本文将详细介绍关于"RTL8188EUS无线网卡驱动支持新内核"的相关知识点,包括RTL8188EUS无线网卡的特性、驱动程序的兼容性以及如何在Linux系统中利用master模式和hostapd共享WiFi热点。 1. **RTL8188EUS无线网卡** ...
55links友情链接网址跟踪器,放在桌面,每次直接打开就可以访问55links友情链接交易平台,方便快捷。
AB PLC例程代码项目案例 【备注】 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用!有问题请及时沟通交流。 2、适用人群:计算机相关专业(如计科、信息安全、数据科学与大数据技术、人工智能、通信、物联网、自动化、电子信息等)在校学生、专业老师或者企业员工下载使用。 3、用途:项目具有较高的学习借鉴价值,不仅适用于小白学习入门进阶。也可作为毕设项目、课程设计、大作业、初期项目立项演示等。 4、如果基础还行,或热爱钻研,亦可在此项目代码基础上进行修改添加,实现其他不同功能。 欢迎下载!欢迎交流学习!不清楚的可以私信问我!
moore_01_0909
FIBR English learning
AB PLC例程代码项目案例 【备注】 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用!有问题请及时沟通交流。 2、适用人群:计算机相关专业(如计科、信息安全、数据科学与大数据技术、人工智能、通信、物联网、自动化、电子信息等)在校学生、专业老师或者企业员工下载使用。 3、用途:项目具有较高的学习借鉴价值,不仅适用于小白学习入门进阶。也可作为毕设项目、课程设计、大作业、初期项目立项演示等。 4、如果基础还行,或热爱钻研,亦可在此项目代码基础上进行修改添加,实现其他不同功能。 欢迎下载!欢迎交流学习!不清楚的可以私信问我!
OIF_IEEE802.3_liaison_19OCt09
做网络安全FTP内容的实验必备
nagarajan_01_1107
AB PLC例程代码项目案例 【备注】 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用!有问题请及时沟通交流。 2、适用人群:计算机相关专业(如计科、信息安全、数据科学与大数据技术、人工智能、通信、物联网、自动化、电子信息等)在校学生、专业老师或者企业员工下载使用。 3、用途:项目具有较高的学习借鉴价值,不仅适用于小白学习入门进阶。也可作为毕设项目、课程设计、大作业、初期项目立项演示等。 4、如果基础还行,或热爱钻研,亦可在此项目代码基础上进行修改添加,实现其他不同功能。 欢迎下载!欢迎交流学习!不清楚的可以私信问我!
mellitz_3cd_01_0318
PyQt6实战派 配套代码
陕西省省级非物质文化遗产经纬度数据统计表 统计内容包含以下字段: 1. 项目名称 2. 遗产类别 3. 入选批次 4. 所属地区 5. 申报地区/单位 6. 地理经度 7. 地理纬度 该统计表系统记录了陕西省省级非物质文化遗产的地理空间信息,为文化遗产的数字化保护与研究工作提供了重要的数据支撑。
ran_3ck_02a_0918
毕业设计_基于springboot+vue开发的汽车租赁管理系统【源码+sql+可运行】【50308】.zip 全部代码均可运行,亲测可用,尽我所能,为你服务; 1.代码压缩包内容 代码:springboo后端代码+vue前端页面代码; 脚本:数据库SQL脚本 效果图:运行结果请看资源详情效果图 2.环境准备: - JDK1.8+ - maven3.6+ - nodejs14+ - mysql5.6+ - redis 3.技术栈 - 后台:springboot+mybatisPlus+Shiro - 前台:vue+iview+Vuex+Axios - 开发工具: idea、navicate 4.功能列表 - 系统设置:用户管理、角色管理、资源管理、系统日志 - 业务管理:汽车管理、客户管理、租赁订单 3.运行步骤: 步骤一:修改数据库连接信息(ip、port修改) 步骤二:找到启动类xxxApplication启动 4.若不会,可私信博主!!!
# Runcorder - 跑步训练管理系统 Runcorder 是一款专为跑步爱好者、马拉松运动员及高校体育生设计的本地化跑步训练管理工具,基于 Python 开发,结合 Tkinter 图形界面与强大的数据处理能力,为用户提供从训练记录到数据分析的全方位支持。无论是初学者还是专业跑者,Runcorder 都能帮助你科学规划训练、精准追踪进度,并通过可视化图表直观呈现训练成果,让你的跑步训练更智能、更高效! - **多用户管理**:支持创建、加载和删除用户档案,每个用户的数据独立存储,确保隐私与安全。 - **科学训练记录**:全维度记录跑步数据,包括日期、里程、配速、自评和晨跑标记,支持智能输入校验,避免数据错误。 - **多维数据分析**:通过动态可视化图表展示跑步里程趋势、平均配速曲线,支持自定义 Y 轴范围,帮助用户深入理解训练效果。 - **高阶功能**:提供 4 种科学训练模式(有氧/无氧/混合),支持历史记录修改与删除,数据以 JSON 格式持久化存储,跨平台兼容。
paatzsch_01_0708
AnythingLLM是一个全栈应用程序,您可以使用流行的开源大语言模型,再结合向量数据库解决方案构建个人本地AI大模型知识库