一篇值得读一读的文章。。。


虚拟私用网(virtual private network,×××)是对各种利用公共网络来传输信息的私用的加密网络的统称。在向其用户提供所需要的安全性和网络资源的同时,因为不需要使用专用的网络通信线路,所以×××网络的建设成本相对要低廉得多。因为×××在成本方面有着其他解决方案难以比拟的优势,当需要向自己的远程用户或各地分支机构提供一种能够让它们安全地彼此通信的手段的时候,绝大多数公司都会把基于因特网的×××网当作自己的首选。

    ×××可以建立在任何一种类型的网络连接(如租用专线)上,但它们的标准用途却是在那些公共网络上建立各种私用的网络。×××需要周密细致的配置和计划,在具体实现时更是要小心谨慎。绝大多数大中型组织都会采用一种专用的×××解决方案,并有专门经过培训的网络人员负责对之进行管理和维护。
一、Linux下的主要×××技术
1、 IPSec(Internet Protocol Security)
    IPSec是IETF(Internet Engineer Task Force)正在完善的安全标准,它把几种安全技术结合在一起形成一个较为完整的体系,受到了众多厂商的关注和支持。通过对数据加密、认证、完整性检查来保证数据传输的可靠性、私有性和保密性。
    优点:它定义了一套用于认证、保护私有性和完整性的标准协议。 IPSec支持一系列加密算法如DES、三重DES、IDEA。它检查传输的数据包的完整性,以确保数据没有被修改。IPSec用来在多个防火墙和 服务器之间提供安全性。IPSec可确保运行在TCP/IP协议上的×××s之间的互操作性。
    缺点:IPSec在客户机/ 服务器模式下实现有一些问题,在实际应用中,需要公钥来完成。IPSec需要已知范围的IP地址或固定范围的IP地址,因此在动态分配IP地址时不太适合于IPSec。除了TCP/IP协议外,IPSec不支持其他协议。另外配置比较复杂。
    Linux实现使用IPSec的 软件是:Free S/WAN http://www.freeswan.org/ 。FreeS/WAN不支持NAT(Network Address Translation,网络地址翻译)和IP地址伪装用于加密通道通信。
2、 PPP OVER SSH
    SSH一种基于安全会话目的的应用程序。SSH支持身份认证和数据加密,对所有传输的数据进行加密处理。同时,可以对传输数据进行压缩处理,以加快数据传输速度。SSH既可以代替Telnet作为安全的远程登录方式,又可以为 FTP、POP等提供一个安全的“隧道”。OpenSSH是SSH的替代软件包,是免费的。用PPP端口在SSH上运行技术实现×××的方法。优点:安装配置简单。缺点:运行时系统开销比较大。PPP OVER SSH具体应用软件有SSHVNC( http://3sp.com/products/sshtools/sshvnc/sshvnc.php
3、 CIPE : Crypto IP Encapsulation
    CIPE (加密 IP 封装)是主要为 Linux 而开发的 ××× 实现。CIPE 使用加密的 IP 分组,这些分组被封装或“包围”在数据报(UDP)分组中。CIPE 分组被给以目标头信息,并使用默认的 CIPE 加密机制来加密。CIPE 使用标准的 Blowfish 或 IDEA 加密算法来支持加密。根据你所在国家的加密出口法规而定,你可以使用默认方法(Blowfish)来加密你的专用网上的所有 CIPE 交通。CIPE 配置可以通过文本文件、图形化的网络管理工具来完成。用CIPE技术实现×××的方法,优点:安装配置简单,运行时系统开销比较小。缺点:CIPE不是一种标准×××协议,不能支持所有平台。CIPE网址: http://sites.inka.de/
4.SSL ×××
    IPSec ×××和SSL ×××是两种不同的×××架构,IPSec ×××是工作在网络层的,提供所有在网络层上的数据保护和透明的安全通信,而SSL ×××是工作在应用层(基于HTTP协议)和TCP层之间的,从整体的安全等级来看,两者都能够提供安全的远程接入。但是,IPSec ×××技术是被设计用于连接和保护在信任网络中的数据流,因此更适合为不同的网络提供通信安全保障,而SSL ×××因为以下的技术特点则更适合应用于远程分散移动用户的安全接入。Open××× 是一个基于 OpenSSL 库的应用层 ××× 实现。详细信息可以参考 http://www.open***.net
    Open×××优点: 支持多种常用应用系统。目前版本支持Linux, Windows 2000/XP and higher, OpenBSD, FreeBSD, NetBSD, Mac OS X, and Solaris 。
    支持多种客户端连接模式。可以通过GUI 便捷的操作Open××× 工作在OSI layer 2 或 3 使用标准的 SSL/TLS 协议, 可以通过certificates 或smart cards 认证。 加密强度较高,不易在传输通路上被人劫持破解信息资讯。
    Open×××缺点:使用SSL 应用层加密,传输效率要低于IPSEC 传输的××× 软件
5.PPPTD
    点对点隧道协议(PPTP)是一种支持多协议虚拟专用网络的网络技术。 PPTP 可以用于在 IP 网络上建立 PPP 会话隧道。在这种配置下,PPTP 隧道和 PPP 会话运行在两个相同的机器上,呼叫方充当 PNS。PPTP 使用客户机-服务器结构来分离当前网络访问服务器具备的一些功能并支持虚拟专用网络。PPTP 作为一个呼叫控制和管理协议,它允许服务器控制来自 PSTN 或 ISDN 的拨入电路交换呼叫访问并初始化外部电路交换连接。PPTP 只能通过 PAC 和 PNS 来实施,其它系统没有必要知道 PPTP。拨号网络可与 PAC 相连接而无需知道 PPTP。标准的 PPP 客户机软件可继续在隧道 PPP 链接上操作。PPTP 使用 GRE 的扩展版本来传输用户 PPP 包。这些增强允许为在 PAC 和 PNS 之间传输用户数据的隧道提供低层拥塞控制和流控制。这种机制允许高效使用隧道可用带宽并且避免了不必要的重发和缓冲区溢出。PPTP 没有规定特定的算法用于低层控制,但它确实定义了一些通信参数来支持这样的算法工作。 PPTP相对其他远程“拨入”型×××的不凡之处在于微软Windows(95/98/Me/NT/2000/XP/Vista)拥有一个内置的PPTP 客户端,这意味着管理员不必涉及任何额外的客户端软件以及那些通常伴随出现的问题。Linux  PPTP服务器实现的软件是:poptop( http://www.poptop.org/ )开源PPTP服务器产品Poptop特性为:
  • 微软兼容的认证和加密(MSCHAPv2,MPPE40-128位RC4加密) 。
  • 支持多个客户端连接 。
  • 使用RADIUS插件无缝集成到一个微软网络环境中 。
  • 和Windows 95/98/Me/NT/2000/XP PPTP客户端共同工作 。
  • 和Linux PPTP客户端共同工作 。
  • Poptop在GNU通用公共许可下是,并仍将是完全免费。



下面分别介绍基于以上技术的×××在Linux下的实现:

第一部分 建立Linux下的×××-CIPE
一、CIPE概述
    人们目前已经开发出了很多种×××程序,这里介绍的最容易安装的 ×××软件之一:CIPE。×××是由经过相互授权的 通信双方在公网上建立的 安全通信隧道,数据在隧道中进行加密传输,用于总部与分支机构的安全通信。虚拟专用 网络是一种新的网络技术,用于跨过 Internet 或局域网而安全地访问企业网。CIPE 是主要为 Linux 而开发的 ××× 实现。CIPE 使用加密的 IP 分组,这些分组被封装或“包围”在数据报(UDP)分组中。CIPE 分组被给以目标头信息,并使用默认的 CIPE 加密机制来加密。然后,这些分组再通过 CIPE 虚拟网络设备(cipcbx)和 IP 层,以及通讯公司的网络被作为 UDP 分组传输给预想中的远程节点。CIPE网络模型如图-1。

 
图-1 CIPE ×××网络模型
 
 
CIPE 是Linux 网络管理员和系统管理员的明智选择,其原因如下: 
  • CIPE 被包括在红帽企业 Linux 中,因此所有你想连接到你的内联网的红帽企业 Linux 边缘机器(如防火墙和网关机器)和个体客户机器上都可以利用它。Redhat  Linux 还包括支持 CIPE 的加密术。 
  • CIPE 使用标准的 Blowfish 或 IDEA 加密算法来支持加密。根据你所在国家的加密出口法规而定,你可以使用默认方法(Blowfish)来加密你的专用网上的所有 CIPE 交通。
  • 因为 CIPE 是基于软件的,只要运行红帽企业 Linux,任何一个较老的或闲置的机器都可以充当 CIPE 网关,所以你不必购买昂贵的专用 ××× 硬件来安全地连接两个局域网,从而给机构节省资金。
  • CIPE 被积极开发来与 iptables、ipchains、以及其它基于规则的防火墙一起使用。要和现存的防火墙规则共同存在,只需要让对端接受进入的 CIPE UDP 分组就可以了。
  • CIPE 配置是通过文本文件来完成的。这使管理员不必使用通过网络运行效果不佳的图形化工具来远程地配置 CIPE 服务器和客户。CIPE 还可以使用网络管理工具来配置。
    CIPE软件在Redhat Linux 9.0 - Red Hat Enterprise Linux AS 3.0的安装光盘里都可以找到它。安装CIPE的办法有两种:一是从安装光盘来安装它,二是从CIPE软件的官方主页 http://sourceforge.net/projects/cipe-linux下载;下面笔者分别介绍。
 
二、使用在Redhat Linux 9.0  网络管理工具来配置CIPE ×××
    1. 服务器端配置
    点击“主选单”-“系统配置”-“网络配置”-“新建”-“CIPE(×××)连接”进行×××隧道配置。见图-2。
图-2 CIPE服务器端配置
 

    最后点击“生成”按钮产生一个128位(32个16进制数)的密匙,接着点击确定按钮。最后选择“当计算机启动时激活该设备”。CIPE在服务器端配置见表-1:
                   
 
 
表-1 CIPE服务器端设定

    点击“前进”按钮继续查看汇总信息见图-3。
图-3 CIPE 信息汇总

    激活CIPE连接见图-4。
 
图-4 激活CIPE连接

    下面还要作三项工作:
    (1)使系统支持IP转发,使用命令: /sbin/sysctl –w net.ipv4.ip_forward=1
    (2)添加路由:route add -net 192.168.1.3 netmask 255.255.255.0 gw 192.168.1.9
    (3)打开防火墙的CIPE端口7777
    2.CIPE客户机配置
    由于CIPE要求服务器和客户机的密匙完全相同所以,首先将密匙文件:options.cipcb从服务器复制到客户机主机的/etc/cipe/ 目录中。
    # scp root@192.168.0.3:/etc/cipe/options.cipcb0 /etc/cipe/options.cipcb0
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '192.168.0.3' (RSA) to the list of known hosts.
root@192.168.0.3's password:
options.cipcb0       100% |***************************************| 61       00:00
    CIPE这个 软件在服务器端和客户机使用相同的界面。方法和服务器端配置一样,见图-5。
图-5 CIPE客户机配置界面

    接着点击“前进”按钮。客户机配置结束。
    3.使用CIPE网络接口连接×××服务器
     在客户机进行连接测试,首先使用命令察看网络接口:
# ifconfig -cipcb0
cipcb0    Link encap:IPIP Tunnel  HWaddr
          inet addr:10.0.0.2  P-t-P:10.0.0.1  Mask:255.255.255.255
          POINTOPOINT NOTRAILERS RUNNING NOARP  MTU:1442  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:100
          RX bytes:0 (0.0 b)  TX bytes:0 (0.0 b)
    此时客户机的cipcb0没有激活,使用命令激活cipcb0,然后察看路由表:
#ifup cipcb0
#route
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
10.0.0.1        *               255.255.255.255 UH    0      0        0 cipcb0
192.168.1.0     *               255.255.255.0   U     0      0        0 eth0
127.0.0.0       *               255.0.0.0       U     0      0        0 lo
default         192.168.1.1     0.0.0.0         UG    0      0        0 eth0
    可以看到×××端口已经打开,路由表中包括CIPE服务器的远程虚拟地址。下面使用ping命令连接CIPE服务器的虚拟地址(10.0.0.1)进行测试。
#ping -c 4 10.0.0.1
PING 10.0.0.1 (10.0.0.1) 56(84) bytes of data.
64 bytes from 10.0.0.1: icmp_seq=1 ttl=64 time=0.681 ms
64 bytes from 10.0.0.1: icmp_seq=2 ttl=64 time=0.341 ms
64 bytes from 10.0.0.1: icmp_seq=3 ttl=64 time=0.080 ms
64 bytes from 10.0.0.1: icmp_seq=4 ttl=64 time=0.094 ms
--- 10.0.0.1 ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3013ms
rtt min/avg/max/mdev = 0.080/0.299/0.681/0.243 ms
×××连接完成。下面断开×××连接,使用命令:“ifdown cipcb0”然后察看路由表:
#ifdown cipcb0
#route
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
192.168.0.0     *               255.255.255.0   U     0      0        0 eth0
127.0.0.0       *               255.0.0.0       U     0      0        0 lo
录由表的10.0.0.1已经清除。

    这里我们使用在Redhat Linux 9.0  网络管理工具来配置CIPE ×××,对于没有这个工具的Linux发行版本(如RHEL 4.0 ,SUSE、红旗Linux)我们可以通过安装从CIPE软件的官方主页 http://sourceforge.net/projects/cipe-linux下载的源代码安装。
 
转自: IT168

 

 

 

—————————————————————————————————

特别声明:--

一、本文为原创,著作权及使用权为(作者笔名:闪电cto)本人所有。 ­

二、本文首发于51cto个人博客(http://xudeqiang.blog.51cto.com)。  ­

三、本文只供互联网上的读者分享,不供共享范畴,希知。 ­

四、未经许可严禁对本文作修改、节选、断章性质的处理。 ­

五、可转载,但必须注明原文章首发的出处网址,及文章作者,严禁复制。 ­

六、如若转摘用于杂志网络媒体新闻,必须通知作者得到允许后方可,需收稿费。­

七、作者联系信息:QQ:306718122   邮箱levinboy@foxmail.com

——————————————————————————————