多厂商***系列之一:加密基础与IPSec【附带思科与H3C的配置介绍】
简介
在TCP/IP协议的开发早起,并没有考虑到安全的因素,也没预料到该协议会成为以后互联网应用最广的协议。随着网络的开放、共享的信息带来了便利的时候,也出现了病毒、***等各种网络***,使得网络存在大量不安全因素、在这种情况下,各种网络安全技术应运而生。
安全的含义:1、源认证 2、完整性 3、机密性 4、不可否认性
早在古埃及的时候,就有加密出现了 ,在二战期间也大量被应用,只是原先的加密算法都是保密的,没有人知道原理是什么,但是后来人们发现这种想法并不适应现代的网络,在你认为这算法是安全的,可能早就被人破解了,所以 基于这种情况,后续的加密算法都处于公开的,任何人都可以获取源代码,一个密码系统的成功与否的关键是密钥的生成、分发、管理。保证密钥的安全,现在hacker不再从算法本身找弱点,而是从密钥中需找机会。
加密的类型:1、对称加密:应用最早,也是最成熟的算法,同一个密钥来加解密。
优点:加解密速度快 。 密文紧凑,加密前的数据与加密后的数据大小不会发生太大的改变
缺点:主要体现在密钥的分发、存储、管理对数字证书支持的缺点 ,每使用一次对称加密就需要产生一个新的密钥,
而且在网络上传输是非常困难的,如果使用者非常多,那么就会以指数增长。
算法:DES | 3DES | CAST | IDEA | AES 常用于IPsec中有DES 3DES AES
2、非对称加密:同时生成公/私钥,公钥加密私钥解,私钥加密公钥解,A与B同时有公/私钥,把公钥发到互联网上这时
候, A如果想发送数据给B,那么利用B的公钥把数据进行加密得到一个Y 发给B,B同时可以用私钥来进
行解密,把数据还原成没加密的状态
优点:需要的密钥数量小、不存在密钥分发问题。 支持数字证书签名。
缺点:加解密数度非常慢,并且处理大量数据后比源数据大好几倍。
算法:Diffie-Hellman、RSA 、 ECC IPsec只应用了DH算法
它们的共同任务就是保证数据在不安全的网络情况下,保证数据的安全。对称算法和非对称算法都有各自的优缺点,后来,人们把两者的优点结合起来,利用对称算法来加密数据量大的数据,而非对称密钥由于加解密非常慢,用于加密对称算法的密钥。
例如:A有一个数据X发往B,首先用对称算法随即生成一个Key,加密数据后得到Y,这时候在用B公布在互联网上的公钥对这个Key进行非对称加密,得到一个H,这时候A把Y与H打包一起发送给B。B收到以后,用自己的私钥把H解开得到之前的Key,然后对数据Y解开得到A原始的数据X,由于Key的大小是固定的,所以这样处理的数度大大提高。
2、完整性
2、完整性:在传输数据的过程中,能确保数据信息没有被修改过,这种算法叫做HASH,通常HASH只是一个通常,具体的算法有MD5与SHA1, SHA在研发的时候由于存在漏洞一直没有被公布过。
算法:包括MD5与SHA-1
它们都具有:一个不等长的输入,等到一个等长的输出。MD5为128bit,SHA-1 160bit
雪崩效应:只改动一点点数据,输出就会改变。 过程是不可逆的。
有些人习惯把MD5这些作为加密看待,但是它只是一个认证的能力,保证数据没有被修改过。
不可否认性
3、不可否认性:标明发起者发送这个数据后,不能否认不是它发送的。比如 现实中的指纹。
在我们常用的就是路由协议认证了,在使用MD5认证的时候,并不单单使用MD5 而是会设置一个key,这个Key只有建立路由协议之间的路由器才知道,每次路由更新会把更新的内容与这个Key做HASH,然后把路由信息与这个HASH结果发送给对方,对方收到以后也用这路由信息加上共同的KEY做HASH,然后与收到的HASH做比较,相同就通过。 我们称这个技术为HMAC,具有一定的不可否认性和源认证的特点。另外一个就是数字签名和CA数字证书 都具有源认证与不可否认性。
IPsec协议
它并不是一个具体的协议,而是一个框架,由ESP(encapsulating security payload 封装安全载荷) 、AH(Authentication Header 认证头协议)、IKE(Internet Key Exchange 因特网密钥交换协议)组成。先说说几个概念性的东西
SA:安全联盟 、SA是两个实体经过协商建立起来一种协定,它们决定用来保护数据包安全的IPsec协议、连接模式、HMAC功能与加密算法、密钥以及密钥的有效时间存在时间等等。任何IPsec实施方案会构建一个SA数据库 (S A D B ) 由他们来维护IPsec协议 ,用来保障数据包安全的SA记录
SA是单向的:如果两个主机(A与B)正在通过ESP进行安全通信,那么主机A就需要一个SA,即SA(OUT) 用来处理出去的数据包(加密):另外还需要一个不同的SA,即SA(IN),用来处理进入的数据包(解密)。主机A的SA(OUT) 和主机B的SA (in) 将共享相同的加密参数(比如密钥)
SA还是“与协议相关”的。 每种协议都有一个SA 。如果主机A和B同时通过AH和ESP进行安全通信,那么每个主机都会针对每一个协议来构建一个独立的SA。
SPD :安全策略数据库
SPD :安全策略数据库 (在cisco H3C上就是感兴趣流量)
1、丢弃这个包。此时包不会得以处理,只是简单的丢掉 (PC支持,思科上不支持)
2、绕过安全服务: 在这种情况下,IP层会在载荷内增添IP头,然后分发IP包。 (相当于感兴趣流量,不匹配的流量就正常走)
3、应用安全服务:假如已经建立了SA,就会指向SA的指针; 假如未建立SA,就会调用I K E,将这个SA建立起来。具体由策略来决定,如果规定IPsec应用于数据包,那么在SA建立之前,数据包是不会被转发的。 (匹配了感兴趣流量)
比如我们PC也能使用IPsec来保证数据的安全性,比如 路由器syslog信息 发送到服务器上必须保证安全,可以通过IPsec来建立安全通道。 cisco设备与微软的兼容性最好,因为使用的IKE由它们共同开发的。
这里主要介绍ESP协议,AH协议在IPv4的网络并不适应,因为它会把整个IP头部和数据部分做认证,只针对IP数据部分的服务类型字段、标志、分片偏移、TTL、校验和这些不会被加入认证中,但是源目IP是被认证的,而在IPv4的网络中,存在大量的NAT与PAT设备存在,源地址被改变很常见,这样很容易导致认证的结果不匹配。 IPsec的功能原本属于IPv6中,后来挪移到IPv4中使用,保证IPv4的网络安全。
ESP只对Payload Data到Next Header做加密,认证是SPI到Next Header,SPI、SEQ、IV也就是ESP的头部信息,它是不被加密的。
1、SPI : 由SA是单向发起的,会以明文HASH的方式把SPI发给对方,对方查自己SA的数据库,匹配上的 就用SPI上下面的策略来解密 2、Sequence Number Field :每发一个数据包,序列号会增加一,如果对方收到相同的序列号,就会drop,防重放***
3、IV : 跟“快大小相等: 作为CBC加密
4、 payload Data:具体的数据部分
5、Padding:当快不够的时候,就需要这个来凑齐。(快大小不够8字节的时候) Pad length :快大小的长度
6、Next Header:告知下一个头部是什么类型(加密数据的头部) 1 for ICMP 4 for IP-In-IP encapsulation 6 for TCP 17 for UDP (除了4是Tunnel,其他都是传输模式)
7、Authentication Data:包含SPI到Next Header部分通过hash与HMAC算出来的值,但是只取前96位 因为只有12个字节,也就是96位
ESP数据包的外出处理
1、传输模式:ESP跟进在IP头之后,插入一个外出的IP包中。IP头的协议字段复制到ESP头的”下一个头“字段中(data的下一个字段),IP头的协议字段置为ESP的值或者50。ESP的其余字段被填满—SPI字段分配到的是来自S A D B的、用来对这个包进行处理的特定SA的SPI;填充序列号字段的是序列中的下一个值。填充数据会被插入,其值被分配(这个值根据算法决定,比如DES必须满足每个包8字节);同时分配的还有填充长度值(Pad自动填充)。
2、tunnel模式:ESP头是加在IP包前面。IPV4包,那么ESP头的“下一个头”字段分配为4.其他字段的填充方式在传输模式一样。然后在ESP头前面新增一个ip头,对相应的字段进行填充—-源地址对应与ESP那个设备本身:目标地址取自于用来应用ESP的SA (peer中设置的地址):协议为50,其他字段参照本地的IP处理加以填充。
3、从恰当的SA中选择加密方式(加密算法) ,对包进行加密(从载荷数据的开头,一直到“下一个头”字段)
4、重新计算位于ESP前面的IP头的校验和 (因为协议号改变了)
5、把hash与IP头的校验和字段放在尾部
ESP数据包的进入处理
1、检查处理这个包的SA是否在本地数据库中存在 (本地的SPID)
2、检查序列号是否有效。
3、对数据包进行完整性和来源进行验证 (hash校验)
4、对数据包解密 (根据SPID下的策略)
5、对数据包进行初步的有效性检验
验证模式匹配 (根据Next Header中携带的是4就是Tunnel,其他的都为传输模式)
6、传输模式:就会转送到一个高一级的协议—比如TCP或UDP—由它们对这个包进行处理
隧道模式: 对解密后的IP,进行路由查找,进行转发到它的目的 (也可能在同一个主机上)
mode:分为tunnel mode 与transport mode ,两者的区别在于 前者会生成一个新的头部,通常用于互联网两个私网之间连接,而transport mode用于局域网之类。
关于这些SA ESP mode,两者建立安全隧道的时候 到底怎么去生成跟决定呢,那么就需要用到IPsec中IKE。
IKE负责建立和维护IKE SA和IPsec SA 主要包含1、对双方进行验证
2、交换公共密钥,产生密钥资源,管理密钥
3 、协商协议参数(封装,加密,认证)
IKE的三个组成部分
1、SKEME:提供为认证目的的使用公开的加密机制 (定义一种密钥交换方式)
2、Oakley:提供在两个IPsec对等体达成相同的加密密钥的基本模式的机制(对多模式的支持,例如对新的加密技术,并没有具体定义交换什么样的信息。)
3、ISAKMP:定义了消息交换的体系结构,包括两个IPsec对等体分组形式和状态改变 (定义封装格式和协商包交换的方式)
IKE的建立会经历两个阶段,有三种模式。 通常使用的是主模式,积极模式只在EZ***或者远程***的情况下才被使用。
第一阶段分 主模式:六个包交换。一去一回做3次交换,提供一个安全管理的连接,两个对等体用于共享IPsec的信息。
第二阶段协商IPsec SA对具体的流量进行加密的方式 ,利用安全的通道建立具体数据加密的通道
我们可以把***看成一个业务,首先公司的老总需要见面、吃吃饭 认识认识 (相当于认证,为第一阶段) 。当业务谈妥了,定下了合同,而这份合同规定了对这些业务的具体操作(对数据的具体加密)
1.第一二个包协商的内容为 ip地址 和 策略:
{IP地址的内容为对方所指定的peer,匹配了才进行下去}
{策略的内容 双方定义的认证方式 {pre-share | 证书} 加密策略 {des | 3des | aes| } 认证{ hash { MD5 | sha-1 }
{DH的内容定义了g和P的大小 {group 1 | 2 | 5 }
{key life-time {默认为1天} 如果不匹配,就以双方最小的为标准
协商过程:首先发送方把所有的策略都发给接收方 。 当接收方与自己的策略做比较,匹配上的,就只发这个匹配上的给发送方。
这里的策略决定了第一阶段的第五六个包与第二阶段的快速模式在什么样的***通道中进行协商 (这些过程都是进行加密与验证的)
2、第三四个包协商的内容为:DH的交换 {把大A | B 和小 a | b 双方进行交换对比} 这个结果是共同协商的,是相等的,随即的通过一系列算法得出三个SKEYID 产生密钥
SKEYID_d =用于计算后续IPsec密钥材料 (第二阶段的密钥都是通过这个来衍生的)
SKEYID_a=用于提供IKE消息的数据完整性和认证
SKEYID_e=用于加密IKE消息
3、第五六个包协商的内容为 :用SKEYID的信息对pre-shared key 和双方已知的(策略信息)SA Payload,Proposals Transforms,ID 进行hash,得到的 结果一致,认证就通过,这个过程是在SKEYID_E加密的情况下完成认证。
第二阶段 主要协商IPsec sa 对具体数据的加密方式.{封装策略 (ESP | AH )}
{加密策略 (des | 3des | aes ) }
{ hash策略 (md5 | sha-1 ) }
{ mode ( tunnel | transport_}
{ key lifetime ( 1小时) (这里的一个小时,只是说流量在一个小时内没有经过,就断开
{流量 (ACL) 定义具体流量 }
这个模式为快速模式,这个过程是也加密的,也是根据IKE第一阶段的第一次交换策略来决定
只有3个包,第一个包发送方当有多个策略的时候,发送给接收方。接收方通过查找有匹配的策略的时候、会通过快速包的第二个包发给对方(只发送匹配的,说明双方以这个策
略来进行加密 。第三个包接收方会回复一个acknowledges information的信息,表示这个IPsec隧道是可以建立的。当隧道建立了,会出现SPID(显示为一堆阿拉伯数字)说明Ipsec已经成功建立。 这个通道用于加密数据流量。
IPsec的框架: 1、加密 DES 3DES AES ……
2、验证 MD5 SHA-1 …….
3、封装协议 ESP AH……..
4、模式 Transport tunnel ……….
5、密钥有效期 3600 1800 ………..
IPsec提供了一个框架,并没有规定使用什么加密算法与验证 封装(只提供了加密 验证封装协议等的参数选择),它由两个对等体之间的参数来协商,这种框架提供了灵活性与可扩展性。 它提供了数据机密性、数据完整性、数据源认证、防重放***。
IPsec的连接:当一个***没建立的时候,一个数据包触发了IPsec过程,那么IPsec会使用ISAKMP/IKE阶段1来构建一个安全的管理连接,这个管理连接可以让两个对等体可以彼此安全的通信,用于共享IPsec的信息(比如共享密钥,验证信息的载荷)。也把第一阶段成为管理连接。 通过这个安全的管理连接,两个IPsec的对等体将协商用于构建安全数据连接的参数,这个安全的数据连接用于传输用户的数据,通常这个ISAKMP/IKE 第二阶段也称为数据连接。管理连接与数据连接都各自有一个生存期存在,确保在有人试图破解你安全密钥的情况下,密钥信息在周期性的重新产生来保证安全性。如果数据一直在发送,那么会提前建立第二个通道,不会第一个生存期过了后,需要重新建立 而断开了数据连接。
ISAKMP/IKE 使用的是UDP 500端口来建立管理连接, 数据加密是用ESP或者AH 来进行。
也许有些人觉得配置***是一件繁琐的事情,因为配置命令太多,但是明白了它们的协商过程和每个阶段的任务 ,配置起来思路是很清晰 也很简单的。
cisco设备实现简单的site-to-site ***
12.1.1.0/24 23.1.1.0/24
1.1.1.1 Center.1—————– .2 Internet .1 ——————–.2 Branch 3.3.3.3
在配置之前,首先要了解加密点与通讯点。 这里的通讯点为1.1.1.1 和3.3.3.3 两个私网网段,而加密点则是出口的公网地址。
当加密点不等于通讯点的时候,必须使用tunnel mode来生成一个新的头部。 当加密点等于通讯点的时候,可以使用transport mode,节省20个字节的IP头部,后续的GRE Over *** 或者IPsec SVIT等
1、首先配置isakmp/ike 第一阶段,通过之前的协商的过程了解 需要配置ip和策略
crypto isakmp policy 10
authentication pre-share | rsa-sig 基于什么的认证,通常情况下使用预共享密钥
encryption des | 3des | aes 加密算法
hash md5 | sha-1
group
lifetime 86400 默认为1天,根据双方最小值定
在cisco路由器中IKE第一阶段有默认策略,show crypto isakmp policy 查看
默认策略:加密为DES Hash 为SHA-1 DH为group 1 lifetime 为一天 认证用证书
所以我们最简单的配置方法就是 authentication pre-share 只需要把认证改为基于预共享密钥 其余的都为默认策略
crypto isakmp key 0 cisco address 23.1.1.2 这里定义的是IKE第一阶段的共享密钥,并且指定与谁建立
2、配置第二阶段的策略。这里协商具体数据加密的策略
crypto ispec transform-set trans esp-des esp-md5-hmac 这里的trans是一个名字,可以设置多个名字调用与不同的IPsec中,采用ESP协议 用des加密 md5做认证,当输入后会进入子模式设置mode
mode tunnel | transport 默认情况下不设置为tunnel模式,L2L是典型的tunnel模式
感兴趣流量:access-list permit ip host 1.1.1.1 host 3.3.3.3 感兴趣流量两端必须配置为镜像一样,
比如 Branch就必须为 access-list permit ip host 3.3.3.3 host 1.1.1.1
3、调用第一二阶段的策略
crypto map l2l 10 ipsec-isakmp :
这里用一个map调用,cisco中存在很多的map。l2l是一个名字,后面跟的序列号,因为接口下只允许存在一个map,所以可以根据序列号来调用多个不同的***。 有些人很奇怪 在调用的时候并没有调用第一阶段的策略,其实ipsec-isakmp这关键字 已经调用了第一阶段的策略了,采用IKE来协商。 还有个ipsec-maunal 手动模式,几乎不使用
match address 100 :调用感兴趣流量
set peer 23.1.1.2 :设置与哪个场点建立
set transform-set trans :调用第二阶段协商参数
4、接口下调用
interface f0/0
crymap map l2l
当调用后会提示 *Mar 1 00:25:05.291: %CRYPTO-6-ISAKMP_ON_OFF: ISAKMP is ON
这里主要的是 在路由器上配置IPsec *** 默认情况下 IKE是启用的,而在ASA上配置默认是关闭的,需要用crypto isakmp enable 开启
当测试的时候 一定要用感兴趣流量来测试,比如Center端发起 需要 ping 3.3.3.3 source 1.1.1.1
经常用的几个查看命令
1、show crypto isakmp sa 查看第一阶段的情况 显示QM_IDLE 表示第一阶段正常建立
2、shiw crypto ipsec sa :显示ipsec sa的详细情况,包括SPI 感兴趣流量 peer
仔细看会发现Center端的SPI Outbound 与Branch的 SPI Inbound 是相同的,反过来 Center的SPI inbound与Branch的Outbound是相同的。 当一个数据包发送过来 通过SPI来匹配这个数据包用什么算法加解密 和认证。
3、show crypto engine connections active 最直接查看IPsec的加解密情况
一个是IKE的sa情况 另外两个分别对应Outbound 与Inbound 加解密 这里为加密4个数据包 解密4个数据包
这里注意的是,有时候在做实验的时候,习惯用两台设备做***,觉得直连设备不需要做路由,但是配置下来后死活不通,检查了半天配置也没问题,这里在安全实验中一定要明白路由的重要性,这里做路由不是为了让私网之间可达,而是为了让去往对方私网走这个有map的接口,当满足了流量撞击map的策略,触发了***的建立。 在***中 通常有多个IP头部,所以 最好的办法是理解封装结构 ,这对以后流量的放行和路由的处理是很关键的。
Center的配置
crypto isakmp policy 10
authentication pre-share
crypto isakmp key cisco address 23.1.1.2
!
!
crypto ipsec transform-set trans esp-des esp-md5-hmac
!
crypto map l2l 10 ipsec-isakmp
set peer 23.1.1.2
set transform-set trans
match address 100
!
interface Loopback0
ip address 1.1.1.1 255.255.255.255
!
interface FastEthernet0/0
ip address 12.1.1.1 255.255.255.0
duplex auto
speed auto
crypto map l2l
ip route 0.0.0.0 0.0.0.0 12.1.1.2
!
access-list 100 permit ip host 1.1.1.1 host 3.3.3.3
!
Branch配置
crypto isakmp policy 10
authentication pre-share
crypto isakmp key ccieh3c.taobao.com address 12.1.1.1
!
!
crypto ipsec transform-set trans esp-des esp-md5-hmac
!
crypto map l2l 10 ipsec-isakmp
set peer 12.1.1.1
set transform-set trans
match address 100
!
interface Loopback0
ip address 3.3.3.3 255.255.255.255
!
interface FastEthernet0/1
ip address 23.1.1.2 255.255.255.0
duplex auto
speed auto
crypto map l2l
!
ip route 0.0.0.0 0.0.0.0 23.1.1.1
access-list 100 permit ip host 3.3.3.3 host 1.1.1.1
H3C设备的site-to-site实现
在H3C设备中,第一阶段和第二阶段都有默认策略,相对来说配置很简单。
基本配置:1、ike peer 10 建立一个peer,设置预共享密钥和地址
pre-shapre-key ccieh3c.taobao.com
remote-address 23.1.1.2
2、ike的策略采用default,默认策略跟cisco的相同,除了认证不同
3、ipsec proposal 10 创建一个IPSEC策略,采用默认值封装为esp 加密为des hash为MD5 mode为tunnel
4、acl number 3000 创建感兴趣流量
rule 0 permit ip source 1.1.1.1 0 destionation 3.3.3.3 0
5、ipsec policy l2l 10 iskamp 调用这些策略
security acl 3000
ike peer 10
proposal 10
6、接口调用
ipsec policy l2l
几个查看命令 display ike peer :查看peer的设置
display ike proposal :查看ike的default策略
display ipsec proposal :查看ipsec的default策略
dispaly ike sa :查看第一阶段的情况
display ipsec sa:查看第二阶段的情况 包括SPI 感兴趣流量 peer
display ipsec statistics :查看加解密的情况
本文转载于公众号:网络之路博客