设置全 Linux 无线局域网
如果您最近参加过 Linux 会议,您可能已经看到很多人带着无线网卡,一边愉快地喝着饮料,一边查看电子邮件。802.11b 或 “WiFi” 卡非常便宜、方便,并且在 Linux 下得到很好的支持。
如果您想在家中进行无线网络连接,那么直接插入基站可能不是太明智。即使使用最大的密钥长度,WiFi 使用的名为有线等效保密 (WEP) 的加密协议也很容易受到附近行走的人的攻击——对于很大范围的“附近”。安全顾问 Peter Shipley 报告说,他使用定向天线连接到 25 英里外的 WiFi 网络。而仅仅半小时的拦截流量就可能足够某人破解 WEP 并使用您的基站上网(请参阅资源)。
您可以采取一些措施来增强 WEP 的安全性,但作为保护措施,它是不够的。(据报道,Adobe Systems, Inc. 在政府逮捕程序员 Dmitry Sklyarov 后,关闭了他们所有的 WiFi 基站。他们可能试图将软件和言论自由倒退 500 年,但他们并不愚蠢。)
WiFi 的威胁不是人们可能会读取您的数据——您无论如何都在使用 ssh 和 SSL 来保护敏感信息。威胁是人们使用您负责的网络来做坏事。如果垃圾邮件发送者或脚本小子使用您的基站上网,几乎不可能找到他或她。谁来承担责任?您。
如果您确实决定通过 802.11b 提供公共连接,那您真是太友好了。获取单独的网络连接,架设基站,加入相关的邮件列表,尽情享受吧。如果有人使用您的公共基站发送垃圾邮件或侵入他人的计算机,并且您的 ISP 取消了帐户,您仍然拥有您的常规网络连接。
因此,如果现成的基站不好,那么替代方案是什么?旧笔记本电脑怎么样?万一您没有注意到,价格正在下降,当您读到这篇文章时,您可能可以用大约 8 美元的价格买到一台配备 512MB 内存和 1600 × 1200 显示屏的新笔记本电脑。所以犒劳一下自己,买一台新笔记本电脑,然后将旧笔记本电脑转换成基站。在线拍卖网站也让损坏的笔记本电脑变得非常便宜。铰链坏了?电池锁扣不见了?可能不是最好的随身携带的东西,但用一点胶带,它就是您的基站。
我在我的笔记本电脑上安装了 Debian,因为它有本文中提到的所有软件的软件包,并且有一个良好的自动升级系统。但是任何当前的发行版都可以工作。(我没有必要从源代码编译任何东西或重启来完成这篇文章,尽管我在配置后确实重启了几次,以确保一切都以正确的顺序启动。)
我不应该说这个,但要购买您的首选发行版良好支持的 WiFi 网卡。我买了一对 Orinoco 卡。
由于您的基站将暴露给任何携带 WiFi 网卡走过的人,因此在插入网卡之前,请采取一些基本的管理和安全措施(这适用于任何互联网服务器)。
首先,将 root 的邮件转发到您的真实电子邮件地址,这样重要的消息就不会被忽略。
检查日志轮换是否工作,以及 /var/log 中是否有足够的空间。
配置邮件守护进程仅监听环回接口。
设置 ntpd 或 cron 作业来运行 ntpdate,以便日志中的所有时间都是正确的。
删除所有未使用的软件,并应用任何安全补丁或更新。
将您的主 ssh 密钥复制到基站上您主目录中的 .ssh/authorized_keys2 中,这样您就永远不需要通过网络发送您的密码,即使是加密的。配置 sshd 拒绝密码或 root 登录。
确保您订阅了基站运行的发行版的安全邮件列表。
最后,从外部对基站运行 Nmap,以确保没有不必要的服务正在运行。从外部您应该看到 ssh,仅此而已。
以防万一您的基站确实被入侵,请确保基站上的任何信息或密钥都不会帮助人们进入您的任何其他系统。例如,基站上的帐户不应具有 ssh 密钥。
在本文中,我使用 10.2 地址作为底层 WiFi,并使用 10.3 地址作为 VPN。现在是时候开始使用了。
eth0、eth1 编号的实际顺序取决于驱动程序 insmod 的顺序,以及 cardmgr 守护进程在启动时探测插槽的顺序。在我的笔记本电脑(现在是基站)上,只有当 WiFi 卡位于顶部插槽(插槽 0)时,WiFi 卡和常规以太网卡才能安装。这意味着我的 WiFi 接口是 eth0,而我的常规以太网是 eth1。
默认情况下,当您启动基站时,PCMCIA 脚本将启动 cardmgr 守护进程,并可能在所有卡初始化之前退出。如果您运行任何类型的服务器,这不是您想要发生的事情。所有接口都应该在守护进程尝试启动之前启动。通过将其放在 PCMCIA init 脚本或配置文件中,将 -f 选项传递给 cardmgr;在 Debian 上,它是 /etc/pcmcia.conf(参见列表 1)。下面是 /etc/pcmcia/wireless.opts
# use "Ad-Hoc" mode to act as a base station. # Set your own ESSID. case "$ADDRESS" in *,*,*,*) ESSID="wifi.ssc.com" MODE="Ad-Hoc" ;; esac
列表 1. /etc/pcmcia/network.opts
要检查您的工作,请在基站上执行 ifconfig 和 iwconfig,并确保信息正确。确保您仍然可以通过常规以太网登录到基站。
要使基站充当 DHCP 服务器,您还需要添加一条到 255.255.255.255 的路由,这是 DHCP 流量的目标地址。除非 255.255.255.255 路由存在,否则 DHCP 数据包将采用默认路由而不是 WiFi 接口,这不是您想要的。您可以将此路由添加到 dhcp init 脚本。当您编辑此脚本时,使 dhcpd 仅在 WiFi 接口(在 solanum 的情况下为 eth0)上运行它。您不希望基站将 DHCP 流量喷射到不需要的地方。所以替换
/usr/sbin/dhcpd
为
route add -host 255.255.255.255 dev eth0 /usr/sbin/dhcpd eth0在基站上设置一个 dhcpd.conf 文件,仅向您自己的系统提供 IP 地址
# /etc/dhcpd.conf for solanum # run the DHCP server on the WiFi interface only! default-lease-time 1800; max-lease-time 7200; subnet 10.2.0.0 netmask 255.255.0.0 { } subnet 198.144.202.0 netmask 255.255.255.0 { } host cannabis { hardware ethernet 00:02:2d:2e:56:df; fixed-address 10.2.0.2; }这不是安全措施,但它可以防止您的 DHCP 服务器浪费时间在任何错误设置客户端的邻居身上。
此时,您应该能够通过 WiFi 从客户端 ping 通基站。
Linux 有许多虚拟专用网络 (VPN) 选项,您可能已经出于其他原因安装了一个。如果是这样,您可以跳过专门为 WiFi 安装单独的 VPN,只需在基站上配置 IP 伪装,以仅允许从 WiFi 网络到 VPN 服务器以及反之亦然的流量,您就完成了。如果您需要为旅行者或家庭办公室在多个位置之间设置 VPN,并且您还需要在每个位置为 WiFi 设置 VPN,那么通过选择一个适用于两者的 VPN 来节省时间。
否则,选择并安装一个专门用于 WiFi 的 VPN。对于本文,我选择了 vpnd(参见资源),它具有与“开箱即用”内核配合使用、可以作为 Debian 软件包使用以及配置简单的优点。
客户端和服务器的内核将需要具有内核随机数生成器和 SLIP 支持作为模块。发行版附带的库存内核具有此功能,但是如果您构建了自己的内核并且没有编译任何您不需要的模块,那么您将不得不返回,make menuconfig,选择 SLIP,然后执行
make modules && make modules_install.
好消息是,如果您运行的是模块化内核,并且仍然拥有您从中构建的内核源代码和内核 .config,则无需重启即可执行此操作。如果您取消了内核随机数生成器支持,那真是太可耻了——把它放回去,因为不仅 vpnd 而且许多其他优秀的加密软件都依赖于它。
要为 vpnd 设置密钥,请在基站上运行 vpnd -m,然后将生成的 /etc/vpnd/vpnd.key 复制到客户端。vpnd 的配置文件非常简单;列表 2 显示了一个示例。
此时,您应该能够从客户端 ping 通基站的虚拟地址(在本例中为 10.3.0.1),反之亦然。如果不能,请检查 vpnd 错误的日志,并在两端使用 ifconfig 和 route 以确保 IP 地址和路由信息正确。
每个发行版都有自己的 IP 伪装设置工具,IP 伪装文章也像猪蹄印一样常见,所以按照书中的说明打开它即可。您需要确保 WiFi 网络(在我们的示例中为 10.2.0.0/16)没有被伪装——只有 VPN 被伪装。要测试伪装是否设置正确,不仅要从客户端上网和发送邮件——暂时更改客户端上的默认路由,使其直接通过 WiFi 而不是 VPN,并确保您无法上网。
无线网络中许多令人兴奋的未来发展即将到来。未来的安全协议应该使 VPN 舞蹈变得不必要,而 NoCatNet 等社区网络正在制定协议,让您可以与邻居共享您的接入点,而不会让自己受到滥用。但是,今天的 802.11b 卡将在很长一段时间内都很常见且实用。