VPN入门教程:基本概念、使用方法及思科模拟器实践

数据来源

        本文仅用于信息安全的学习,请遵守相关法律法规,严禁用于非法途径。若观众因此作出任何危害网络安全的行为,后果自负,与本人无关。

1、引入

  • VPN可以实现在不安全的网络上,安全的传输数据,类似专网
  • VPN只是一个技术,使用PKI技术,来保证数据的安全三要素

2、安全三要素

        1)机密性

        2)完整性

        3)身份验证 

3、加密技术:

        1)对称加密:加密与解密使用相同的密钥

                                   密钥是通信双方协商生成,生成过程是明文通信

                                   优点:速度快

                                   缺点:密钥容易泄露 !

                对称加密算法:DES、3DES、AES

        2)非对称加密算法:使用公私密钥加密数据

                                   公私密钥成对生成,互为加解密关系!公私钥不能互相推算!

                                   双方交换公钥:

                                        使用对方的公钥加密实现机密性

                                        使用自己的私钥进行数字签名,实现身份验证

                                   优点:安全性高

                                   缺点:速度慢

                                   常见算法:RSA、DH

 4、完整性算法/hash值算法:

        MD5

        SHA

5、VPN的类型

        1)远程访问VPN(Remote Access VPN)

                一般用在个人到安全连接企业内部

                一般出差员工/在家办公,安全连接内网时使用

                一般公司部署VPN服务器,员工在外拔号连接PN即可

                常见RA-VPN协议: PPTP VPN、L2 TP VPN、 SSTP VPN、EZvpn/ easyvpn(思科私有)、 SSL VPN(目前比较流行)              

        2)点到点VPN 

                一般用在企业对企业安全连接

                一般需要在两个企业总出口设备之间建立VPN通道!

                常见的点到点VPN:IPsecVPN

6、IPsecVPN: 

        1)属于点到点VPN,可以在2家企业之间建立VPN隧道!

        2)VPN隧道优点:

                安全性

                合并两家企业内网 

        3)VPN隧道技术

                1)传输模式:只加密上层数据,不加密私有|P包头,传输速度快

                     通信过程:一方公司要与另一方公司使用VPN隧道安全通信,首先自己公司的内网数据到达自己的路由器后路由器会先将数据帧的4、5层的数据进行加密,然后将IP包头的目标IP源IP拿出来放到IP包头的可选项内(内网的ip无法在公网上存活),用自己的公司买的公网ip(配在链接路由器外网端口的IP)和目标的公网ip作为新的源IP与目标IP,到了目标路由器再从IP包头的可选项内取出数据还原数据帧的目标与源ip,目标公司回包的流程也是差不多。

                2)隧道模式(默认):加密整个私有IP包,包括|P包头,更安全,速度慢

 后面就是数据传到目标路由器,路由器再解封装然后传入目标内网。

        4)VPN隧道技术:重新封装技术 + 加密认证技术

        5)IPsecVPN分为2大阶段:

                第一阶段:管理连接(VPN双方建立连接/建立隧道

                        目的:通信双方设备通过非对称加密算法加密对称加密算法所使用的对称密钥,以达到安全地协商对称加密算法秘钥的目的

                        过程:双方设备先各自生成公私秘钥对,然后双方交换公钥,使用对方的公钥加密对称密钥,这样就可以解决对称密钥因为是双方明文通信产生的而安全性低的问题,又能获取对称密钥加密数据快的特性。

                命令:(思科)目的:建立隧道(IKE)

                         conf t

                        crypto isakmp policy             # 创建传输集/策略集,1是名称

                        encryption des/ 3des/aes        # 指定对称加密算法,一般使用aes

                        hash md5/sha                           # 指定完整性算法/hash值算法,一般使用sha

                        group 1/2/5                                # 默认使用DH非对称加密算法,这里指定公钥与私钥的长度,越长越安全也越慢,一般使用2或5

                        authentication pre-share         # 身份验证使用共享密钥算法

                        lifetime  秒                                # 配置该传输集/策略集的失效时间,失效了双方就会重新生成设备重新生成对称密钥,如果改成3600秒,那么双方每个1个小时都会更换密钥,这样可以防止密钥被破解,默认:86400秒 / 24小时

                        exit

                        crypto isakmp key   预共享密钥  address   对方的公网IP地址  # 配置指向对方公网IP的共享密钥

        预共享密钥作用:用来证明对方就是对方而不是黑客伪造的,对方的共享秘钥也要配置一样,比如我设置的共享密钥是:zhangsan    那对方的也要是:zhangsan      双方都要验证一下,共享密钥越长越复杂越好不能少于6位。

        实现原理:将共享密钥加在数据后面如:“数据”+zhangsan  这样加密后生成的哈希值基本上是独一无二的,黑客攻击替换了哈希值也能被发现因为我的哈希值多了 “zhangsan ”转换的 哈希值并以他作为身份验证的标准,没有就是伪造的。

                第二阶段:数据连接(加密要传输的数据)

                        目的:通过对称加密算法加密实际所要传输的私网(内网)数据

                定义VPN触发流量 :定义那些包要走VPN

                conf t

                access-list 100 permit ip 192.168.0.0 0.0.255.255 172.16.0.0 0.0.255.255  # 创建一个表号为100的表(1-255可选),添加一过滤条目允许192.168.开头的网段访问172.16开头的网段的数据进入隧道,也就是说192.168.开头的网段访问172.16开头的网段的数据进入路由器时路由器会把该数据路由到隧道中而不是上网0.0.255.255:是反子网掩码,0.0.255.255表示只检查前面两位IP,也就是只检查192.168.后面的忽略,只要这两位匹配上了就可以认定该IP符合条件 

                crypto ipsec transform-set 传输模式名 esp/sh-des/3des/asp-esp/sh-md5/sha-hmac  # 定义加密及认证方式

        例:  crypto ipsec transform-set wentran esp-aes  esp-sha-hmac

                ESP:支持加密及认证(身份验证+完整性

                AH:只支持认证(身份验证+完整性) 

        创建MAP映射表 

                目的:阶段一创建了传输集,阶段二定义了ACL表与加密及验证模式,创建MAP映射表将上述配置集合到MAP表内,再把MAP应用到路由器外网接口上

                conf t

                crypto map map名 1 ipsec-isakmp # 进入MAP表配置模式。创建一个map表并命名,数字 1 是标识,map名可以重复,可以用标识区分,isakmp表示第一阶段一所有策略集目的:跟对方交换密钥

                match address  acl表名          # 将第二阶段的数据连接的ACL表映射过来

                set transform-set 传输模式名  # 只要匹配ACL表的IP,就使用传输模式定义的加密及认证方式对数据进行加密

                set peer 对方的公网IP               #  配置目标的公网ip

                exit

        例:

                conf t

                crypto map wenmap 1 ipsec-isakmp

                match address 100

                set transform-set wentran

                set peer 200.1.1.2

                exit

        将MAP表应用到外网端口

                int f0/1(外网端口)

                crypto map wenmap # 把wenmap 表应用到接口上

                exit 

        注意:一个接囗只能应用一个map表

        查看命令: (特权模式的命令,其他模式下前面加do 空格)

                show crypto isakmp sa                               # 查看第一阶段状态(管理连接)

                show crypto ipsec sa                                   # 查看第二阶段状态(数据连接)

                show crypto isakmp policy                         # 查看第一阶段的策略配置集

                show crypto ipsec transform-set                # 查看第二阶段的传输模式

                sh run                                                             # 查看running-config文件,对做过路由器的所有配置都在这里

         

 7、路由器的工作原理

        如果同时给路由器的出外网端口配了NAT与VPN他们的执行顺序

                内网 -- to -- 外网:路由数据到出外网端口 -- 1NAT -- VPN  -- 出去

8、实验 (点到点VPN -VPN隧道)

  • 实验1:北京-上海-建立VPN隧道,并验证(中间的路由器不能配内网路由,通过对两边的路由器配置VNP实现通信)
  • 实验2:在实验1的基础上,要求2个公司能上网,但不影响VPN隧道
  • 实验3:在实验1和2的基础上,要求北京总部与广州新成立的分公司也建立VPN隧道
  • 实验4:(可选)在1-3的基础上,要求广州和上海之间不建立VPN隧道,但广州和上海可以互相安全的通信

实验1 

 步骤:

        1)给PC和路由的接口配置ip

  配置路由器端口IP命令

         en                                                       # 进入特权模式

        conf t                                                   # 进入全局配置模式

        int  Fa0/x​​                                             # 进入需要配置的端口

        ip add IP 子网掩码                              # 配置IP,如:  ip add 30.1.1.254 255.255.255.0

        no shut                                                # 开启端口

2)给左右两边的路由器配置默认路由

         命令:
                ip route ip 子网掩码 下一跳IP  # 给路由器配置一条静态路由

                ip route ip 0.0.0.0 0.0.0.0 下一跳IP   # 给路由器配置一条默认路由

        配置左边路由器:

                conf t                          # 进入全局配置模式 

                ip route 0.0.0.0 0.0.0.0 100.1.1.254

        配置右边路由器:

                conf t                          # 进入全局配置模式 

                ip route 0.0.0.0 0.0.0.0 200.1.1.254

 3)配置VNP隧道

注意以下的命令如果和我的模拟器配置的IP和连接的端口一样就可以复制粘贴到软件上,不同的请根据自己的实际情况,修改IP和接口号 

配置左边路由器的命令 

en
conf t
crypto isakmp policy 1
encryption aes
hash sha
group 2
authentication pre-share
lifetime 3600
exit
crypto isakmp key zhangsan address 200.1.1.1

access-list 100 permit ip 192.168.0.0 0.0.255.255 172.16.0.0 0.0.255.255
crypto ipsec transform-set wentran esp-aes esp-sha-hmac

crypto map wenmap 1 ipsec-isakmp
match address 100
set transform-set wentran
set peer 200.1.1.1
exit

int fa0/0
crypto map wenmap

配置右边路由器的命令

en
conf t
crypto isakmp policy 1
encryption aes
hash sha
group 2
authentication pre-share
lifetime 3600
exit
crypto isakmp key zhangsan address 100.1.1.1

access-list 100 permit ip 172.16.0.0 0.0.255.255 192.168.0.0 0.0.255.255
crypto ipsec transform-set wentran esp-aes esp-sha-hmac

crypto map wenmap 1 ipsec-isakmp
match address 100
set transform-set wentran
set peer 100.1.1.1
exit

int fa0/0
crypto map wenmap

4)拿一台PC继续ping一下目标公司的PC,测试网络的连通性

 实验2:在实验1的基础上,要求2个公司能上网,但不影响VPN隧道

 步骤:

        1)给连接服务器的路由器端口与服务器配置ip

          配置路由器端口IP命令

                 en                                                       # 进入特权模式

                conf t                                                   # 进入全局配置模式

                int  Fa0/x​​                                             # 进入需要配置的端口

                ip add IP 子网掩码                              # 配置IP,如:  ip add 150.1.1.254 255.255.255.0

                no shut                                                # 开启端口

         2)配置NAT让内网可以访问外网

        配置北京总公司的路由器(端口号与IP要改成自己的)

           定义内网端口

                en                     # 进入特权模式

                conf t                # 进入全局配置模式

                int fa0/1           # 进入需要设置的端口

                ip nat inside    # 将端口定义为内网端口

                exit

        定义外网端口

                conf t                # 进入全局配置模式

                int fa0/0            # 进入需要设置的端口

                ip nat outside  # 将端口定义为外网端口

                exit                   # 退到上一级

        定义内部地址池

                conf t                # 进入全局配置模式

                acc 101 deny ip 192.168.0.0 0.0.255.255 172.16.0.0 0.0.255.255    # 拒绝192.168开头网段访问172.16开头网段(不做IP源地址转换),注意配置这条命令不会影响实验一的VPN隧道,因为这里ACL表是101,实验1的是100,而且这里配置的表没有挂载到接口上,所以也不用担心192.168开头网段访问其他网段会被ACL技术干掉

                acc 101 permit ip any any    # 将所有的ip地址都加入101号地址池内,全部允许通过(除了92.168开头网段访问172.16开头网段的包)

                do show  ip access-list   表IP   #  查看ACL表, 表IP 是可选的,不写就查看所有表

                exit                          # 退到上一级

        做PAT动态映射(映射到外网端口)

                conf  t

                ip  nat   inside   source  list  100  int  fa0/0   overload   # 源ip地址如果在地址池1中,就允许使用f0/1接口上的公网ip地址做替换,然后再做端口转换

测试一下

        配置上海分公司的路由器(端口号要改成自己的)

          定义内部地址池 (其他命令都一样就是这里的IP要调换一下)

                  acc 101 deny ip 172.16.0.0 0.0.255.255 192.168.0.0 0.0.255.255    # 禁止172.16开头网段访问192.168开头网段(不做IP源地址转换)

                acc 101 permit ip any any    # 将所有的ip地址都加入101号地址池内,全部允许通过(除了92.168开头网段访问172.16开头网段的包)

测试一下

  实3:在实验1和2的基础上,要求北京总部广州新成立的分公司建立VPN隧道

 步骤:

        1)给连接服务器的路由器端口与服务器配置ip

 

       配置路由器端口IP命令

                 en                                                       # 进入特权模式

                conf t                                                   # 进入全局配置模式

                int  Fa0/x​​                                             # 进入需要配置的端口

                ip add IP 子网掩码                              # 配置IP,如:  ip add 10.1.1.1 255.255.255.0

                no shut                                                # 开启端口

        2)给路由器的外网接口配置一条默认路由

                 conf t                          # 进入全局配置模式 

                ip route 0.0.0.0 0.0.0.0 120.1.1.254

                exit                             # 退到上一级

                do show ip route        #  查看路由表

          3)配置VNP隧道

配置自己路由器的命令

en
conf t
crypto isakmp policy 1
encryption aes
hash sha
group 2
authentication pre-share
lifetime 3600
exit
crypto isakmp key zhangsan address 100.1.1.1

access-list 100 permit ip 10.1.0.0 0.0.255.255 192.168.0.0 0.0.255.255
crypto ipsec transform-set wentran esp-aes esp-sha-hmac

crypto map wenmap 1 ipsec-isakmp
match address 102
set transform-set wentran
set peer 100.1.1.1
exit

int fa0/1
crypto map wenmap

配置北京的路由器

    sh run                                                             # 查看running-config文件,对做过路由器的所有配置都在这里

 配置思路分析:

        (1)阶段一现在只有指向上海分公司的公网ip:200.1.1.1,我们现在需要让他多一条指向广州分公司的公网ip:120.1.1.1 ,阶段一其他的设置是可以共用的,所以阶段一配置命令如下:

                 en                                                       # 进入特权模式

                conf t                                                   # 进入全局配置模式

                crypto isakmp key zhangsan address 120.1.1.1  # 配置指向广州公网IP的共享密钥

               do  sh run                                                  # 查看running-config文件,检查一下刚才的配置

         (2)阶段二之前配置是在ACL表号为100的表里面设置让192.168在访问上海分公司172.16的网段可以走VPN隧道,我们现在需要让他多一条允许192.168在访问广州分公司内网IP:10.1开头的网段也可以走VPN隧道,阶段二其他的设置也是可以共用的,所以阶段二配置命令如下:

                conf t                                                   # 进入全局配置模式 

                access-list 102 permit ip 192.168.0.0 0.0.255.255 10.1.0.0 0.0.255.255  # 往北京的路由器的ACL表号为102的表添加一条让192.168.开头的网段ip可以访问10.1开头的网段条目,注意表号100的已经是给北京访问上海的使用了,不能再把条目添加都100表内

                do sh run                                                  # 查看running-config文件,检查一下刚才的配置

         (3)阶段三就是配置MAP映射表

                conf t                                                   # 进入全局配置模式

                crypto map wenmap ipsec-isakmp # 进入MAP表配置模式。创建一个map表并命名为wenmap ,数字 2 是标识,我这里的模式名和实验一的MACP是一样并且wenmap 这张表之前已经应用到接口上了现在是通过标识来区分不同的表,之前的标识是1,现在的是2

                match address 102    # 将第二阶段的数据连接的ACL表 102映射过来,简单理解就是要使用102表做匹配
                set transform-set wentran   # 只要匹配ACL表的IP,就使用实验一定义的传输模式wentran 做加密及认证方式对数据进行加密
                set peer 120.1.1.1           # 配置目标的公网ip(这里是指广州分公司的公网ip)

        (4)现在北京指向广州分公司的VPN隧道已经配置完成了,但是现在还是无法通信的因为在实验2我们给北京总部的路由器配置了NAT的PATPAT会把数据帧的源IP转换成公网ip,我们这里北京访问广州分公司是走VPN隧道的所以要设置豁免,让PAT对他不做转换:

        向ACL表插入条目

             conf t                                                   # 进入全局配置模式

            ip access-list extended 101   # 进入要修改的表101

            15 deny ip 192.168.0.0 0.0.255.255 10.1.0.0  0.0.255.255  # 在ID为15的位置插入条目

             exit                                                 # 退到上一级

             do show ip access-list   101        # 查看ACL表,表号可选,不写查找全部

         4)测试,网络连通性

                 先用北京的PC上网与ping 一下上海的PC

        然后让广州的PC ping 北京的PC

实验4:在1-3的基础上,要求广州和上海之间不建立VPN隧道,但广州和上海可以互相安全的通信

        (1)现在已经有了VPN隧道,不过是广州与北京的,我们要加ACL表内添加一条匹配广州与上海的条目。

        目的:因为现在的广州分公司VPN隧道是指向北京的,我们已经加ACL表内添加一条匹配广州与上海的条目,所以用广州的PC访问上海的PC的数据也会被路由到北京总部的那个路由器,然后再配置一下北京总部的那个路由器的ACL表,再由他路由把数据路由到上海分公司(之前已经配置过北京到上海的VPN隧道)

        在广州这边的路由器添加 

          conf t                                                   # 进入全局配置模式

         acc 102 permit ip 10.1.0.0 0.0.255.255 172.16.0.0 0.0.255.255  # 添加一条匹配广州到上海的条目(意思就是广州到上海也让他走VPN隧道,这个隧道是广州到北京。

通俗点理解(举例):广州到上海没有高铁(VPN隧道),但是广州到北京有高铁我可以先坐车到北京再转车到上海,因为北京到上海有高铁(有VPN隧道))

         (2)北京总部与上海分公司的VPN隧道的ACL表只有一条匹配北京访问上海的(192.168 - 172.16),现在要加一条广州到上海的条目(10.1 - 172.16)

        目的:让广州访问上海分公司的数据到达北京总部这边让北京总部这边的路由器再转发到上海,实现广州与上海的安全通信,而不用再次花钱买VPN隧道。

      在北京这边的路由器添加  

          conf t                                                   # 进入全局配置模式

          acc 100 permit ip 10.1.0.0 0.0.255.255 172.16.0.0 0.0.255.255  # 添加一条匹配广州到上海的条目(意思就是广州到上海也让他走VPN隧道,这个隧道是北京到上海。转车到上海)

        现在广州访问上海的数据行走的路线图

        (3)现在广州访问上海分公司数据可以到达了,但是上海分公司现在还无法给广州回包,或者说是上海无法访问广州。

        现在配置上海到广州,思路和配置广州的一样,上海到广州的数据先发给北京总部的路由器再转发到广州

                 conf t                                                   # 进入全局配置模式 

                acc 100 permit ip 172.16.0.0 0.0.255.255  10.1.0.0 0.0.255.255   # 添加一条匹配上海到广州的条目 

        注意:因为在实验2给上海的路由器配置了NAT,转换了源IP为外网端口ip但是这里我们是要上海与广州通信是走VNP隧道,不用转换IP包的源IP地址,所以要配置过滤

  向ACL表插入条目

             conf t                                                   # 进入全局配置模式

            ip access-list extended 101   # 进入要修改的表101

            15 deny ip  172.16.0.0  0.0.255.255   10.1.0.0  0.0.255.255  # 在ID为15的位置插入条目,172.16 访问 10.1.不用做NAT地址转换(上海到广州不做地址转换)

             exit                                                 # 退到上一级

             do show ip access-list   表号       # 查看ACL表,表号可选,不写查找全部

 

 (4)让北京总部的路由器转发上海到广州的数据包到广州

                conf t                                                   # 进入全局配置模式 

                acc 102  permit ip  172.16.0.0  0.0.255.255   10.1.0.0  0.0.255.255   # 添加一条匹配上海到广州的条目 ,注意这里要加到广州与北京的VPN隧道的ACL表内我这里是102,北京到上海的是100

 (5)测试广州到上海/上海到广州的网络连通性

 

 

9、远程访问VPN

在公司需要搭建PN服务器

  • VPN服务器需要对PN客户端进行身份验证
  • VPN服务器需要给VPN客户端下发权限及P地址 

        实现原理:

                1)公司配置一个远程VPN服务器,员工在外面要访问公司内部的资源时就要对VPN服务器进行拨号,VPN服务器收到后就会下发一个私网ip地址如:172.16.1.1

                2)然后员工的PC就会使用这个IP访问公司的VPN服务器,不过私网是不能在互联网上存活的,所以员工访问公司的数据帧会被加密,再封装一个IP包头(源ip是员工现在连接的路由器配置的公网ip,目标是公司的公网ip),数据帧到达公司的路由器后就会解封装还原数据帧

                3)还原之后路由器会把数据包的源IP(172.16.1.1)拿出来,使用公司的内网的网关(192.1.1.1)替换,然后公司内网被访问的服务器就以为是192.1.1.1(网关)在访问他,回包的时候就会发给网关(目标ip是网关),网关一般是配置在路由器上的,这就意味着回包的数据发到了路由器然后路由器再把数据包的现在目标IP(网关)拿掉,把刚才的172.16.1.1(员工的ip)替换上去再加密数据包,重新封装一个IP包头(源IP:公司的公网IP,目标IP:员工现在连接的路由器配置的公网ip),然后再发送出去。

10、实验:模拟翻墙(注意:仅用来学习原理,翻墙犯法)

 步骤:

        1)使用一台windowsXP、两台windows2003或2007/8虚拟机,一台当做VPN服务器,windowsXP网络设置为VMnet1VPN服务器一块网卡设置成VMnet1另一块网卡设置成VMnet2,某国google服务器网络设置为VMnet2

        给VPN服务器添加一块网卡 

         第一块网卡连国内,网络设置为VMnet1, 第二块网卡连国外,网络设置为VMnet2。

         某国google服务器网络设置为VMnet2

        2)给虚拟机配置IP(国内主机XP配置:100.1.1.2 /24,VPN连接国内的VMnet1网卡配置:100.1.1.1 /24,另一块:200.1.1.1 /24,某国google服务器: 200.1.1.2 /24)

        3)某国google服务器上IIS-Web部署一个网页,等下用国内的主机访问测试

现在国内的主机无法访问该网页,不过VPN服务器可以访问该网页,而国内的主机又可以访问VPN服务器

        4)给VPN服务器这台PC装上VPN服务器的软件并开启

 PPTP 或  L2TP 的VPN协议的端口号都是 TCP:1723 

        netstat -an  #  查看本机开放的端口号 

         开启VPN服务器

         5)在VPN服务器的PC创建一个普通账号让其他要翻墙的PC可以用来拨号访问

        6)打开VPN服务器配置NAT地址转换,让国内的PC访问国外的网站时的私网地址转换会被成VPN服务器公网ip,然后以VPN服务器的身份访问国外的网站实现翻墙(防火长城)

        配置给VPN拨号的PC下发的私有地址

         配置NAT地址转换

         选择外网接口让数据出这个接口时做网络地址转换

         到这里就搭建好了VPN服务器

        7) 使用winXP-国内的主机拨号VPN,这个拨号功能是windows系统自带的,XP和win10的方式都是不一样的,需要可以网上搜索,也可以下载软件用软件进行拨号

 

        8)使用winXP-国内的主机访问google网站

注意:

        如果拨号拨上了VPN服务器,那以后你的PC访问国内的网站也是以国外的VPN服务器的身份进行访问的会有一定的影响,可能不访问不了会被防火长城隔离,但是你访问和你同一局域网下的设备不会有影响。(简单理解就是:你只要连接上了VPN那你以后只要不是访问和自己同一wifi或网线下的人,其他的流量都会走VPN隧道。

 扩展知识:PC上也有路由表

        route print   # 查看路由表

猜你喜欢

转载自blog.csdn.net/weixin_43263566/article/details/128289313
今日推荐