使用 hostapd 轻松实现强 WiFi 加密(2)
- UID
- 1066743
|
使用 hostapd 轻松实现强 WiFi 加密(2)
配置 hostapd具体安装取决于您使用的 Linux 发行版,我将其留作您的家庭作业,您可以自行解决它。您首先要配置接入点上的 hostapd,然后需要配置客户端 PC 上的 wpa_supplicant 以测试密钥交换。
如果您的接入点上没有 /etc/hostapd.conf 文件,那么请创建一个新文件。如果您的安装提供了该文件,那么请为它做一份备份,以便您参考,并使用一个空白的全新文件作为开始。 中的示例提供了您设置 WPA2-Personal 所需的一切内容:
清单 4. 示例 /etc/hostapd.conf1
2
3
4
5
6
7
8
9
10
| 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 文件:
1
| 00:00:00:00:00:00 testpassword
|
现在,转到您的 Linux 客户端 PC,为 wpa_supplicant 创建一个简单的配置文件,wpa_supplicant.conf 类似于 中的示例。
清单 5. 示例 wpa_supplicant.conf1
2
3
4
5
6
| 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. wpa_supplicant 的示例信息1
2
3
4
| 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。按照 所示的方法使用它和 SSID:
清单 7. 使用 wpa_passphrase 创建用户1
2
3
4
5
6
| $ wpa_passphrase "alracnet" "greatbiglongpasswordbecauselongerisbetter"
network={
ssid="alracnet"
#psk="greatbiglongpasswordbecauselongerisbetter"
psk=a8ed05e96eed9df63bdc4edc77b965770d802e5b4389641cda22d0ecbbdcc71c
}
|
返回到 /etc/hostapd-psk,您现在可以开始添加用户。每个加密预共享密钥都必须与用户的 MAC 地址相匹配。 显示了一个示例。
清单 8. 示例 /etc/hostapd-psk1
2
3
4
| 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 选项进行调试。 |
|
|
|
|
|