热门关键字:  ubuntu  分区  Fedora  linux系统进程  函数

使用Linux L2TP/IPsec VPN 服务器

来源: 作者: 时间:2007-06-05 Tag: 点击:

22.4 战神攻击
如果tcpdump显示Linux服务器看起来没有对来自Windows/Mac客户端的数据包做出响应,那么可能没有禁用反向路径过滤(Reverse Path Filtering)。如果你在/var/log/messages里看到这样:
martian destination 127.0.0.1 from 192.168.0.222, dev ipsec0
martian source 192.168.0.200 from 192.168.0.222, on dev eth0
ll header: 00:00:00:00:00:00:00:40:33:2c:70:c8:08:00
那么你需要清空rp_filter。如果在/var/log/messages向回翻,你可以看到FreeS/WAN有这样的提示:
ipsec_setup: (/proc/sys/net/ipv4/conf/eth0/rp_filter = `1', should be 0)
如是eth0设备,使用echo 0 >; /proc/ss/net/ipv4/conf/eth0/rp_filter可以快速修复这个问题。作为选择,你可以在/etc/sysctl.conf中添加net.ipv4.conf.default.rp_filter=0。
22.5 Windows诊断
另外,你可以检查Windows客户端的日志,我对在Windows上的错误信息没有较好的印象,我发现Linux端的论断信息(Openswan、l2tpd、pppd)更加有用。下面有两篇微软的关于启用Windows 2000/XP的IPsec和PPP日志功能的文章:
启用对IKE商议详细过程日志(http://www.microsoft.com/technet/prodtechnol/windowsserver2003/proddocs/standard/sag_ipsec_tools.asp)。
HOW TO:在Windows上启用PPP日志(Q234014)(http://support.microsoft.com/default.aspx?scid=kb;en-us;234014)。(技巧:set tracing * enable将记录更多)
如果你为IPsec和PPP启用日志,你将分别得到OAKLEY.LOG和PPP.LOG文件。PPP.LOG不总是有用,因为很多细节被记录成十六进制转储的二进制。你可以使用Windows 2000 Professional的网络监视器(Network Monitor)检查客户端和服务器之间的通信。Windows XP没有带网络监视器,但你可以安装网络监视器驱动程序(Network Monitor Driver)然后使用 Netcap把通信过程写入一个文件,这个文件可以被Windows 2000的网络监视器或像Ethereal这样的软件分析。
悲哀的是在Windows的比较晦涩的错误信息中很难找到好的信息,例如,一次想连接到一个Windows服务器,但是失败了,启用IKE踊跃后,OAKLEY.LOG显示出这些错误:
7-26: 13:50:20:656:1e4 Policy mismatch on offer method 1 policy method 1
7-26: 13:50:20:656:1e4 Attribute Phase II Diffie-Hellman group descriptor
7-26: 13:50:20:656:1e4      Expected: 0
7-26: 13:50:20:656:1e4      Received: 2
它简单地意味着Windows不想用FPS,但另外一端使用了PFS(DH Group2),当我在另一端禁用PFS后,你在哪里可以发现这些论断信息?你告诉我……
MSL2TP客户端更多的“发现并修理故障”信息在 “Administrator’s Guide to Microsoft L2TP/IPsec VPN Client”( http: //www.microsoft.com/technet/itsolutions/network/maintain/security/vpnclnta.asp 或者http://www.microsoft.com/windows2000/docs/VPNClient_AdminGuide.doc)。你应该做的一件是是:在MSL2TP客户端启用日志。“开始”菜单里有一个目录“Microsoft L2TP/IPSec VPN Client”,这个目录里的有一个L2TPConfig.exe(称为:Microsoft IPsec VPN Configuration),里面有一个设置 “Enable IPsec logging”,然后它会在C:\Program Files\Microsoft IPSec VPN Client目录下创建一个名为Isakmp.log的日志文件。在微软TechNet的Cable Guy(http: //www.microsoft.com/technet/columns/cableguy/cg0502.asp)也有这方面的诊断技巧。如果你用的是Windows 2000/XP,下面的微软知识库文档也许有用:
Basic L2TP/IPSec Troubleshooting in Windows XP
(http://support.microsoft.com/?kbid=314831)
Basic IPSec Troubleshooting in Windows 2000
(http://support.microsoft.com/?kbid=257225)
Basic IPSec Troubleshooting in Windows
(http://support.microsoft.com/?kbid=259335)
在VPN上DNS问题比较普遍,下面这个网站有解答这方面问题的技巧:http://www.tacteam.net/isaserverorg/vpnkitbeta2/dnsvpn.htm
23.1 证书
X.509证书可以像“预共享密钥”那样来使用。你需要设立多种公钥基础设施(PKI:Public Key Infrastructure)来为Openswan主机和Windows IPsec客户端创建私有密钥和X.509证书。
不要忘了,一旦你开始使用证书,就要禁用“预共享密钥”配置文件。如果“预共享密钥”和证书配置文件在同一个客户端(或IP地址)上,将会把 Openswan搞混。“预共享密钥”配置将优先。如果你需要证书和“预共享密钥”为Road Warriors同时工作,请参考 Sverre Gunnersen的使用说明(http: //www.nthdegree.com.au/sverre/publications/141004.html)。
OpenSSL是生成证书的常见选择,因为它是开放源代码的并且自由使用,
应避免在证书中使用特殊字符。像OpenCA、TinyCA、IDX-PKI这样的软件在建立“认证中心”时非常有用。作为选择,你可以购买一些软件来生成证书。Windows NT/2000/2003带了“认证中心”软件。SSH销售Certifier,一个“在管理服务提供者和企业环境发布和管理数字证书的PKI平台产品”。还有许多像Verisign和Baltimore等厂商。
任一种方法,最终都将得到PKCS#12格式的证书。PKCS#12是一个发布密钥和证书的标准。PKCS#12文件的扩展名为.p12或. pfx,包含了客户端的私有密钥,相应的证书和根CA的证书(甚至可能是一个CA证书链)。既然它包含了客户端的私有密钥,PKCS#12文件被使用口令加密。记住,客户端证书不得不通过相同的“认证中心”签名,像Openswan的证书一样。
在Windows 2000/XP下使用MMC(Microsoft Management Console)为L2TP/IPsec导入证书。因为Windows 95/98/Me没有带MMC,只好在Internet Explorer中导入PKCS#12文件,也就是在“工具”—— “Internet 选项”下的“保存证书”。OpenSSL命名文件的扩展名是.p12,介是Internet Explorer只识别扩展名为. pfx文件,所以必须选择“显示所有文件”,然后再导入.p12文件。一旦证书(带机器的私有密钥)被导入到Internet Explorer中,它也适用于MSL2TP客户端。
Windows 2000/2003 Server包含的CA,对证书支持 “增强型密钥用法”(EKU: Enhanced Key Usages)属性。这些EKU限制证书,所以它只能用到IPsec连接。其它用途(比如,用到WEB服务器)则不允许,这为服务器的PKI增加了一点额外的安全。如果你使用OpenSSL,你大概也可以建立带这些EKU属性的证书。
有一份Bugtraq邮件列表报告部分IPsec执行者有 “潜在的中间人攻击”(potential Man-in-the- Middle vulnerability)。如果客户端证书受到危害(这不太困难,例如手提电脑被盗),它可能被攻击者用来为第二台客户端伪造一个服务器证书,毕竟第一台客户端受到危害的证书是由CA发布的有效证书。可以在FreeS/WAN的邮件列中找到更多的信息。
23.2 在智能卡上的证书
为了额外的安全,证书可以存储在智能卡上(包括USB token)。在MSL2TP客户端上已经测试过了,并且它可以工作。当我开始连接时,它提示需要Ikey 2032 token的PIN号码,于是建立起连接。SSH Sentinel也应该能工作(它有一个称为 Accession Lite的seperate智能卡应用程序),但有点与IKey驱动不兼容。Windows 2000/XP自带的IPsec客户端使用智能卡可能有问题,好象没有办法将“本地计算机证书”保存到USB token上。根据微软的文档,它可以指定不同的“密码服务提供者”(CSP: Cryptographic Service Provider),比如某个能支持你智能卡或USB token的,但仅当你通过WEB接口(“web enrollment”)申请证书,不是当你通过一个PKCS#12格式的文件导入你的证书。
24 保护无线连接
WEP加密算法是无线802.11标准(WiFi)的一部分,它完全可以被破解。任何小孩用像Airsnorp这样的工具都可以破解WEP口令,只要他有足够的时间来收集确定数量的数据包。另一个问题是发布WEP密钥没有很好的等级,比如你正好多了一些用户。许多无线访问节点(access point)有额外的安全方法(比如SSID认证,禁用SSID广播和基于MAC地址的访问控制),但这仍然不牢固,利用 Airsnort或Kismet等工具很容易被绕过。一些人提议用像IPsec或PPTP这样的VPN协议代替WEP,这些协议时间上经受了考验,并且它们的安全性也很被大家所熟悉。很明显,你不应该只依靠WEP。
在无线连接上运行VPN的问题是,不能被阻止坏家伙们访问你的无线网络,他们仍可以做像攻击访问节点(AP:access point)或无线客户端的下流事情。如果一个用户的工作站没有被安全保护,通过无线连接它可以被黑客或病毒利用,例如:工作站可能开有端口,文件和打印共享没有被关闭,没有安装个人防火墙或缺少安全补丁。WEP和它的继承者如WPA、802.1x、EAP/LEAP/PEAP和802.11x防止没有正确的证书的人加入你的无线网络。微软为Windows XP/2003中的无线网络积极推行PEAP,因此,如果你没有使用一个好的无线安全协议(WEP不算在内),在客户端工作站上至少安装一个个人防火墙和可以防病毒的软件是明智的。
IPsec支持“预共享密钥”和证书。如果用户比较少“预共享密钥”比较容易使用,但劣势是用户必须有固定(静态)IP地址。幸运的是, RFC 1918范围的固定地址(192.168.x.x、10.x.x.x等)可以分配给无线用户。有一个例外:使用Windows 2000的“新建连接向导”不能工作,因为这个“向导”不支持“预共享密钥”。
另一个需要密切注意的事情是,如果VPN连接停止,明显地客户端应该不能访问你被保护的网络。这种说法是愚蠢的,如果你打开IP传送(IP forwarding),从无线网络来的数据包将被恰当地传送到你的内部网络。请确信为无线网络建立了防火墙或仅为内网地址配置IP传送。
在基于802.11标准的无线网络中从一个访问节点到另一个访问节点漫游时是一个普遍的问题,如果我没有犯错的话,无线连接将断开连接,这意味着IPsec连接也将断开连接,因为新的访问节点也许分发了一个新的IP地址。可是在L2TP标准中规定应该快速重新连接,但我不知道它和 Openswan和l2tpd之间工作的如何。
在无线网络上的最初测试没有像一般的网络(比如:在以太岗上)那样出现较多的MTU大小问题,复杂因素大概是内建的L2TP/IPsec客户端从丢失的数据包中不能很好的恢复。
德国Stuttgart的学生在他们的宿舍里的无线网络上使用了Linksys WRT54g路由器和一个中枢FreeS/WAN服务器,通过FreeRADIUS进行认证。
25 Linux作为一个L2TP/IPsec客户端
可能有这种情况,你希望使用Linux作为一个客户端连接到一个L2TP/IPsec VPN服务器(比如 Windows 2000/2003),这些情况下多数不是真正需要L2TP的,简单的IPsec应该足够了,并且Linux支持它。实际上,在 Linux客户端上使用L2TP会使事情变得复杂。但实际情况是你不能绕过它,比如,L2TP/IPsec VPN服务器的管理员会拒绝容纳Linux用户。我没有设法把Linux当作L2TP/IPsec客户端,也许它可以工作。我希望它像上面所说的配置L2TP/IPsec服务器那样相似。主要的差异大概是在l2tpd.conf中加入一个“client”节。
; Connect as a client to a server at 123.123.123.123
[lac windowsVPNserver]
lns = 123.123.123.123
; (rest of the parameters similar to the [lns default] section)
同样可能也要使用pppd的“usepeerdns”参数。Openswan的配置大概不需要改变。但开始一个到L2TP/IPsec服务器的连接将会清楚,比如:用命令:ipsec auto –up L2TP-CERT。
一旦IPsec连接启动,L2TP连接将(用类似下面的方法)被启动。
echo “c windowVPNserver” >; /var/run/l2tp-control
参考包含在l2tpd中的README获取关于L2TP连接的更多细节(less `rpm –ql l2tpd | grep \ /README`)。默认情况下l2tpd监听所有接口,如果你想使用Linux作为L2TP/IPsec客户端,看来不需要把l2tpd 也作为一个服务运行。你可以使用“listen-addr”参数将它只绑定到内网接口,避免L2TP服务完全暴露在外部。
26 这完全是思考,但是……
微软大概也试着把IPsec协议作为商品,所以支持它并扩充了由微软和Cisco开发的L2TP协议。微软把L2TP当成一个VPN协议来书写,比如:在微软的FAQ上有这样的对话:
问:我可以使用PPTP或L2TP吗?
答:L2TP被认为是比PPTP更安全并且允许你同第三方互相协同工作。
他们说的“L2TP”实际上是“L2TP/IPsec”,在L2TP/IPsec连接中是IPsec提供机密性和认证。看起来他们想把公众的注意力从IPsec(许多厂商拥有几个执行者)转移到L2TP(没有那么的产品可用)。另外,没有任何人愿意使用L2TP。它导致了“双重隧道”(额外的信息包顶部装置)并且大概只有一种手段进行额外的认证(当然,更适宜依靠NT SAM用户数据库,这意味着购买更多的Windows客户访问许可)。
我有一点迷惑,为什么微软发布MSL2TP客户端。他们最近已经停止了对“老版本”Windows的支持,而且这时候他们发布一个甚至能运行在 Windows 95上的软件。说得更广一点,发布免费的MSL2T,也因SafeNet正在蚕食它自己的第三方Windows IPsec客户端市场,引起了它的注意。
我也同意这样的观点:MSL2TP客户端是由SafeNet为微软开发的,Windows 2000/XP、Pkcket PC 2003的IKE/IPsec支持是和Cisco共同开发的,这显示出微软在内部全部的开发中所做的,没有足够高的优先权。

 

原文链接:http://www.chinaunix.net/jh/50/556457.html




相关文章:
eG Citrix 监控器
Ethernet的帧格式和结构
华为(Quidway AR18-22-24)路由器配置实例
简单利用路由黑洞解决DDOS流量攻击
我的linux试验题目
如何在HMC上激活网络时间协议NTP
Resin泛解析 - 三级域名最优应用方案
Resin多域名绑定 + 泛解析
resin 负载均衡
linksys wap54g 设置注意事项
acegi RememberMe&退出&匿名登陆
vnd命令~
LINUX网卡绑定
TCP包首部
IP包首部格式
指纹锁也不靠谱 电脑“破解”六大事件!
linux配置网关
使用 SCTP 优化网络
IPv4/IPv6过渡技术和方案分析
用三个源码包libnet、libnids、libpcap轻松搭建Li
Extensible Messaging and Presence Protocol (XM
组建CISCO多层交换网络入门
CISCO多层交换机的初始配置和排错
实施和配置VLAN
理解和配置802.1Q/802.1S和802.1W生成树协议
理解和配置cisco特定的生成树协议特性和STP排错
配置第二层和第三层的特性
理解和配置VLAN间的路由选择
理解和配置多层交换
理解和配置cisco多层交换网络中的服务质量