0x00 汇总
汇总链接
我寻思着先讲GRE再讲IPSEC不好理解些么。。。
不过IA的IPSec配置就完事了。
0x01 IPSec
企业对网络安全性的需求日益提升,而传统的TCP/IP协议缺乏有效的安全认证和保密机制。
IPSec(Internet Protocol Security)
作为一种开放标准的安全框架结构,可以用来保证IP数据报文在网络上传输的机密性
、完整性
和防重放
。
IPSec XXX
(不要问我XXX是什么,CSDN你XXX,简直有毒,等有空,哥就去开私人博客)体系结构主要由AH(Authentication Header)、ESP(Encapsulating Security Payload)和IKE(Internet Key Exchange)协议套件组成。
AH协议
:主要提供的功能有数据源验证、数据完整性校验和防报文重放功能。然而,AH并不加密所保护的数据报。ESP协议
:提供AH协议的所有功能外(但其数据完整性校验不包括IP头),还可提供对IP报文的加密功能IKE协议
:用于自动协商AH和ESP所使用的密码算法。
SA(Security Association)
安全联盟定义了IPSec通信对等体间将使用的数据封装模式、认证和加密算法、秘钥等参数。SA是单向的,两个对等体之间的双向通信,至少需要两个SA。如果两个对等体希望同时使用AH和ESP安全协议来进行通信,则对等体针对每一种安全协议都需要协商一对SA。
SA由一个三元组来唯一标识,这个三元组包括安全参数索引SPI(Security Parameter Index)、目的IP地址、安全协议(AH或ESP)。
建立SA的方式有以下两种:
手工方式
:安全联盟所需的全部信息都必须手工配置。手工方式建立安全联盟比较复杂,但优点是可以不依赖IKE而单独实现IPSec功能。当对等体设备数量较少时,或是在小型静态环境中,手工配置SA是可行的。
IKE动态协商方式
:只需要通信对等体间配置好IKE协商参数,由IKE自动协商来创建和维护SA。动态协商方式建立安全联盟相对简单些。对于中、大型的动态网络环境中,推荐使用IKE协商建立SA。
配置IPSec的步骤如下:(讲道理,我觉得第三步和第四要换一下,肯定先第一阶段,再第二阶段阿,不过这IA好像连什么是第一阶段,什么是第二阶段都没讲,我吐了,华为的配置真的没有逻辑,差评)
- 首先需要检查报文发送方和接收方之间的网络层可达性,确保双方只有建立IPSec VPN隧道才能进行IPSec通信。
- 第二步是定义数据流。因为部分流量无需满足完整性和机密性要求,所以需要对流量进行过滤,选择出需要进行IPSec处理的兴趣流。可以通过配置ACL来定义和区分不同的数据流。
- 第三步是配置IPSec安全提议。IPSec提议定义了保护数据流所用的安全协议、认证算法、加密算法和封装模式。安全协议包括AH和ESP,两者可以单独使用或一起使用。AH支持MD5和SHA-1认证算法;ESP支持两种认证算法(MD5和SHA-1)和三种加密算法(DES、3DES和AES)。为了能够正常传输数据流,安全隧道两端的对等体必须使用相同的安全协议、认证算法、加密算法和封装模式。如果要在两个安全网关之间建立IPSec隧道,建议将IPSec封装模式设置为隧道模式,以便隐藏通信使用的实际源IP地址和目的IP地址。
- 第四步是配置IPSec安全策略。IPSec策略中会应用IPSec提议中定义的安全协议、认证算法、加密算法和封装模式。每一个IPSec安全策略都使用唯一的名称和序号来标识。IPSec策略可分成两类:手工建立SA的策略和IKE协商建立SA的策略。
- 第五步是在一个接口上应用IPSec安全策略。
0x02 IPSec配置
PPT上写的是手工方式,那咱们也做手工的好了,其实比自动协商的配置起来更加复杂。
底层配置
AR1
//配置IP及DHCP功能
[AR1]dhcp enable
[AR1]int g0/0/0
[AR1-GigabitEthernet0/0/0]ip address 172.16.1.1 24
[AR1-GigabitEthernet0/0/0]dhcp select interface
[AR1-GigabitEthernet0/0/0]int g0/0/1
[AR1-GigabitEthernet0/0/1]ip add 100.1.1.1 24
AR2
//只需要配置IP
[ISP-AR2]int g0/0/0
[ISP-AR2-GigabitEthernet0/0/0]ip add 100.1.1.2 24
[ISP-AR2-GigabitEthernet0/0/0]int g0/0/1
[ISP-AR2-GigabitEthernet0/0/1]ip add 200.1.1.2 24
AR3
[AR3]dhcp enable
[AR3]int g0/0/1
[AR3-GigabitEthernet0/0/1]ip add 200.1.1.3 24
[AR3-GigabitEthernet0/0/1]int g0/0/0
[AR3-GigabitEthernet0/0/0]ip add 192.168.1.1 24
[AR3-GigabitEthernet0/0/0]dhcp select interface
两端PC直接拿地址就好。
配置路由可达性
AR1
[AR1]ip route-static 0.0.0.0 0.0.0.0 100.1.1.2
AR3
[AR3]ip route-static 0.0.0.0 0.0.0.0 200.1.1.2
这两条路由有两个作用,第一个确保AR1和AR3在互联网当中能够具有连通性,如果这两个地址都不能互通的话,那么IPSEC肯定也无法建立 。
[AR1]ping 200.1.1.3
PING 200.1.1.3: 56 data bytes, press CTRL_C to break
Request time out
Reply from 200.1.1.3: bytes=56 Sequence=2 ttl=254 time=30 ms
Reply from 200.1.1.3: bytes=56 Sequence=3 ttl=254 time=20 ms
Reply from 200.1.1.3: bytes=56 Sequence=4 ttl=254 time=20 ms
Reply from 200.1.1.3: bytes=56 Sequence=5 ttl=254 time=20 ms
--- 200.1.1.3 ping statistics ---
5 packet(s) transmitted
4 packet(s) received
20.00% packet loss
round-trip min/avg/max = 20/22/30 ms
第二个作用就是让两端的站点,都有路由可以让去往对端私有网段的数据通过公网接口,必要时,可能还需要添加静态路由来完成。注意,虽然此时有静态路由,但是仍然无法通信,因为ISP-AR2上,不可能有私有地址的路由的。
定义兴趣流
用ACL来匹配出两端需要被加密的流量。
AR1
[AR1]acl 3000
[AR1-acl-adv-3000]rule permit ip source 172.16.1.0 0.0.0.255 destination 192.168.1.0 0.0.0.255
AR3
[AR3]acl 3000
[AR3-acl-adv-3000]rule permit ip source 192.168.1.0 0.0.0.255 destination 172.16.1.0 0.0.0.255
配置IPSec安全提议
通常我会把这阶段的配置称为第二阶段,是用来定义真正的数据流的参数!
IPSec安全协议两端保持一样的配置。
AR1/AR3
[AR1]ipsec proposal PROP1 //创建提议PROP1
[AR1-ipsec-proposal-PROP1]encapsulation-mode tunnel //模式为tunnel,默认配置
[AR1-ipsec-proposal-PROP1]transform esp //使用ESP协议,默认配置
[AR1-ipsec-proposal-PROP1]esp authentication-algorithm md5 //使用MD5进行验证,默认配置
[AR1-ipsec-proposal-PROP1]esp encryption-algorithm 3des //使用3des算法进行加密
检查第二阶段
[AR1]display ipsec proposal name PROP1
IPSec proposal name: PROP1
Encapsulation mode: Tunnel
Transform : esp-new
ESP protocol : Authentication MD5-HMAC-96
Encryption 3DES
配置IPSec 安全策略
通常我会把这阶段的配置称为第一阶段,用来定义保护加密通道的参数!
IPsec安全协议两端保持一样
的配置,注意啦,有些地方为了对应,两端得配置成相对应的参数,并不是完全一模一样
~
真的是烦,先配置第二阶段,再配置第一阶段,华为有毒。
AR1
[AR1]ipsec policy POLICY 10 manual //创建安全策略
[AR1-ipsec-policy-manual-POLICY-10]security acl 3000 //关联兴趣流
[AR1-ipsec-policy-manual-POLICY-10]proposal PROP1 //关联IPSec安全提议
[AR1-ipsec-policy-manual-POLICY-10]tunnel local 100.1.1.1 //定义加密起点
[AR1-ipsec-policy-manual-POLICY-10]tunnel remote 200.1.1.3 //定义加密终点
[AR1-ipsec-policy-manual-POLICY-10]sa spi inbound esp 123456 //定义入方向SPI,即为对端出方向SPI
[AR1-ipsec-policy-manual-POLICY-10]sa spi outbound esp 654321 //定义出方向SPI,即为对端入方向SPI
[AR1-ipsec-policy-manual-POLICY-10]sa string-key inbound esp simple huawei //定义入方向密码
[AR1-ipsec-policy-manual-POLICY-10]sa string-key outbound esp simple huawei //定义出方向密码
//其实SPI也能配置成一样的,这样会更加简单,不过为了更形象点,就这样吧
AR3
[AR3]ipsec policy POLICY 10 manual
[AR3-ipsec-policy-manual-POLICY-10] security acl 3000
[AR3-ipsec-policy-manual-POLICY-10] proposal PROP1
[AR3-ipsec-policy-manual-POLICY-10] tunnel local 200.1.1.3
[AR3-ipsec-policy-manual-POLICY-10] tunnel remote 100.1.1.1
[AR3-ipsec-policy-manual-POLICY-10] sa spi inbound esp 654321
[AR3-ipsec-policy-manual-POLICY-10] sa string-key inbound esp simple huawei
[AR3-ipsec-policy-manual-POLICY-10] sa spi outbound esp 123456
[AR3-ipsec-policy-manual-POLICY-10] sa string-key outbound esp simple huawei
检查policy
[AR3]display ipsec policy
===========================================
IPSec policy group: "POLICY"
Using interface:
===========================================
Sequence number: 10
Security data flow: 3000
Tunnel local address: 200.1.1.3
Tunnel remote address: 100.1.1.1
Qos pre-classify: Disable
Proposal name:PROP1
Inbound AH setting:
AH SPI:
AH string-key:
AH authentication hex key:
Inbound ESP setting:
ESP SPI: 654321 (0x9fbf1)
ESP string-key: huawei
ESP encryption hex key:
ESP authentication hex key:
Outbound AH setting:
AH SPI:
AH string-key:
AH authentication hex key:
Outbound ESP setting:
ESP SPI: 123456 (0x1e240)
ESP string-key: huawei
ESP encryption hex key:
ESP authentication hex key:
接口应用安全策略
AR1/AR3
[AR1-ipsec-proposal-PROP1]int g0/0/1
[AR1-GigabitEthernet0/0/1]ipsec policy POLICY
AR3同理也需要调用,接下来进行测试。
成功访问对端私网地址,检查ipsec sa
[AR3]display ipsec sa brief
Number of SAs:2
Src address Dst address SPI VPN Protocol Algorithm
-------------------------------------------------------------------------------
200.1.1.3 100.1.1.1 123456 0 ESP E:3DES A:MD5-96
100.1.1.1 200.1.1.3 654321 0 ESP E:3DES A:MD5-96
[AR3]display ipsec statistics esp
Inpacket count : 5
Inpacket auth count : 0
Inpacket decap count : 0
Outpacket count : 4
Outpacket auth count : 0
Outpacket encap count : 0
Inpacket drop count : 0
Outpacket drop count : 0
BadAuthLen count : 0
AuthFail count : 0
InSAAclCheckFail count : 0
PktDuplicateDrop count : 0
PktSeqNoTooSmallDrop count: 0
PktInSAMissDrop count : 0
也可以看到除了第一包就用于触发VPN了,入和出方向皆有报文,但很奇怪,不显示验证和封装数量什么鬼。。。还是去抓个包吧。
确实已经加密了,Over。