Windows 工作站环境中的 Linux,第三部分:本地网络支持
本系列文章介绍了基于 Linux 的服务器的开发
以支持在梅萨市 55+ RV 度假村的计算机实验室中运行 Microsoft Windows 的
操作系统。
亚利桑那州。
第一部分 和
第二部分 涵盖了
我们组织的背景、Linux 系统的建立、
iptables 防火墙的规则和网络功能,例如 IP 地址服务、仅缓存名称
服务器、Intranet Web 服务器以及使用以下协议的打印和文件服务
服务消息块 (SMB) 协议。本文描述了
虚拟专用网络 (VPN) 服务器的实现,我们构建该服务器是为了让我们的
无线用户可以在不安全的网络上加密他们的传输。
Wi-Fi 系统
Mesa Regal 的所有者为计算机实验室提供了出色的
设备,度假村正在铺设 Wi-Fi 热点,这应该
使所有居民都能够从以下地点免费获得宽带接入
他们的房车营地。有些位置将需要高灵敏度天线,但是
该功能将存在。为了比较,大多数拥有
Wi-Fi 功能的房车度假村每月收费 20 至 30 美元。在我撰写本文时居住的露营地,
访问费用为每周 25 美元!主要
问题是所有者要求网络不安全,尽管有所有
相反的建议。尽管大多数(如果不是全部)敏感
通信使用 SSL,但我们的许多成员不愿透露
任何通过不安全通道的信息。为了给他们提供安全保障,
我实施了一个 VPN 服务器,该服务器提供来自以下位置的加密隧道
用户到我们的 Linux 机器。
VPN 技术
Mick Bauer(参见“资源”)最近发表了一篇完整的描述
关于 Linux 的 VPN 技术。不幸的是,对我来说,那篇文章是在
我完成设置后发布的,但它是一个很好的
起点。在那篇文章中,他描述了 VPN 解决的两种不同需求。
VPN 解决的需求。他的第一个案例允许用户连接到
一个私有网络,使用通过不受信任的加密连接
媒介,描述了我们的情况。一旦数据到达我们的服务器
并在有线网络上,它的处理方式与来自以下位置的材料完全相同
计算机实验室中工作站之一。
为了将 Windows 工作站连接到 Linux 服务器,我们可以使用
IP 安全 (IPSec) 协议,该协议高度安全。这种方法,
但是,需要数字证书,并且无法
在预期通过以下方式连接的许多用户机器上轻松实现
一旦 Wi-Fi 网络完全实现,VPN 服务器。我们的
另一个选择是由以下机构设计的点对点隧道协议 (PPTP)
Microsoft,并内置于所有最新的 Windows 操作系统版本中。此外,
客户端可用于 Mac OS X 和 Linux。尽管此协议
存在严重的安全问题,正如 Schneir 和 Mudge(参见
“资源”)所述,此方法的 v2 版本对于我们的目的来说足够安全,并且可以
防止被业余黑客拦截。一个坚定的专业人士
将能够破解我们的网络;但是,我怀疑我们有任何
值得付出的努力的信息。
在 Linux 上实现 PPTP
为了在 Linux 上实现 PPTP 服务器,我选择了 PoPToP 软件包,
v1.2.1,目前由 James Cameron 维护(参见“资源”)。这个
软件包由一个守护程序组成,该守护程序侦听端口 1723 上的连接请求。
端口 1723。当有请求到达时,它会生成一个进程来建立点对点
协议 (PPP) 连接返回到发起计算机。此过程
还会分配用于客户端和服务器的 IP 号码
此连接的末端。一旦我们的 Wi-Fi 网络实现,
这些各种进程的开销以及数据加密/解密
可能会使我们的服务器不堪重负。在这种情况下,需要一台单独的机器。
必需的。目前,我们仍然有足够的计算能力
可以使用单个主机来提供我们所有的服务。
PoPToP 软件包不是 SuSE 发行版的标准功能。
因此,我必须从网站下载源代码包,解压缩
并配置软件,构建软件包并安装它。这些
步骤对于 Linux 的大多数软件都是标准的,并且在以下位置进行了描述
软件包中包含的材料。简而言之,它们只需要几个命令行
条目,并且只有安装步骤需要超级用户权限。这个
软件包还要求与 PPP 关联的内核模块
可用。特别是,需要处理 Microsoft 的 ppp_mppe.ko
点对点加密 (MPPE)。其他模块处理
此方法使用的 RC4 密码。只要默认
使用 SuSE 发行版的内核,所有必要的模块都应该
存在。
但是,生成自定义内核的用户必须采取一些
在执行配置步骤时要小心。特别是,应选择所有 PPP 和所有
加密选项。我两种方式都做过;
计算机实验室系统使用 SuSE 默认设置,但我在
家里的测试系统有一个自生成的自定义内核。也可以
合并 Microsoft 点对点压缩 (MPPC)。内核
必须进行修补才能使用此选项,但这可能更
费力不讨好。
PPTPD 配置
配置 VPN 软件时,需要建立三个配置文件。
需要建立。第一个是 /etc/pptpd.conf,
它控制 PPTP 守护程序的运行。默认值是
对于许多参数都是正确的。在我们的例子中,只需要定义四个参数:
需要定义:PPP 守护程序的路径,
PPP 选项文件的路径,PPP 服务器的 IP 号码和 IP
PPP 客户端的号码范围。我的配置中定义的值如下
我的配置如下
ppp /usr/local/sbin/pppd # this tag defines the path of the PPP daemon option /etc/ppp/options.pptpd # the path for the pppd options file localip 10.10.100.1 # the IP number for the PPP server remoteip 10.10.100.100-199 # the range of IP numbers for the clients
这组参数将网络 10.10.100.x 配置为 IP
VPN 隧道的地址,其中 10.10.100.1 作为
服务器的 IP 地址。PoPToP 的标准配置允许 100 个并发
客户端,这由 remoteip 指定的范围覆盖。
标签。请注意,任何防火墙规则都必须考虑这个额外的网络。
在我们的网络布局中,从 VPN 客户端到服务器的流量
通过外部接口进入,然后通过
同一接口路由回 Internet。
我们 PPP 守护程序的选项很少。未加密的连接
没有意义;因此,我们需要 Microsoft 点对点加密
(MPPE)。此外,客户端必须使用 Microsoft 质询的 v2 版本
身份验证协议 MSCHAP-V2。生成的 options.pptpd 文件
包含以下信息
require-mschap-v2 # required authentication method require-mppe # MPPE encryption required
一个注意事项:有几个版本的 PPP 守护程序可用
它们有不同的命令集。事实上,我电脑上的软件
与手册页不符。我必须阅读代码的命令解析器部分
以确定要使用的正确命令。
实现 VPN 服务器所需的最终配置文件 /etc/ppp/chap-secrets 包含
VPN 服务器包含用户 ID 和所需的密钥(密码),
用于 CHAP。由于我们的每位成员都有一个用于
打印的用户号码和密码,因此似乎可以使用这些值作为 VPN 的基础
身份验证。该文件的前几行如下
# /etc/ppp/chap-secrets file for MRCC VPN connections # client server secret IP Address 0 * xxxxx * 1 * yyyyy * 2 * zzzzz *
文件中每行的四个字段按顺序包含客户端
标识符或用户 ID;服务器名称,* 允许所有服务器;
密钥;以及此连接的 IP 地址。*
允许 PPTP 守护程序选择地址。这里应该注意两件事。
首先,CHAP 旨在连接计算机系统,而不是用户;但是,
我们忽略了这一点,并使用用户名和密码。其次,
对于 PPP,服务器/客户端角色是相反的——PPTP 服务器成为
PPP 客户端。同样重要的是要注意,VPN 用户不需要
Linux 服务器上的登录帐户。
为了测试加密/解密处理是否会降低网络
流量,我进行了一次非常粗略的测试。从 www.kernel.org 下载 Linux 内核
源文件时,打开和 VPN 链接的速度都由 T-1 线路决定
,没有任何明显的减速
进行加密。
资源
“Windows
工作站环境中的 Linux,第二部分
“Linux VPN
技术”,Mick Bauer,Linux
Journal,2005 年 2 月,第 130 期,第 30-35 页。
PPTP v2
的分析以及指向其他讨论 PPTP 安全性
问题的网站的链接
Larry Finger 已从华盛顿卡内基研究所退休,
华盛顿特区,目前是
Mesa Regal RV 度假村计算机俱乐部的志愿者技术顾问,
亚利桑那州梅萨市。除了维护这些文章中描述的系统外,他还
合作开发一个程序来
显示晶体
结构模型。