`

使用 hostapd 轻松实现强 WiFi 加密

 
阅读更多

使用 hostapd 轻松实现强 WiFi 加密

使用 WPA2 加密保护您的开放式 WiFi 访问

Carla Schroder , Linux 管理员和作家, Tux Computing

简介:  保持简单的无线安全性。hostapd 是 Host Access Point 守护进程,它提供了可靠的 WiFi 加密,可满足企业标准,无需承担运行 FreeRADIUS 的所有开销。了解有关此工具的更多信息,以及如何将其纳入自己的环境中。

发布日期:  2012 年 5 月 15 日
级别:  中级 原创语言:  英文
访问情况 :  529 次浏览
评论:  0 (查看  | 添加评论 - 登录)

平均分 5 星 共 1 个评分 平均分 (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 是一个在中年通过自学成为计算机界领袖的生动的例子。

分享到:
评论

相关推荐

    linux wifi工具hostapd编译方法.doc

    hostapd 是一个功能强大的 WiFi 工具,能够在 Linux 操作系统上构建无线接入点,支持 IEEE 802.11 协议和 IEEE 802.1X/WPA/WPA2/EAP/RADIUS 加密。为了编译 hostapd,需要依赖 libnl 和openssl 库,本文将详细介绍 ...

    WIFI Host AP 功能使用详解.pdf

    ### WIFI Host AP 功能使用详解 #### 一、概述 WIFI Host AP 是指在Linux系统中通过软件实现的一种无线接入点(Access Point,简称AP)功能,它可以让其他无线设备连接到自己的无线网络上,并通过该主机共享互联网...

    hostapd强制40M频宽修改方法

    在某些情况下,我们可能需要强制hostapd使用40MHz频宽,以优化无线网络性能。下面将详细讲解如何进行这个修改。 首先,理解频宽设置的背景知识。Wi-Fi工作在不同的频道(Channels)上,每个频道有一定的带宽,如20...

    hostapd-2.10源码

    Hostapd是一个开源软件,...总之,Hostapd 2.10是一个强大且灵活的工具,允许用户在Linux系统上轻松创建和管理WIFI热点。通过理解和掌握上述知识点,你可以更好地利用这个软件来搭建和维护安全、高效的无线网络环境。

    基于Hostapd完成EAP-SIM方式Wifi连接

    【基于Hostapd完成EAP-SIM方式Wifi连接】的知识点详解 EAP-SIM(Extensible Authentication Protocol - Subscriber Identity Module)是一种用于无线网络连接的安全认证协议,它结合了GSM-SIM卡的安全特性,提供了...

    Hostapd Android

    5. **服务与权限**:创建一个Android服务来启动和管理Hostapd,同时确保服务有足够的权限(例如,使用`android.permission.ACCESS_WIFI_STATE`和`android.permission.CHANGE_WIFI_STATE`)。 6. **配置Hostapd**:...

    hostapd-master.zip

    Hostapd的工作原理是这样的:当一个无线设备尝试连接到运行Hostapd的主机时,Hostapd会处理认证、授权和加密等过程,确保只有合法的设备能够接入。Hostapd支持多种无线协议,包括IEEE 802.11a/b/g/n/ac等,以及安全...

    使用hostapd 制作soft ap

    一次性满足利用hostapd制作soft ap的所有软件,内容包括libnl,openssl,hostapd,dhcp。wpa_supplicant,并且有多个版本,满足不同系统支持的需要。本人搞了好长时间,才收集到这些合适的版本,亲测可用。

    hostapd源码

    - 配置hostapd:修改`/etc/hostapd/hostapd.conf`配置文件,设置SSID、加密方式、频道等参数。 - 启动hostapd:通过`sudo hostapd /etc/hostapd/hostapd.conf`启动服务,同时确保wlan接口已经正确配置为AP模式。 ...

    hostapd-1.0.tar.gz

    1. **无线网卡驱动**:确保你使用的无线网卡驱动与Hostapd兼容,有些驱动可能需要额外的设置或补丁。 2. **安全设置**:不要忽视网络安全,设置强密码并启用WPA2,防止未授权访问。 3. **日志监控**:启用日志功能,...

    hostapd移植超全详细资料

    通过以上步骤,你将能够成功地在你的系统上移植并运行Hostapd,实现无线网络共享。请根据实际情况调整配置文件和命令,确保与你的硬件和网络环境相适应。提供的“hostapd移植资源”压缩包将包含所有必要的文档和教程...

    hostapd_0.6.9.orig.tar.gz

    - **协议实现**:`hostapd` 实现了802.11系列标准,包括802.11i(WPA/WPA2安全机制)、802.11g(54Mbps传输速率)和802.11n(MIMO技术,高速率)等。通过阅读 `ieee802_11.c/h`,我们可以理解如何处理帧交换、状态机...

    hostapd-2.9-source.zip

    使用命令行工具启动和停止hostapd服务,例如在Linux系统中,可以使用`sudo systemctl start hostapd`和`sudo systemctl stop hostapd`。为了使Hostapd在系统启动时自动运行,还需要配置系统服务。 6. **无线网络...

    CentOs6.4使用hostapd源码创建AP热点

    然而,通过使用hostapd,一个用于创建无线接入点的软件,以及dhcp来处理IP地址的自动分配,我们可以构建一个基本的AP热点。本文将详细介绍如何在CentOS 6.4上使用hostapd创建AP热点,并提供必要的配置步骤。 首先,...

    hostapd_2.8.tar.gz

    8. **安全与性能**:使用Hostapd时,必须注意网络安全,例如选择强大的加密算法(如WPA2-PSK)和避免使用弱密码。此外,定期更新Hostapd到最新版本,以获取安全补丁和性能改进。 9. **故障排查**:如果在运行...

    hostapd-rtl871xdrv, RTL8188 {C|CU|CUS} wifi芯片的Hostapd驱动程序.zip

    hostapd-rtl871xdrv, RTL8188 {C|CU|CUS} wifi芯片的Hostapd驱动程序 这是什么?AP模式( 通过 hostapd ) 支持wifi芯片,将它的标识为 RTL8188CUS ( 或者它的变种) 。 如果你看到或者听说有人声称某个wifi芯片与一个...

    hostapd-2.9源码

    在Linux环境下,hostapd通常与dd-wrt、OpenWRT等第三方固件一起使用,以提供更强大的无线网络功能。 源码学习的过程中,你可以了解以下几个关键知识点: 1. **802.11协议**:Hostapd支持多种802.11标准,如802.11a...

    hostapd源码 下载

    源码中涉及到了无线帧的处理、认证和授权流程,以及加密算法的实现,这些都是无线网络通信的关键。 3. **驱动接口**:Hostapd通过driver接口与硬件驱动通信,这包括配置无线网卡、发送和接收数据包等功能。这些接口...

    树莓派hostapd文件

    然后,启动服务并设置为开机自启,使用命令`sudo systemctl start hostapd`和`sudo systemctl enable hostapd`。 6. **网络共享**:最后,还需要设置网络共享,让树莓派通过有线接口(eth0)共享互联网连接给无线接...

    hostapd-2.9.zip

    Hostapd不仅支持802.11a/b/g/n/ac等不同标准的Wi-Fi,还支持WPA/WPA2等安全加密协议,确保网络连接的安全性。 **功能特性** 1. **Wi-Fi接入点**:Hostapd能将任何兼容的无线网卡转换为一个Wi-Fi接入点,使得多台...

Global site tag (gtag.js) - Google Analytics