使用Linux L2TP/IPsec VPN 服务器默认情况下,Windows客户会使用MS-CHAP进行PPP认证。问题是大多数发行版包含的PPP服务不支持MS-CHAP,比如 Red Hat Linux 9或更早的版。一个解决方法是配置每个Windows客户使用CHAP。另一个解决方法是更新pppd到包含MS-CHAP (v2)的2.4.2或更高版本。如果你连接一个不支持MS-CHAP的服务器,客户端配置为使用MS-CHAP,pppd将会提示 “auth chap 81”和“peer will not authorize”。一但你安装一个支持MS-CHAP的pppd,你需要在 /etc/ppp/options.l2tpd增一行(根据你的pppd版本,参照man pppd): +mschap-v2 或者 require-chapms-v2 使用PAP或(MS-)CHAP最容易的方法是一个口令文件(secrets)。口令文件指定为/etc/ppp/chap-secrets或者 /etc/ppp/pap-secrets(分别对应于PAP还是CHAP/MS-CHAP)。当用户数量较多而更为复杂的情况下,你也许会寻找更为灵活的东西。这是来自文档(毕竟它是PPP出版)的一小部分,但是这有多种可能的解决方案: 在l2tpd.conf中使用“unix authentication”关键字。账户名和口令将依靠Linux用户数据库(/etc/passwd)来检查。为PPP选项增加“login”关键字后会它会做什么。记住,你最好使用PAP,因为(MS-)CHAP不能使用保存在/etc/pssswd文件中的预加密用户口令。账户名仍由/etc/ppp/pap-secrets指定,但是在这个文件中口令为空字符串(“”)时,pppd使用Unix口令。参见:man pppd。 pppd2.4.2以上版本包含了RADIUS插件(radius.so,radattr.so),允许你依靠RADIUS服务对用户进行认证。在http://poptop.sourceforge.net/dox/radius_mysql.html有利用RADIUS和MySQL的安装示范。他们使用pppd,同样也适用于L2TP。 pppd2.4.3及以上版本包含了一个由Samba小组的Andrew Bartlet提供的winbind插件(winbind.so),它提供依靠Samba或Windows域控制器使用MS-CHAP或MS-CHAPv2对用户认证的能力。Andrew发布了安装文档:http: //hawkerc.net/staff/abartlet/comp3700/final-report.pdf。 多数ppp守护进程目前编译时都有PAM支持。这意味着你可以使用所有的认证机制来认证。例如:插入上面提到的winbind插件,你可以用像 pam smb(包含pam_smb_auth)、pam_winbind或pam_ntdom(已经停止)的模块依靠Samba或Windows服务器认证。还有,你可以用pam_ldap来依靠LDAP服务认证。 在/etc/ppp/options.l2tpd中指定noauth,你就可以完全忘记PPP认证。它可以在任何版本的pppd上工作,因为它不再要求客户进行PPP认证(当然客户仍然有IPsec认证)。但是,这还算是一个比较激烈的解决办法。你不应该简单地省去PPP认证,尽管它不会对整个安全增强多少。 微软也开发了MPPE,一种PPP加密协议。它基于RSA安全体系RC4加密算法,并且被用到了PPTP中。通常,你不要想使用MPPE与 L2TP/IPsec结合使用,因为它意味着IPsec和MPPE双重加密。有时Windows客户想强制使用MPPE。如果那样的话,在那些 Windows客户上禁用加密。这可能把用户搞混。他禁用MPPE加密,认为根本没有任何加密,IPsec已经提供了加密,但是用户大概不会知道这些。一些Windows客户也支持压缩。你注意,这是PPP压缩,不是IPsec压缩(IPCOMP)。微软使用的压缩协议(MPPC)是有专利限制的。如果你仍想使用MPPC,参考配置一个LINUX PPP服务器(http://www.poptop.org)。 16.1 安装和配置PPP(LINUX) 上一篇:让Linux NAT服务器支持UPnP 下一篇:利用IP 别名托管多个SSL 站点 更多相关文章
|
推荐文章
精彩文章
|