Linux驱动的无线热点

作者:Mike Kershaw

公共区域的无线接入由 802.11 热点提供,接入类型根据热点运营者的意愿而有所不同。许多商业热点存在于星巴克或快餐连锁店等场所,而图书馆和会议厅可能会选择为访客和与会者提供免费服务。公共热点可以完全是利他性质的,在该区域为访客提供免费网络接入;它可以是一个商业机会,向访客收取网络接入和服务费用;或者它可以是两者的结合,允许访客有限制地接入,并为付费客户提供更高的带宽或更大的接入权限。

专有解决方案可用于创建无线热点,但是当您最喜欢的操作系统和免费许可的工具可以在一台备用 PC 上实现时,为什么要选择闭源解决方案呢?

作为公共接入点的运营商,您有几个选择。当然,最简单的方法是简单地将无线接入点 (AP) 连接到您的网络并允许所有流量。不幸的是,最简单的途径不一定是安全角度最安全的途径。如果您的热点旨在为整个互联网提供连接,或者如果它连接到您的私有网络的一个网段,那么您几乎肯定不希望允许随机路人不受限制地访问。

许多接入点都具有通过端口和 MAC 地址限制访问的控制功能,但它们不提供任何其他工具来管理新用户、登录或向用户提供有关热点的信息。我们在此讨论构建的热点提供了一个强制门户,这是一个系统,其中未登录的用户被强制到一个包含登录、策略以及可选的付款信息的网页。

硬件和软件

开始提供无线热点需要什么?幸运的是,清单很短

  • 您最喜欢的 Linux 发行版。

  • NoCatAuth 热点/门户软件(免费、开源,可在 www.nocat.net 获取)。

  • 一个或多个无线接入点。接入点充当网络有线段和无线段之间的桥梁。您选择的无线类型取决于您的网络用户。目前,802.11b 是使用最广泛的;但是,802.11a 在较短的距离内提供更高的数据速率。802.11g 硬件提供更高的数据速率,并且向后兼容 802.11b,正变得越来越突出(参见侧边栏 802.11a、b 或 g?)。

  • 一台功率适中的 PC(奔腾或奔腾 II 级别的处理器足以进行数据包路由)。NoCat 建议至少配备两台服务器——一台充当防火墙和路由器,另一台处理身份验证——但一台服务器在紧急情况下也可以使用。

NoCatAuth

NoCat 通过使用 DHCP 为传入用户分配 IP 地址并限制网络访问,直到用户验证身份(无论是作为访客、付费客户还是管理员)来构建强制门户。通过重写防火墙中所有端口 80 流量的目的地,用户在验证身份之前尝试访问的任何网页都可以重定向到门户登录页面。

Linux-Powered Wireless Hot Spots

图 1. NoCat 门户登录页面

并非所有接入点都具有控制网络上允许哪些 MAC 地址的功能,并且每个制造商都有不同的配置方法,因此 NoCat 使用标准的 Linux iptables 防火墙来控制网络访问。它适用于任何接入点。NoCat 无法阻止用户与无线网络关联,您也不希望它这样做;如果用户无法关联,他们就无法登录。但它确实阻止他们网关连接到外部网络。由于 NoCat 动态地重写防火墙规则以允许新用户并拒绝断开连接的用户访问有线网络,因此最好使用一个专用系统作为网关,该系统上已经没有其他 iptables 规则。

NoCat 由两个主要组件组成:网关,处理用户登录并将数据包从无线网络路由到真实网络;以及身份验证服务器,存储用户帐户和密码。通常,每个接入点使用一个网关服务器,并且给定安装使用一个身份验证服务器。

NoCat 身份验证系统可以使用简单的平面文件密码系统、MySQL 数据库、Radius 或 LDAP 服务器或通过 Samba 的 Windows 域登录来验证用户。身份验证服务器可以位于本地有线网络上,也可以位于 Internet 上的其他位置。

您可以在与网关相同的硬件上运行自己的身份验证服务器。但是,如果身份验证服务器和网关使用单独的机器,则多个网关使用单个身份验证服务器会更安全且更容易。

图 2. 多个 NoCat 网关提供三个热点,这些热点使用单个身份验证服务器链接到同一有线网络。

在下载和安装 NoCat 之前,您应该开始规划您希望用户拥有的访问级别以及您的可接受使用策略。尽管您的用户很可能是诚实的,但可能会有人试图制造恶作剧。您的端口限制和可接受使用策略必须在足够严格以防止滥用和足够宽松以使服务有用之间取得平衡。尽管任何端口都可能被决心捣乱的人用来制造问题,但许多热点选择允许 SSH(端口 22)、HTTP(端口 80)和 HTTPS(端口 443)。

其他可能对您的用户有用的端口包括 POP3 (110)、IMAP (143) 和 SMTP (25),但这些端口对用户和您的网络都存在风险。POP3 和 IMAP 流量通常未加密,这意味着用户检查他们的电子邮件可能会导致他们的密码在传输到他们的服务器的过程中或被该区域嗅探无线流量的人捕获。允许 SMTP,特别是对未经身份验证的用户,可能是危险的,因为它可能会帮助垃圾邮件发送者连接到您的网络。某人通过您的热点发送大量批量邮件的可能性可能很小,但采取预防措施始终是有意义的。

构建 NoCat 本身是一个简单的过程:只需从 www.nocat.net 下载 NoCat tarball,执行make gatewaymake install并编辑配置文件 /usr/local/nocat/nocat.conf。为了获得完整的功能,请安装 DHCP 服务器并将其配置为为您的无线网络分配私有地址。

NoCat 由 nocat.conf 文件控制。基本网关需要

  • GatewayMode:控制您运行的门户类型。开放门户允许任何人在接受启动页上的条款后使用它。封闭门户要求用户在获得访问权限之前进行身份验证。

  • IncludePorts 和 ExcludePorts:这些控制用户允许访问的 TCP 端口。如果您正在运行开放门户,那么您几乎肯定希望限制这些端口以防止滥用网络。IncludePorts 仅允许使用列出的端口,而 ExcludePorts 允许使用任何端口,但列出的端口除外。

  • InternalDevice 和 ExternalDevice:控制 NoCat 使用的网络接口。InternalDevice 指定接入点连接到的设备,ExternalDevice 指定有线网络。

  • LocalNetwork 和 DNSAddr:LocalNetwork 应设置为您的无线网络上使用的网络,并且仅当您在无线网络外部有 DNS 服务器时才应设置 DNSAddr。如果您的无线网段上有 DNS 服务器,则您不需要此选项。

  • AuthserviceAddr、AuthServiceURL 和 LogoutURL:控制门户使用的身份验证服务类型。默认情况下,它们配置为使用 NoCat 身份验证服务器。但是,如果您正在运行封闭门户,那么您几乎肯定希望将这些设置为您自己的身份验证系统。

您的门户可以使用最少的配置工作,但请研究其他配置选项以自定义门户的界面和规则。

简单门户的五个步骤

我们的示例门户是一个基本的开放门户。它只需要一个接入点和服务器,因为我们不需要我们自己的身份验证系统。我们还将锁定它,以便匿名用户可以浏览网页、使用 AIM 和 SSH 连接到远程系统,但他们将无法访问其他 TCP 端口。对于匿名用户来说,这是一个相当安全的配置,但您可能希望进一步限制它,并仅允许网页访问。

对于我们的示例门户,我们使用以下设备

  • 一个通用的接入点,例如 Linksys WAP11、D-Link DWL900、SMC 2655W 或无数其他型号。通常,接入点充当连接有线和无线网络上所有用户的桥梁,但在我们的设置中,我们使用 NoCat 网关来限制流量。

  • 一台 Linux 服务器,至少配备 32MB 的 RAM,最好是奔腾级别的处理器或更高;您最喜欢的带有 Perl、Apache-SSL、iptables、Bind 和 DHCP 的 Linux 发行版;以及两张以太网卡。或者,使用一张以太网卡和一张连接到外部网络所需的任何类型的网卡。一旦我们拥有了所有设备,我们就可以通过五个简单的步骤将门户组装在一起

  1. 将 Linux 网关配置为位于真实网络和无线网络上,并连接到服务器 DHCP 和 DNS 地址。将第一张以太网卡 (eth0) 插入接入点,将第二张以太网卡 (eth1) 插入真实网络。每个发行版都有自己的配置网卡的方法,因此这里我们使用命令行。您需要配置您的系统以在启动时设置这些接口。我们使用 123.123.123.123 作为示例地址;您应该将其更改为您真实的地址

    ifconfig eth0 192.168.1.1 \
    netmask 255.255.255.0 up
    ifconfig eth1 123.123.123.123 \
    netmask 255.255.255.0 up
    
  2. 配置 BIND(DNS 服务器)作为侦听本地网络的基本缓存 DNS 服务器。默认的 bind 安装附带了一个示例缓存配置。

  3. 配置 DHCP 以在 192.168.1.X 网络中分配地址,方法是将以下内容放入 /etc/dhcpd.conf 中。如果您的 DNS 服务器不是 192.168.1.1,请相应地更改 domain-name-servers 选项行

    max-lease-time 120;
    default-lease-time 120;
    allow unknown-clients;
    
    subnet 192.168.1.0 netmask 255.255.255.0 {
        option routers 192.168.1.1;
        option broadcast-address 192.168.1.255;
        option subnet-mask 255.255.255.0;
        option domain-name-servers 192.168.1.1;
        range 192.168.1.100 192.168.1.254;
    }
    
  4. 编译并安装 NoCat。

  5. 配置 NoCat

    InternalInterface	eth0
    ExternalInterface	eth1
    LocalNetwork		192.168.1.0/255.255.255.0
    GatewayMode			open
    IncludePorts		22 80 443 5190
    
需要记住的事情

在设置和运营无线热点时,您应该记住一些事情。首先,保护您的用户信息。如果您允许用户通过无线注册您的服务,尤其是如果您计划获取信用卡信息,请为 SSL 加密配置 Apache。其次,鼓励用户尽可能使用加密。如果远程站点支持,则可以使用 SSL 加密 POP 和 IMAP 流量,并且如果用户拥有可以连接的远程帐户,则任何流量都可以通过 SSH 隧道传输。最后,尽可能多地了解无线技术和安全性,并考虑运行监控程序。许多无线安全程序可用,但如果您坚持使用免费软件,AirSnort (airsnort.shmoo.com)、Kismet (www.kismetwireless.net) 和 Snort (www.snort.org) 是不错的起点。

802.11a、b 或 g?

802.11a 不如 802.11b 普及,而 802.11g 拥有相同的速度以及向后兼容性。802.11a 的范围也极短。

在撰写本文时,市场上现有的 802.11g 硬件是在 IEEE 规范完成之前发布的,可能与其他或未来的 802.11g 实现不兼容。许多评测人员发现了向后兼容性问题。未来的 802.11g 实现有望解决这些问题。现在使用 802.11b 设置热点并在将来升级可能更具成本效益。

Sam Leffler 最近开发了 Atheros 802.11a 和 802.11g 卡的驱动程序。但是,驱动程序需要专有的硬件抽象层来限制卡使用的频率和功率。

Mike Kershaw 目前在奥尔巴尼和纽约市之间的一所中等规模的学院工作。他对无线技术在 2001 年产生了兴趣,并且从此一发不可收拾。他还是 Kismet 无线安全程序的作者。

加载 Disqus 评论