本文仅用于信息安全的学习,请遵守相关法律法规,严禁用于非法途径。若观众因此作出任何危害网络安全的行为,后果自负,与本人无关。
密钥是通信双方协商生成,生成过程是明文通信!
优点:速度快
缺点:密钥容易泄露 !
对称加密算法:DES、3DES、AES
公私密钥成对生成,互为加解密关系!公私钥不能互相推算!
双方交换公钥:
使用对方的公钥加密实现机密性
使用自己的私钥进行数字签名,实现身份验证
优点:安全性高
缺点:速度慢
常见算法:RSA、DH
MD5
SHA
一般用在个人到安全连接企业内部
一般出差员工/在家办公,安全连接内网时使用
一般公司部署VPN服务器,员工在外拔号连接PN即可
常见RA-VPN协议: PPTP VPN、L2 TP VPN、 SSTP VPN、EZ/ easy(思科私有)、 SSL VPN(目前比较流行)
一般用在企业对企业安全连接
一般需要在两个企业总出口设备之间建立VPN通道!
常见的点到点VPN:IPsecVPN
安全性
合并两家企业内网
1)传输模式:只加密上层数据,不加密私有|P包头,传输速度快
通信过程:一方公司要与另一方公司使用VPN隧道安全通信,首先自己公司的内网数据到达自己的路由器后路由器会先将数据帧的4、5层的数据进行加密,然后将IP包头的目标IP与源IP拿出来放到IP包头的可选项内(内网的ip无法在公网上存活),用自己的公司买的公网ip(配在链接路由器外网端口的IP)和目标的公网ip作为新的源IP与目标IP,到了目标路由器再从IP包头的可选项内取出数据还原数据帧的目标与源ip,目标公司回包的流程也是差不多。
2)隧道模式(默认):加密整个私有IP包,包括|P包头,更安全,速度慢
后面就是数据传到目标路由器,路由器再解封装然后传入目标内网。
目的:通信双方设备通过非对称加密算法加密对称加密算法所使用的对称密钥,以达到安全地协商对称加密算法秘钥的目的。
过程:双方设备先各自生成公私秘钥对,然后双方交换公钥,使用对方的公钥加密对称密钥,这样就可以解决对称密钥因为是双方明文通信产生的而安全性低的问题,又能获取对称密钥加密数据快的特性。
命令:(思科)目的:建立隧道(IKE)
conf t
crypto isakmp policy 1 # 创建传输集/策略集,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:只支持认证(身份验证+完整性)
目的:阶段一创建了传输集,阶段二定义了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
int f0/1(外网端口)
crypto map wenmap # 把wenmap 表应用到接口上
exit
注意:一个接囗只能应用一个map表
show crypto isakmp sa # 查看第一阶段状态(管理连接)
show crypto ipsec sa # 查看第二阶段状态(数据连接)
show crypto isakmp policy # 查看第一阶段的策略配置集
show crypto ipsec transform-set # 查看第二阶段的传输模式
sh run # 查看running-config文件,对做过路由器的所有配置都在这里
如果同时给路由器的出外网端口配了NAT与VPN他们的执行顺序
内网 -- to -- 外网:路由数据到出外网端口 -- 1NAT -- VPN -- 出去
配置路由器端口IP命令
en # 进入特权模式
conf t # 进入全局配置模式
int Fa0/x # 进入需要配置的端口
ip add IP 子网掩码 # 配置IP,如: ip add 30.1.1.254 255.255.255.0
no shut # 开启端口
命令:
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
注意以下的命令如果和我的模拟器配置的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
配置路由器端口IP命令
en # 进入特权模式
conf t # 进入全局配置模式
int Fa0/x # 进入需要配置的端口
ip add IP 子网掩码 # 配置IP,如: ip add 150.1.1.254 255.255.255.0
no shut # 开启端口
配置北京总公司的路由器(端口号与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开头网段的包)
测试一下
配置路由器端口IP命令
en # 进入特权模式
conf t # 进入全局配置模式
int Fa0/x # 进入需要配置的端口
ip add IP 子网掩码 # 配置IP,如: ip add 10.1.1.1 255.255.255.0
no shut # 开启端口
conf t # 进入全局配置模式
ip route 0.0.0.0 0.0.0.0 120.1.1.254
exit # 退到上一级
do show ip route # 查看路由表
配置自己路由器的命令
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 2 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的PAT,PAT会把数据帧的源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表,表号可选,不写查找全部
先用北京的PC上网与ping 一下上海的PC
然后让广州的PC ping 北京的PC
目的:因为现在的广州分公司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隧道))
目的:让广州访问上海分公司的数据到达北京总部这边让北京总部这边的路由器再转发到上海,实现广州与上海的安全通信,而不用再次花钱买VPN隧道。
在北京这边的路由器添加
conf t # 进入全局配置模式
acc 100 permit ip 10.1.0.0 0.0.255.255 172.16.0.0 0.0.255.255 # 添加一条匹配广州到上海的条目(意思就是广州到上海也让他走VPN隧道,这个隧道是北京到上海。转车到上海)
现在广州访问上海的数据行走的路线图
现在配置上海到广州,思路和配置广州的一样,上海到广州的数据先发给北京总部的路由器再转发到广州
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表,表号可选,不写查找全部
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
在公司需要搭建PN服务器
实现原理:
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),然后再发送出去。
给VPN服务器添加一块网卡
第一块网卡连国内,网络设置为VMnet1, 第二块网卡连国外,网络设置为VMnet2。
现在国内的主机无法访问该网页,不过VPN服务器可以访问该网页,而国内的主机又可以访问VPN服务器
PPTP 或 L2TP 的VPN协议的端口号都是 TCP:1723
netstat -an # 查看本机开放的端口号
开启VPN服务器
配置给VPN拨号的PC下发的私有地址
到这里就搭建好了VPN服务器
如果拨号拨上了VPN服务器,那以后你的PC访问国内的网站也是以国外的VPN服务器的身份进行访问的会有一定的影响,可能不访问不了会被防火长城隔离,但是你访问和你同一局域网下的设备不会有影响。(简单理解就是:你只要连接上了VPN那你以后只要不是访问和自己同一wifi或网线下的人,其他的流量都会走VPN隧道。)
route print # 查看路由表