PoPToP,安全且免费的 VPN 解决方案
传统上,员工的远程访问一直是通过专用线路或远程访问服务器 (RAS)。RAS 通常由连接到中央机器的调制解调器和电话线集合组成。RAS 可能非常可靠和安全,但其设置和长途电话费用昂贵。虚拟专用网络 (VPN) 提供了一种安全、灵活且廉价的解决方案,可以替代 RAS 和专用线路。PoPToP 是适用于 Linux 的 PPTP(点对点隧道协议)VPN 解决方案,是一种企业现在就可以利用的免费 VPN 解决方案。
虚拟专用网络是一种能够在公共互联网基础设施上以定义的安全级别进行通信的专用网络。VPN 可以存在于两个或多个专用网络之间(通常称为服务器到服务器 VPN),或者在单个客户端机器和专用网络之间(通常称为客户端到服务器 VPN)(见图 1)。VPN 克服了对昂贵的专用线路或 RAS 拨号呼叫和设置成本的需求。
在图 1 中,远程客户端从其本地 ISP 获得一个真实的 IP 地址。此远程客户端可以登录到 VPN 服务器,从而获得对防火墙后面的专用网络的访问权限。然后,远程客户端可以像在该网络上的机器一样浏览和使用专用网络上的其他网络服务。
VPN 也可能存在于多个专用网络之间(服务器到服务器 VPN)。例如,假设您的公司在澳大利亚有一个研发办公室,在美国有一个销售和营销办公室。这两个地点都有连接到互联网的专用网络(方法、调制解调器、DSL 或其他方法对于 VPN 来说是透明的)。传统上,如果办公室希望共享其网络上的文件,他们要么必须通过电子邮件将文件发送给对方,要么拨号连接到对方,要么在他们之间建立某种形式的专用链路。VPN 为无缝连接这两个网络提供了一种经济高效的解决方案,而不会损害系统安全性。
当今最流行的 VPN 技术是 PPTP 和 IPsec。最近,关于这些竞争 VPN 技术的支持者之间进行了许多辩论和分析。PPTP 和 IPsec 都在 VPN 解决方案中发挥着重要作用。但是,PPTP 和 IPsec 都不是没有缺陷的。
PPTP 是互联网工程任务组 (IETF) 发布的开放文档标准,RFC 2637,可在 ftp.ietf.org/rfc/rfc2637.txt 获取。
PPTP 作为 VPN 的操作是通过将点对点协议 (PPP) 封装在 IP 中并通过 IP 网络隧道传输来实现的。所有通信、身份验证和加密几乎完全由 PPP 处理,目前 PPP 支持 PAP、CHAP、MSCHAP 和 MSCHAPv2 身份验证。PPP 加密通过压缩器模块执行,Linux 下的可用补丁允许 PPP 支持 RC4 兼容的 40-128 位加密。有些人错误地认为,由于 PPTP 使用 PPP,因此您需要调制解调器。事实并非如此。实际上,到 IP 网络的连接机制对于 PPTP 是透明的。
由于 PPTP 默认存在于 Microsoft Windows 平台中,因此 PPTP 在客户端和服务器形式中都得到了广泛部署。
IPsec 是一系列新的身份验证和加密安全协议,可用于通过 IP 网络安全地发送数据。IPsec 为网络流量提供加密、身份验证、完整性和重放保护。IPsec 还指定了一种密钥管理协议,用于建立加密密钥。与 PPTP 一样,IPsec 也是 IETF 开发的开放标准。
PPTP 对于身份验证和加密机制是透明的。Microsoft 版本的 PPTP 最近已升级,包括 MSCHAPv2 和 MPPE 增强型(且更安全)安全协议。Linux PPP 守护进程的补丁程序允许 PoPToP 等 PPTP 解决方案利用 Microsoft 增强的 VPN 安全性。
Counterpane Internet Security, Inc. 的首席技术官,也许是互联网安全的主要权威 Bruce Schneier 最近分析了 Microsoft 的 MSCHAPv2 和 MPPE 安全协议。Schneier 得出的结论是,Microsoft 发布的 MSCHAPv2 解决了 MSCHAP 中发现的主要安全漏洞。
Schneier(在 Niels Ferguson 的帮助下)最近也分析了 IPsec。在他们的分析中,他们得出结论,IPsec 的复杂性实际上使其不可能实现安全的解决方案。他们认为 IPsec 永远不会产生安全的操作系統。他们强调,尽管 IPsec 存在缺陷,但它比 PPTP 更安全。
IPsec 仍然是一项新技术,未来的改进肯定会进一步增强其安全性并增加其对企业的吸引力。此外,凭借其在 Windows 2000 中的默认存在,IPsec 将为中小型企业提供更安全且更经济实惠的解决方案。
经济实惠的 PPTP VPN(具有 MSCHAPv2 和 40-128 位 RC4 加密)现在可用。凭借已经存在的大量支持 PPTP VPN 的 Windows 机器,经济高效的解决方案显而易见。Windows 98 将 VPN 客户端软件作为安装选项。Windows NT 4.0 默认附带 PPTP(服务器和客户端)。存在用于升级 Windows 95 机器以包含 PPTP 客户端的补丁程序(Microsoft 拨号网络补丁程序)。Windows 2000 默认附带 PPTP。
PoPToP 是适用于 Linux 的 PPTP VPN 服务器。存在适用于 Solaris、OpenBSD、FreeBSD 和其他系统的端口。PoPToP 允许 Linux 服务器在 PPTP VPN 环境中无缝运行,使管理员能够充分利用 Microsoft 和 Linux 的显著优势。PoPToP 的当前发布版本支持 Windows 95、98、NT 和 Windows 2000 PPTP 客户端,以及 Linux PPTP 客户端。
PoPToP 是 PPTP 接入集中器 (PAC),它采用增强型 GRE(通用路由封装—协议 47)机制来承载 PPP 数据包,并采用控制通道(端口 1723)来承载 PPTP 控制消息。PoPToP 的基本操作是将 PPP 数据包封装在 IP 中,并通过公共互联网基础设施发送。在连接的另一端,PPP 数据包从其 IP 数据包中剥离出来,并交给 PPP 守护进程。该操作几乎与拨号会话相同,只是 PPP 数据包被封装在 IP 中并通过 IP 网络发送,而不是通过通用电话线和调制解调器配置发送。
PoPToP 可以设置为与打过补丁的 PPP 守护进程一起工作,以支持 MSCHAPv2 身份验证和 RC4 兼容的 40-128 位加密。运行 PoPToP 的 Linux 服务器可以有效地替代 Windows NT PPTP VPN 服务器。但是,PoPToP 不支持 PNS 操作,因此在需要 PNS 时,它不能替代 Windows NT 服务器。
PoPToP(以及一般的 PPTP)的另一个优点是,它对于加密和身份验证机制是透明的。将备用加密算法(例如 Blowfish)移植到 PPP 压缩器模块并非难事。开发您自己的加密和身份验证机制的唯一问题是,您将破坏通用 Windows 客户端支持。但是,Linux PPTP 客户端在 GNU GPL 下可用,并且可以与任何 PPP 更改无缝协作。
最后,PoPToP 很简单。它具有极小的内存占用量,并且经过了性能调整。这使得 PoPToP 对嵌入式平台和边缘网络非常有吸引力。当与 Linux PPTP 客户端结合使用时,解决方案提供商可以提供具有自己定义的安全协议的廉价 VPN 解决方案。
PoPToP 最初由 Moreton Bay (http://www.moretonbay.com/) 于 1999 年 2 月为其 eLIA(嵌入式 Linux 互联网设备)平台开创。它于 1999 年 4 月在 GNU GPL 下发布,此后在大型生产站点以及小型企业和家庭网络中的标准 Linux 服务器和防火墙上得到了广泛接受。PoPToP 位于当前的 Debian “potato” 代码冻结版和 SuSE 6.2 中。
使用标准 PPP 守护进程(不带 MSCHAPv2 或 RC4 兼容加密)设置 PoPToP 是一项轻松的任务。以下是快速设置指南。
从 www.moretonbay.com/vpn/download_pptp.html 获取 PoPToP 的最新稳定版本。
以 root 用户身份登录以安装和运行 PoPToP。
如果您下载了 PoPToP v1.0.0 tar 文件并将其存储在 /usr/local/src/ 中,请键入以下命令
cd /usr/local/src/ tar zxvf pptpd-1.0.0.tgz cd pptpd-1.0.0 ./configure make make install
如果您下载了 PoPToP RPM (pptpd-1.0.0-1.i386.rpm),请键入以下命令
rpm --install pptpd-1.0.0-1.i386.rpm
PoPToP 的二进制文件放置在 /usr/local/sbin 中。检查以确保 pptpd 和 pptpctrl 在那里,然后再继续。
设置 PoPToP 配置文件。示例配置文件如列表 1 和列表 2 所示。此配置将使用 CHAP 作为身份验证机制。用户登录名是“billy”,密码是“bob”。
现在配置文件已设置好,您可以启动 PoPToP 了。只需键入 pptpd。
任何安装了 PPTP VPN 的标准 Windows 客户端现在都应该能够连接到您的启用 PoPToP 的 VPN Linux 服务器。在 Windows 98 上,您可以通过控制面板-->添加/删除程序-->Windows 设置-->通讯-->虚拟专用网络 来安装它。

Matt Ramsay (matthewr@moreton.com.au) 是一位全职、底层 Linux 应用程序黑客,居住在阳光明媚的澳大利亚布里斯班。除了 PoPToP 之外,他还开发并根据 GNU GPL 发布了一个适用于 Linux 的“微型” DHCP 服务器。他的主要专业重点是为嵌入式 Linux 系统编写小型快速的应用程序。