IPSec(InternetProtocolSecurity)作为一种开放标准的安全框架结构,可以用来保证IP数据报文在网络上传输的机密性、完整性和防重放,可满足企业日益提高的对网络安全性的需求。IPSec是IETF定义的一个协议组,通信双方在IP层通过加密、完整性校验、数据源认证等方式,保证了IP数据报文在网络上传输的机密性、完整性和防重放。●机密性(Confidentiality)指对数据进行加密保护,用密文的形式传送数据。●完整性(Dataintegrity)指对接收的数据进行认证,以判定报文是否被篡改。●防重放(Anti-replay)指防止恶意用户通过重复发送捕获到的数据包所进行的攻击,即接收方会拒绝旧的或重复的数据包。IPSecVPN体系结构主要由AH(AuthenticationHeader)、ESP(EncapsulatingSecurityPayload)、和IKE(InternetKeyExchange)协议套件组成。●AH协议:主要提供的功能有数据源验证、数据完整性校验和防报文重放功能,但AH并不加密所保护的数据报文。●ESP协议:提供AH协议的所有功能外,还可提供对IP报文的机密功能。●IKE协议:用于自动协商AH和ESP所使用的密码算法。●SA:SecurityAssociation,安全联盟定义了IPSec通信对等体间将使用的数据封装模式、认证和加密算法、秘钥等参数。SA是单向的,两个对等体之间的双向通信,至少需要两个SA。●如果两个对等体同时使用AH和ESP安全协议来进行通信,则对等体针对每一种安全协议都需要协商一对SA。●SA由一个三元组来唯一标识、这个三元组包括安全参数索引SPI(SecurityParameterIndex)、目的IP地址、安全协议(SA或ESP)。建立SA的方式有以下两种:1、手工方式:安全联盟所需的全部信息都必须手工配置。手工方式建立安全联盟比较复杂,但优点是可以不依赖IKE而单独实现IPSec。当对等体设备数量较少时,或是在小型静态环境中,手工配置SA是可行的。2、IKE动态协商方式:只需要通信对等体之间配置好IKE协商参数,由IKE自动协商来创建和维护SA。动态协商方式建立安全联盟相对简单些。对于中大型的动态网络环境中,推荐使用IKE协商建立SA。IPSec协议有两种封装模式:1、传输模式:传输模式中,在IP报文头和高层协议之间插入AH或ESP头。传输模式中的AH和ESP主要对上层协议数据提供保护。传输模式中的AH在IP头部之后插入AH头,对整个IP数据包进行完整性校验。传输模式中的ESP在IP头部之后插入ESP头,在数据字段后插入尾部以及认证安段。对高层数据和ESP尾部进行加密。对IP数据包中的ESP报文头,高层数据和ESP尾部进行完整性校验。传输模式中的AH+ESP在IP头部之后插入AH和ESP头,在数据字段后插入尾部以及认证字段。2、隧道模式:隧道模式中,AH或ESP头封装在原始IP报文头之前,并另外生成一个新的IP头封装到AH或ESP之前。隧道模式可以完全地对原始IP数据报文进行认证和加密,并可以使用IPSec对等体的IP地址来隐藏客户机的IP地址。隧道模式中的AH对整个原始IP服文提供完整性检查和认证、认证功能优于ESP。但AH不提供加密功能,所以通常和ESP联合使用。隧道模式中的ESP对整个原始IP报文和ESP尾部进行加密,对ESP报文文、原始IP报文和ESP尾部进行完整性校验。隧道模式中的AH_ESP对整个原始IP报文和ESP尾部进行加密,AH、ESP分别会对不同部分进行完整性校验。3、IPSecVPN的配置步骤:配置网络可达--配置ACL识别兴趣流--创建安全提议--创建安全策略--应用安全策略配置IPSecVPN1、我们以下图拓扑为例,来演示一下IPSecVPN的配置过程。我们需要在分支机构的边缘路由器R1和总部边缘路由器R3之间部署IPSecVPN,建立IPSec隧道,用于安全传输指定的数据流。
2、首先配置各路由器的接口IP地址,包括物理接口以及Loopback接口。3、在三台路由器上配置OSPF,将Loopback0的IP地址作为路由器的RouterID。使用OSPF的默认进程1,并将公网网段10.0.12.0/24和10.0.23.0/24以及环回接口地址通告到OSPF区域0。以R1为例。ospfrouter-id10.0.1.1area0network10.0.1.00.0.0.network10.0.11.00.0.0.network10.0.12.00.0.0.
2、OSPF配置完成后,查看OSPF邻居以及路由表。
3、在R1和R3上配置高级ACL来定义IPSecVPN的感兴趣流,高级ACL能够基于特定的参数来匹配流量。R1:aclrule5permitipsource10.0.1.00.0.0.destination10.0.3.00.0.0.R3:aclrule5permitipsource10.0.3.00.0.0.destination10.0.1.00.0.0.
4、在R1和R3上创建IPSec提议,并进入IPSec提议视图来指定安全协议。注意确保隧道两端的设备使用相同的安全协议。R1:ipsecproposaltran1espauthentication-algorithmsha1espencryption-algorithm3desR3:ipsecproposaltran1espauthentication-algorithmsha1espencryption-algorithm3des5、检查配置结果displayipsecproposal
7、在R1和R3上手工创建IPSec策略,每一个IPSec安全策略都使用唯一的名称和序号来标识,IPSec策略中会应用IPSec提议中定义的安全协议、认证算法、加密算法和封装模式。另外手工创建的IPSec策略还需要配置安全联盟SA中的参数。R1:ipsecpolicypmanualsecurityaclproposaltran1tunnelremote10.0.23.3tunnellocal10.0.12.1saspioutboundespsaspiinboundespsastring-keyoutboundespsimplehuaweisastring-keyinboundespsimplehuaweiR3:ipsecpolicypmanualsecurityaclproposaltran1tunnelremote10.0.12.1tunnellocal10.0.23.3saspioutboundespsaspiinboundespsastring-keyoutboundespsimplehuaweisastring-keyinboundespsimplehuawei
8、在R1和R3的相应物理接口上应用IPSec策略,接口将对感兴趣流量进行IPSec加密处理。R1:ints4/0/0ipsecpolicyp1R3:ints4/0/0ipsecpolicyp19、验证设备对不感兴趣的流量不进行IPSec加密处理。在R1上指定通过Loopback1接口PingR3的Loopback1接口。
10、查看IPSec流量统计,全为O,因为IPSec感兴趣流中并没有定义Loopback1接口。
11、验证设备对感兴趣的流量进行IPSec加密处理。在R1上指定通过Loopback0接口PingR3的Loopback0接口。
12、查看IPSec流量统计,可以看到Inpacket和Outpacket值为5,因为IPSec感兴趣流中定义了Loopback0接口,指定接口的流量经过IPSec隧道进行了加密传输。
配置GREIPSecVPN用于在两个端点之间提供安全的IP通信,但只能加密并传输单播数据,无法加密和传输语音、视频、动态路由协议信息等组播数据流量。GenericRoutingEncapsulation通用路由封装协议GRE提供了将一种协议的报文封装在另一种协议报文中的机制,是一种隧道封装技术。GRE可以封装组播数据,并可以和IPSec结合使用,从而保证语音、视频等组播业务的安全。GRE用来对某些网络层协议如IPX的报文进行封装,使这些被封装的报文能够在另一网络层协议(如IP)中传输。GRE可以解决异种网络的传输问题。IPSecVPN技术可以创建一条跨越共享公网的隧道,从而实现私网互联,IPSecVPN能够安全传输IP报文,但是无法在隧道的两个端点之间运行RIP和OSPF等路由协议。GRE可以将路由协议信息封装在另一种协议报文中进行传输(如IP)。使用GRE可以克服IGP协议是一些局限性,例如RIP的最大跳数为15,如果网络直径超过15,设备将无法通信,这种情况下,可以使用GRE技术在两个网络节点之间搭建隧道,隐藏它们之间的跳数,扩大网络的工作范围。GRE本身并不支持加密,因而通过GRE隧道传输的流量是不加密的。将IPSec技术与GRE相结合,可以先建立GRE隧道对报文进行GRE封装,然后再建立IPSec隧道对报文进行加密,以保证报文传输的完整性和私密性。
2、我们在上一步实验的基础之上,来继续创建GRE隧道,首先在R1和R3上创建隧道接口并为该接口配置一个公网IP地址,然后指定接口封装类型为GRE,并配置隧道的实际源地址以及实际目的地址。R1:inttunnel0/0/1ipaddress.1.1.tunnel-protocolgresource10.0.12.1destination10.0.23.3R3:inttunnel0/0/1ipaddress.1.1.tunnel-protocolgresource10.0.23.3destination10.0.12.1
3、在R1和R3上配置OSPF进程2用于隧道路由,将隧道接口所在的网络通告在OSPF进程1,从OSPF进程1中删除网络10.0.12.0/24和10.0.23.0/24。创建OSPF进程2,并将网络10.0.12.0/24和10.0.23.0/24通告到OSPF进程2。R1
spf1area0undonetwork10.0.12.00.0.0.network.1.1.00.0.0.ospf2router-id10.0.1.1area0network10.0.12.00.0.0.R3
spf1area0undonetwork10.0.23.00.0.0.network.1.1.00.0.0.ospf2router-id10.0.3.3area0network10.0.23.00.0.0.4、路由器会为不同的OSPF进程创建不同的LSDB,R1和R3中分别有LSDB1和LSDB2,两个数据库彼此独立,不会同步路由信息。因此R2不会学习到R1和R3通告在进程2中的路由。检查两台路由器的隧道配置结果。disinttun0/0/1
5、在R1和R3上将GRE流量定义为感兴趣流量。R1:aclrule5permitgresource10.0.12.10destination10.0.23.30R3:aclrule5permitgresource10.0.23.30destination10.0.12.、验证路由信息通过GRE封装后可由IPSecVPN传输,在两台路由器上查看路由表。可以看到,GRE隧道建立以后,路由器可以将OSPF协议报文通过GRE封装后进行交互,从而获得对端路由信息。
7、清除IPSec统计信息,然后再通过Ping命令进行测试。
8、通过测试可以看到,OSPF协议交互报文进行了GRE封装后再被IPSecVPN加密传输。
9、在R1上为GRE隧道配置Keepalive功能。inttunne0/0/1keepaliveperiod3
10、IPSecVPN与GRE配置完成,以R3为例的完整的配置如下。这里我们最终配置的是GREoverIPSec。