HTML/JavaScript

2017年3月2日星期四

【Cisco】【安全】【CCNA】IKEv1与IKEv2对比

IKEv1 vs IKEv2 (2)

IKEv1和IKEv2对比

表格来自于

Table IKEv1 IKEv2 注释
SA IPsec SA Child SA RFC60711
Exchange modes Main mode: 9 messages
Aggressive mode: 6 messages
最少 4 messages. RFC24092
认证模式 Pre-Shared Key (PSK)3
Digital Signature (RSA-Sig)4
Public Key Encryption5
Revised Mode of Public key Encryption6
Pre-Shared Key (PSK)7
Digital Signature (RSA-Sig)8
RFC2049
RFC6738
身份验证方法 两端认证必须配置相同 两端认证配置可以不同 RFC60719
流量选择器
(Traffic selector)
每个IPsec SA仅允许源IP范围,目标IP范围,
源端口和目标端口的组合。需要在对等体之间精确地匹配流量选择器。
多个组合,每个子SA允许源IP范围,目标IP范围,源端口范围和目标端口范围。 RFC599610
SA老化 需要对等体支持 没有协商,每个对等体可以通过交换DELETE有效载荷随时删除SA。 RFC599611
多主机 不支持 通过在单个IP地址和端口对上使用多个ID来支持 RFC455512
密钥 没有定义 定义 RFC599613
NAT穿越 需要在扩展中进行支持 默认即支持 RFC599614
远程接入VPN 不支持,需要特定厂商进行支持例如Cisco的Extended Authentication (XAUTH) 默认支持:
Extensible Authentication Protocol (EAP)
通过EAP的用户认证与IKE的认证进行关联配置Configuration payload (CP)
RFC510615
DoS防护 不支持 支持Anti-replay,'Cookies'支持缓解洪泛攻击(flooding attacks),修复IKEv1漏洞 RFC631116
传输可靠性 相对可靠性低 消息以请求-回复的方式交互
定义了删除SA的操作
定义了消息重传
RFC4306 17
扩展性 扩展性弱 IKEv2的重定向机制(RFC5685)
IKEv2会话恢复(RFC5723)
协议支持IKEv2 / IPsec的高可用性(RFC6311)
IKEv2中的仅EAP认证的扩展(RFC5998)
一个快速故障检测方法Internet密钥交换协议(IKE)(RFC6290)
-

参考文献


  1. RFC6071: It is called the IPsec SA in IKEv1 and, in the IKEv2 RFCs, it is referred to variously as a CHILD_SA, a child SA, and an IPsec SA. This document uses the term "IPsec SA". To further complicate the terminology, since IKEv1 consists of two sequential negotiations, called phases, the IKE SA is also referred to as a Phase 1 SA and the IPsec SA is referred to as a Phase 2 SA. 

  2. RFC2409: 7 Payload Explosion of Complete Exchange 

  3. RFC2409: 5.4 Authentication with a Pre-Shared Key 

  4. RFC2409: 5.1 Authentication with Digital Signatures 

  5. RFC2409: 5.2 Authentication with Public Key Encryption 

  6. RFC2409: 5.3 A Revised method of Authentication with Public Key Encryption 

  7. RFC6738 

  8. RFC7427 

  9. RFC6071: 2.3.1 Differences between IKEv1 and IKEv2 

  10. RFC5996: 2.9. Traffic Selector Negotiation 

  11. RFC5996: 2.8. Rekeying 

  12. RFC4555 

  13. RFC5996: 2.8. Rekeying 

  14. RFC5996: 2.23. NAT Traversal 

  15. RFC5106:  

  16. RFC6311: 4. The IKEv2/IPsec SA Counter Synchronization Problem 

  17. RFC4306: 2.1. Use of Retransmission Timers 

2016年12月26日星期一

【Cisco】【安全】【CCNA】GRE Over IPSec VPN

GRE Over IPSec VPN

GRE Over IPSec VPN

介绍

  1. GRE Over IPSec VPN 介绍
  2. 配置GRE Over IPSec VPN
  3. 传输模式和隧道模式GRE Over IPSec VPN

GRE Over IPSec VPN 介绍

在传统IPSec VPN中需要配置多条access-list来匹配感兴趣的流,从而触发建立IPSec VPN SA,来加密业务流量,这样当流量变得复杂的时候就不利于管理,需要创建很多条access-list配置量大不容易维护。并且没有相应的接口,去维护这些流量,使得不可进行策略管理。
但是GRE拥有良好的隧道特性,但是不具备加密、可靠性、认证功能。所以,有没有一种可能将IPSes VPN应用在GRE tunnel上呢?一方面提供了接口可以进行策略管理,另外一方面GRE tunnel 可以运行组播,保证了动态路由协议的运行,还提供的逻辑的tunnel接口可以进行策略管理。 这就是将要介绍的GRE Over IPSec VPN。

GRE相比传统IPSes VPN提供了以下特性:
1. IP组播支持
2. 提供逻辑接口进行策略控制
3. 仅需配置一条感兴趣的流用于IPSec VPN建立。

配置GRE Over IPSec VPN

需求:
1.R2和R5 之间通过GRE Tunnel建立ospf,并且传递彼此1.1.1.1和6.6.6.6的路由
2.建立ospf更新路由表,在tunnel上的这些路由匹配ipsec vpn,进行加密,无需单独配置感兴趣的流

配置GRE Over IPSec VPN主要分为以下三个步骤:

  1. 创建GRE Tunnel
  2. 配置基础IPSec 策略包括(isakmp policy、isakmp key、ipsec transform-set、crypto map)
  3. 配置感兴趣的流(permit gre),并且在物理接口下应用crypto map

拓扑图如下。

enter image description here

关键配置:

R2:
crypto isakmp policy 10
 encr aes
 hash md5
 authentication pre-share
 group 16
crypto isakmp key ccie43413 address 192.168.45.5   
!
crypto ipsec transform-set ipsec-police esp-aes esp-sha512-hmac 
 mode transport
!
crypto map vpn 10 ipsec-isakmp 
 set peer 192.168.45.5
 set transform-set ipsec-police 
 match address vpn
!
ip access-list extended vpn
 permit gre host 192.168.23.2 host 192.168.45.5
!
interface Tunnel1
 ip address 192.168.25.2 255.255.255.0
 ip ospf 2 area 0
 tunnel source 192.168.23.2
 tunnel destination 192.168.45.5
!       
interface Ethernet0/1
 ip address 192.168.23.2 255.255.255.0
 ip ospf 1 area 0
 crypto map vpn
!
end

R5:
crypto isakmp policy 10
 encr aes
 hash md5
 authentication pre-share
 group 16
crypto isakmp key ccie43413 address 192.168.23.2   
!
crypto ipsec transform-set ipsec-police esp-aes esp-sha512-hmac 
 mode transport
!
crypto map vpn 10 ipsec-isakmp 
 set peer 192.168.23.2
 set transform-set ipsec-police 
 match address vpn
!
interface Tunnel1
 ip address 192.168.25.5 255.255.255.0
 ip ospf 2 area 0
 tunnel source 192.168.45.5
 tunnel destination 192.168.23.2
!
interface Ethernet0/3
 ip address 192.168.45.5 255.255.255.0
 ip ospf 1 area 0
 crypto map vpn
!
ip access-list extended vpn
 permit gre host 192.168.45.5 host 192.168.23.2
!
end

需要注意:
1. 在配置感兴趣流的时候使用的是permit gre ,而非permit ip
2. crypto应用在物理接口上,而非tunnel接口。

匹配感兴趣的流,需要使用permit gre而非permit ip,这是因为在进行GRE封装之后permit ip匹配的是原始IP,而非new gre ip,所以如果使用permit ip是匹配不到业务流量去触发进行SA建立的。
第二之所以应用在物理接口上,因为如果应用在tunnel接口上,原始数据会先进行加密,再进行GRE封装,显然这样的流程是不对的。因为先加密必然需要先出去匹配感兴趣的流,这样相当于又走回之前逐条匹配感兴趣流的方式了。所以必须先进行GRE封装得到原始报文,再使用这个原始报文进行加密流程。下图列出了内部的处理流程,参考IPSec VPN实战指南。在原有的基础上加入了一些自己的理解。

enter image description here

可以看到,流量从入接口进入之后先去查找路由表,发现下一跳是tunnel接口,tunnel是GRE,于是先进行GRE封装,打上IP之后准备从出接口发送出去,然后因为出接口有crypto map ,正好match上了GRE的流量,执行crypto流程。完成加密和封装操作之后最后将加密后的报文从出接口发送出去。
由此可以看到,过去进行match的时候是匹配的内网上的主机到主机。而引入了gre之后,我们只需匹配GRE 头部上的IP地址即可。这样减轻了配置压力。

传输模式和隧道模式GRE Over IPSec VPN

在前面介绍过因为通信点与加密点的不同所以要使用传输模式或隧道模式。然而在GRE Tunnel中引入了新的GRE Head 和GRE IP Head错误的选择可能会造成不必要的开销。如下列出了在GRE Tunnel中传输模式和隧道模式的报文。

enter image description here

这里或许会有疑问,在GRE over ipsec 隧道模式中,会有三个IP头,分别是 ESP封装 NEW-IP-Head ,GRE IP和原始IP Head。那么这三者的ip地址分别是多少呢?
笔者通过使用ESP-null 的方式获取到了数据得出如下解包。发现GRE IP和原始IP部分是一致的,所以在实际使用中如果不涉及NAT的问题,就可以使用传输模式这样可以节约24个字节的带宽,以免造成不必要的浪费。具体详见如下。

ESP-null IPSec HeadIPsec Head

参考文献

  1. 《IPSec VPN实战指南》
  2. IPSec Overhead Calculator Tool

2017年10月13日更新

2016年12月11日星期日

【Cisco】【安全】【CCNA】IPSec VPN Troubleshooting

IPSec VPN Troubleshooting

IPSec VPN Troubleshooting

介绍

  1. IPSec debug(参考)
  2. IPSes Troubleshooting视频

IPSec debug

这里主要介绍“debug crypto isakmp sa”,由于篇幅的问题,直接粘贴出来并不便于查看。所以请在此查看debug信息,当中做了简要注释。点击此处查看

如下部分是我自己依据debug信息所作出的状态机变迁图。由于没有找到官方的状态机的图,也没有找到状态机的介绍,所以在此不做解释。仅供参考。

enter image description here

IPSes Troubleshooting视频

参见:https://www.youtube.com/watch?v=0PqtbHQGt2U

2017年10月13日 更新

2016年12月5日星期一

【Cisco】【安全】【CCNA】IPSec VPN 报文介绍以及协商建立过程

IPSec VPN 报文介绍以及协商建立过程

IPSec VPN 报文介绍以及协商建立过程

介绍

  1. ISAKMP报文介绍
  2. IPSec VPN协商建立过程(IKEv1)

ISAKMP报文介绍

ISAKMP头部信息如下。

enter image description here

Nitiator Cookie(Initiator SPI)(8 octets):发起SA建立实体Cookie,SA通知或SA删除
Responder Cookie(Responder SPI)(8 octets):响应SA建立请求的实体的Cookie,SA通知或SA删除
Next Payload (1 octet):表示第一有效负荷的消息中的类型

 Next Payload Type           Value
 NONE                        0
 Security Association (SA)   1
 Proposal (P)                2
 Transform (T)               3
 Key Exchange (KE)           4
 Identification (ID)         5
 Certificate (CERT)          6
 Certificate Request (CR)    7
 Hash (HASH)                 8
 Signature (SIG)             9
 Nonce (NONCE)               10
 Notification (N)            11
 Delete (D)                  12
 Vendor ID (VID)             13
 RESERVED                    14 - 127
 Private USE                 128 - 255

Major Version (4 bits):标识正在使用的ISAKMP协议的主要版本。
Minor Version (4 bits):标识正在使用的ISAKMP协议的次要版本
Exchange Type(1 octet):标识使用的交换(exchange) 的类型

 Exchange Type          Value
 NONE                   0
 Base                   1
 Identity Protection    2 
 Authentication Only    3
 Aggressive             4
 Informational          5
 ISAKMP Future Use      6 - 31
 DOI Specific Use       32 - 239
 Private Use            240 - 255

Flags (1 octet):标识为ISAKMP交换设置的特定选项
··· E(ncryption Bit) (1 bit):如果设置(1),则使用在ISAKMP SA中标识的加密算法对报头之后的所有有效载荷进行加密。对于第4.1节中描述的所有ISAKMP交换,加密应该在双方交换密钥交换有效载荷之后开始。 如果E(ncryption Bit)未设置(0),则有效载荷不加密。
···C(ommit Bit) (1 bit) :该位用于通知密钥交换同步。它用于确保在完成SA建立之前没有接收到加密材料。这个bit可以在双方任意一端设置,并且在isakmp建立的两个阶段上均可以使用。这个值必须在第一阶段协商完成之后复位。
···A(uthentication Only Bit) (1 bit) :需要和Notify Payload一起使用,具有完整性检查,但是没有加密的信息传输。第4.8节规定,第二阶段信息交换必须在ISAKMP SA的保护下发送。 这是该策略的唯一例外。如果设置了Authentication Only位(1),那么只有认证安全服务将应用于信息交换的整个Notify有效负载,并且有效负载不会被加密。

Length (4 octets):以八位字节为单位的消息总长(报头+有效载荷)。 加密可以扩展ISAKMP消息的大小。

在ISAKM中可以添加一个或多个有效负载(Payloads),由于负载较多就不一一列举了,具体详见RFC2408。

enter image description here

IPSec VPN协商建立过程

建立过程主要分为两步,首先是主模式(Main mode)的建立,然后是快速模式(Quick mode)的建立。

enter image description here

enter image description here

数据包在此下载。

之前IPSec vpn谈到过,VPN的目的就是为了保证私密性、完整性、源认证。然而在公网上显然不能将加密信息明目张胆的发送出去,所以在传递这些业务信息之前,需要预先建立起一个安全可靠的连接来传递这些加解密的信息。而主模式就是预先建立的这个连接。

主模式(Main mode)

主模式主要的目的是建立ISAKMP SA(Internet Security Association and Key Management Protocol Security association)。为了建立起ISAKMP SA,在IKEv1 Main mode 中需要交互6个报文。这6个报文会在下面有所介绍。由于ISAKMP的建立并不像OSPF邻居认证一样,只需要password正确就能建立,而是有一整套协商的条件。所以单一的预共享密钥相同也不一定就能保证ISAKMP的建立。

主模式第1个和第2个数据包

主模式的第一个和第二个数据包主要用来协商ISAKMP策略信息,这些策略信息包括。
· 加密类型(Encryption-Algorithm)
· 密钥长度(Key-Length)
· 散列算法(Hash-Algorithm)
· DH强度(Group-Description)
· 认证模式(Authentication-Method)
· 密钥更新时间单位(Life-Type)
· 密钥时间(Life-Time)
如上部分在报文中体现如下,如果对端发送过来的ISAKMP协商信息与本地信息不符,那么将协商失败,且不会反馈本端ISAKMP配置信息。

enter image description here

主模式第3个和第4个数据包

第1和第2个数据包确认了策略之后和散列函数之后,要想加密数据还需要一个关键的参数(密钥),这个密钥正是通过DH交换而得来的。有关DH算法工作原理已超出笔者能力,有兴趣的可以参见。Diffie–Hellman key exchangeDiffie-Hellman Key Agreement Method
在报文中体现如下。

enter image description here

主模式第5个和第6个数据包

获取到彼此的密钥信息之后,就可以开始进行认证了,这部分就是加密的报文。

enter image description here

总的来说,主模式首先协商ISAKMP策略,确定双方策略一致的时候,开始使用非对称密钥算法来交换彼此的预共享密钥,当预共享密钥匹配的时候来交换彼此的加密密钥,使用这个加密的密钥来完成第5和第6的数据包的认证功能。这样就保证了私密性(数据加密),源认证(加密认证来实现),完整性(如果报文有修改ISAKMP SA无法建立)

快速模式(Quick mode)

在快速模式下主要用来建立IPSec SA,协商以下参数
· 封装方式(ESP或AH)
· 认证算法
· 传输模式(隧道模式或传输模式)
· 加密算法(业务报文的加密算法)
· DH信息
· IPSec生命周期信息
另外需要注意的就是密钥更新,密钥更新主要使用的是PSF,虽然 有周期性更新密钥的这个功能,但是如果没有启用PSF那么新生成的密钥与之前的密钥存在衍生关系,思科默认没有启用PSF功能,如果启用了PSF那么新生成的密钥与之前的密钥就不存在衍生关系,可以提供更安全的服务。
这一部分在报文中均以加密方式进行显示。

enter image description here

快速模式协商完成之后,建立起IPSec SA,开始传输加密数据。

参考文献

  1. Diffie–Hellman key exchange
  2. Diffie-Hellman Key Agreement Method
  3. Phase 1Phase 2
  4. IPSec Virtual Private Network Fundamentals–IKE and ISAKMP
  5. RFC2408
  6. RFC2409
  7. RFC4306

2017年10月13日更新

2016年11月28日星期一

【Cisco】【安全】【CCNA】IPSec VPN 基础实验

IPSec VPN 基础实验

IPSec VPN 基础实验

介绍

  1. IPSec VPN配置逻辑
  2. IPSec VPN传输模式配置
  3. IPSec VPN隧道模式配置

IPSec VPN配置逻辑

IPSec VPN配置逻辑包括以下三个步骤:
1. 先配置isakmp策略,并指定isakmp peer 和预共享密钥。
2. 配置IPSec VPN 加密算法,以及传输模式。
3. 配置crypto map 关联ipsec,匹配“感兴趣流”,并在接口下应用。

IPSec VPN传输模式配置

配置isakmp策略,加密aes,哈希md5,认证方式预共享密钥,采用group16加密强度。

crypto isakmp policy 10
 encryption aes
 hash md5
 authentication pre-share
 group 16

配置isakmp peer 和 预共享钥,与192.168.45.5进行isakmp协商,并且预共享密钥为“ccie43413”。

crypto isakmp key ccie43413 address 192.168.45.5 

配置IPSec VPN 加密算法,以及传输模式

crypto ipsec transform-set ipsec-police esp-aes
 mode transport 

配置crypto map关联ipsec,并 匹配“感兴趣流”,并在接口下应用。

access-list 100 permit ip host 1.1.1.1 host 6.6.6.6
!
crypto map vpn 10 ipsec-isakmp
 set peer 192.168.45.5
 set transform-set ipsec-police
 match address 100
!
interface Ethernet0/1
 set ip address 192.168.23.2 255.255.255.0
 set crypto map vpn

IPSec VPN隧道模式配置

隧道模式仅需修改步骤3中“transport” 改为“tunnel”即可,其他无任何差别。详细配置略。

crypto ipsec transform-set ipsec-police esp-aes
 mode tunnel

IPSec VPN状态检查

检查isakmp和ipsec状态“active”状态即为正常。

IOU2#show crypto ipsec sa 

interface: Ethernet0/1
    Crypto map tag: vpn, local addr 192.168.23.2

   protected vrf: (none)
   local  ident (addr/mask/prot/port): (1.1.1.1/255.255.255.255/0/0)
   remote ident (addr/mask/prot/port): (6.6.6.6/255.255.255.255/0/0)
   current_peer 192.168.45.5 port 500
     PERMIT, flags={origin_is_acl,}
    #pkts encaps: 4, #pkts encrypt: 4, #pkts digest: 4
    #pkts decaps: 4, #pkts decrypt: 4, #pkts verify: 4
    #pkts compressed: 0, #pkts decompressed: 0
    #pkts not compressed: 0, #pkts compr. failed: 0
    #pkts not decompressed: 0, #pkts decompress failed: 0
    #send errors 0, #recv errors 0

     local crypto endpt.: 192.168.23.2, remote crypto endpt.: 192.168.45.5
     plaintext mtu 1454, path mtu 1500, ip mtu 1500, ip mtu idb Ethernet0/1
     current outbound spi: 0xD9C88899(3653798041)
     PFS (Y/N): N, DH group: none

     inbound esp sas:
      spi: 0xA7FCB727(2818357031)
        transform: esp-aes ,
        in use settings ={Tunnel, }
        conn id: 1, flow_id: SW:1, sibling_flags 80000040, crypto map: vpn
        sa timing: remaining key lifetime (k/sec): (4357294/591)
        IV size: 16 bytes
        replay detection support: N
        ecn bit support: Y status: off
        Status: ACTIVE(ACTIVE)

     inbound ah sas:

     inbound pcp sas:

     outbound esp sas:
      spi: 0xD9C88899(3653798041)
        transform: esp-aes ,
        in use settings ={Tunnel, }
        conn id: 2, flow_id: SW:2, sibling_flags 80000040, crypto map: vpn
        sa timing: remaining key lifetime (k/sec): (4357294/591)
        IV size: 16 bytes
        replay detection support: N
        ecn bit support: Y status: off
        Status: ACTIVE(ACTIVE)

     outbound ah sas:

     outbound pcp sas:
IOU2# 

2017年10月13日更新

2016年11月26日星期六

【Cisco】【安全】【CCNA】IPSec VPN 基础介绍

IPSec VPN 基础介绍

IPSec VPN 基础介绍

介绍

  1. vpn基础概念
  2. ipsec vpn框架
  3. ESP封装方式和传输模式介绍

VPN基础概念

虚拟专用网(英语:Virtual Private Network,简称VPN),是一种常用于连接中、大型企业或团体与团体间的私人网络的通讯方法。虚拟私人网络的讯息透过公用的网络架构(例如:互联网)来传送内联网的网络讯息。vpn分为远程接入vpn和站点到站点vpn。

· 远程接入:通常是终端连接到公司网关,访问公司内部网络。
· 站点到站点:通常是网关和网关之间建立vpn隧道,使其从一个站点到另外一个站点通信,好似在同一个内网中一样。

远程接入的vpn种类有:ipsec vpn、PPTP、SSL、L2TP+ipsec。
站点到站点的vpn种类有:ipsec vpn、GRE tunnel、帧中继、MPLS VPN。

由于需要使用公网进行数据传输,那么为了保证数据的安全。我们至少需要保障:
·私密性:传递的数据包经过加密。
·完整性:数据在传递的过程中没有被修改。
·源认证:数据是可信任的源传递给我。

enter image description here

IPSec VPN框架

ipsec框架包括,加密、认证(验证)、封装协议、传输模式、密钥有效期。

加密和认证

既然在公网上传输需要解决。私密性、完整性、源认证。那么我们来看看ipsec vpn如何解决这些问题呢?

私密性,私密性固然可见。就是希望传输的数据不是明文,而是经过加密之后的。然而这就涉及到一个加解密的概念。我们先谈加密,在加密算法中,分为两种一种是对称密钥。另外一种是非对称密钥。

对称密钥,加密和解密都是同样的密钥。例如传递数据“123”,使用密钥A’, 加密后的结果“abc”,对方收到“abc”加密文件之后自然要 使用密钥A’去解码“abc”才能得到想要的数据。那么问题来了,如何才能安全的分发密钥就成了关键。

非对称密钥,非对称密钥分为公钥和私钥。公钥用于加密数据,私钥用于解密数据,但是公钥无法对数据进行解密。由于共钥和私钥是一种不可逆的关系,所以公钥可以随意发放给任何人,而不必担心数据安全的问题,但是私钥必须自己保留。例如A和B要进行加密通信。A发送数据“123”,使用B’公钥加密得到结果“abc”,传递给B,B使用私钥B”进行解密即可得到数据。反之亦然。

既然非对称密钥这么好,我们直接使用非对称密钥不就好了么?从技术层面来说当然是这样,但是实际应用中涉及性能。非对称密钥算法加密性能不如对称密钥。所以有没有一种方法既可以安全的传输加密数据,又可以不耗损太多的性能呢?对称密钥和非对称密钥的结合。有关性能不部分可参见Performance Analysis of Data Encryption Algorithms

同样A要发送数据“123”,使用对称密钥B”,来进行加密,那么B”如何得到呢?通过非对称密钥来传递B”。大致过程如下。

Created with Raphaël 2.1.2Site_ASite_ASite_BSite_B发送公钥A'发送公钥B'彼此获取到对方的公钥使用(非对称密钥)B'的公钥来加密对称密钥A''使用(非对称密钥)A'的公钥来加密对称密钥B''安全获取到彼此用于数据加密的对称密钥

完整性和源认证。完整性和源认证是在非对称密钥算法的前提上所添加的。为什么这么说呢?因为无法保证数据的私密性,那么完整性和源认证根本无从谈起。就像两个人说悄悄话,中间者已经完全可以监听到你们谈话的内容,自然可以完完整整的修改内容。

完整性,所谓的完整性就是文件或数据在传输的过程中没有被修改,哪怕是漫无目的的修改。在文件中通常都会有一个md5。不管文件多大或文件多小,都能生成一个固定长度的md5值,并且这个值具备 “雪崩效应”、“不可逆”、“冲突避免”、“固定长度”。这么好的东西自然可以用来做完整性校验。因为哪怕是文件只修改了一个字符,md5计算出来的值也会有天壤之别。

源认证,源认证就是要保证我从对方收到的数据,真的是一个合法的源发送给我的。源认证主要用于防止中间人攻击,就是假冒一个合法的源,向对端传送数据。

在实际传输过程中,例如站点A要传数据到站点B, 明文数据通过散列函数算出一个散列值,然后将 数字签名和计算明文的散列值,通过公钥进行加密,传递到对方。对方收到数据之后会首先检查数字签名,解密成功之后确认是合法的源发给我的数据,然后才会对加密信息进行解密。

这样通过文件的散列函数确认了文件的完整性,通过数字签名解决了源认证的问题,并且通过非对称密钥算法解决文件传输加密的问题。这样就保证了网络层的安全。

封装协议和传输模式

在ipsec vpn中封装方式分为两种,一种是ESP封装一种是AH封装。我们少废话先看报文。
enter image description here

关于传输模式和隧道模式在下面有介绍,这里暂时不涉及。观察上图可以发现,AH只做了校验,并没有加密。反观ESP提供了加密、验证、校验完整功能。所以AH和ESP对比结果如下。

AH:提供源认证和完整性校验,但是不提供加密服务。不能穿越NAT
ESP:提供加密,源认证,完整性校验。

另外要说明的是AH 校验,并不是校验IP头中所有的字段,而是部分字段。这部分详细信息请参阅RFC2402。下图中黑色部分就说不校验的部分。之所以不校验这些字段是因为,这些字段在传输的过程中可能会发生改变,导致接受方校验错误而导致数据包的丢弃。

enter image description here

传输模式和隧道模式

在传输模式中分为传输模式和隧道模式。这里涉及2个点,一个是加密点和通信点。例如在一个二层以太网环境中,两台主机互相进行通信,那么他们之间的通信就是加密点等于通信点。但是如果要访问的是公网上分支站点的内部ip,此时的情况加密点和通信点并不是在一起,所以就需要使用到隧道模式。

enter image description here

密钥有效期

长时间使用相同的密钥来加密数据显然是不安全的,所以cisco默认设置3600秒的时候就会重新生成一次密钥,新生成的密钥与之前的密钥不存在衍生关系。保证了长期使用相同的密钥也不用担心暴力破解加密流量的可能性。

ESP封装方式和传输模式介绍

ESP报文结构如下,由于Wireshark解码的问题,这一部分可能观察不到。如下部分来自RFC4303和IPSec Overhead Calculator Tool。由于不同的加密方式会产生不同ESP大小,如下部分仅以此配置为准。具体查询,可参见IPSec Overhead Calculator Tool,如下部分不再赘述。

配置:

crypto isakmp policy 10
 encr aes
 hash sha512
 authentication pre-share
 group 16
 lifetime 60
crypto isakmp key cisco address 12.1.1.2       
!
crypto ipsec transform-set 123 esp-aes esp-sha-hmac 
 “mode transport or mode tunnel”
!
crypto map vpn 10 ipsec-isakmp 
 set peer 12.1.1.2
 set transform-set 123 
 match address vpn
!
ip access-list extended vpn
 permit ip host 1.1.1.1 host 2.2.2.2
!
end

enter image description here

enter image description here

Field Description
ESP Header SPI(4) 安全参数索引(Security Parameter Index)与目标地址和安全协议类型组合的32位值,用于标识要用于此数据报的安全关联。
ESP Header Sequence Number(4) 当在两个设备之间形成安全关联时,计数器字段初始化为零,每当使用此SA进行数据传输,此值将加一。 这用于防止重放攻击
Payload Data(Variable) 加密的有效载荷数据,由高层消息或封装的IP数据报组成。 还可以包括支持信息,例如某些加密方法所需的初始化向量。
ESP Trailer Padding(Variable 0 to 255) 根据需要包括用于加密或对齐的附加填充字节。
Pad Length(1) 填充字段的字节数。
ESP Trailer Next Header(1) 包含数据报中下一个报头的协议号。
ESP Authentication Data (Variable) 此字段包含应用可选ESP认证算法后产生的完整性检查值(ICV)
PACKET DETAILS(Transport Mode) value
Field Bytes
Original IPv4 Header 20
SPI (ESP Header) 4
Sequence (ESP Header) 4
ESP-AES (IV) 16
Original Data Payload 80
ESP Pad (ESP-AES) 14
Pad length (ESP Trailer) 1
Next Header (ESP Trailer) 1
ESP-SHA-HMAC ICV (ESP Trailer) 12
Total IPSec Packet Size 152
PACKET DETAILS(Tunnel Mode) value
Field Bytes
New IPv4 Header (Tunnel Mode) 20
SPI (ESP Header) 4
Sequence (ESP Header) 4
ESP-AES (IV) 16
Original Data Packet 100
ESP Pad (ESP-AES) 10
Pad length (ESP Trailer) 1
Next Header (ESP Trailer) 1
ESP-SHA-HMAC ICV (ESP Trailer) 12
Total IPSec Packet Size 168

参考文献

  1. Cisco IPSec VPN 实战指南 秦柯 著
  2. Performance Analysis of Data Encryption Algorithms
  3. Encapsulating Security Payload (ESP)
  4. RFC 2402 3.3.3.1.1.1 Base Header Fields
  5. IPSec Encapsulating Security Payload (ESP)
  6. RFC4303
  7. IPSec Overhead Calculator Tool

2017年10月12日更新

2016年11月22日星期二

【Cisco】【安全】【CCNA】Cisco Zone-Based Policy Firewall基础介绍

Cisco Zone-Based Policy Firewall基础介绍

Cisco Zone-Based Policy Firewall基础介绍

介绍

  1. Zone-Based Policy Firewall基础
  2. Zone-Based Policy Firewall实验

Zone-Based Policy Firewall基础

Zone-Based Policy Firewall(ZFW)是一种安全策略。当两个接口属于相同的Zone的时候流量可以互通,但是如果两个接口属于不同的zone的时候,默认不可互通。如果想让zone和zone之间进行通信需要单独配置相应的策略,使其互通。
Zone-Based Policy Firewall(ZFW)概念的引入相比ACL(访问控制列表),更易于管理并且ZFW提供了应用层匹配,并提供了限速的功能,更好的提供服务。
Zone的概念:
相同zone 可以互相互通。
不同zone 不能互通除非做相应的策略
不属于任何zone的任何方法都不能和zone进行通信

Zone-Based Policy Firewall实验

拓扑
enter image description here
需求:
R2Ping通R4

R3Ping通R5

R4可以Ping通R2,R4不能ping通R3

R5TelnetR2,不能TelnetR3上

配置步骤:

1. 创建zone,并将接口划分到zone上

R1(config)#zone security zone-name
R1(config-if)#zone-member security zone-name


2. 配置class-map

class-map type inspect {match-all | match-any} class-map-name

其中inspect代表”Firewall Class Map”
选择match-all或 match-any
match-all:所有都match上,这个class才match上
match-any:match任意一个条件,class就可以match上


3. 配置match条件

R1(config-cmap)#match ?
  access-group    Access group
  class-map         Class map
  protocol            PAM Protocol
  security-group  Security Group
  user-group        User Group


4. 配置policy-map关联class-map,并指定动作

policy-map type inspect policy-map-name
 class type inspect class-map-name
    { drop | inspect | pass | police}

R1(config-pmap-c)#?
Policy-map class configuration commands:
  drop            Drop the packet
  exit            Exit from class action configuration mode
  inspect         Context-based Access Control Engine
  no              Negate or set default values of a command
  pass            Pass the packet
  police          Police
  service-policy  Deep Packet Inspection Engine

drop:丢弃流量。
inspect:数据包状态检查。
pass:流量通过
police:流量管制(限速)

注:pass和inspect动作。
pass只是放通单向流量,如果网络中有交互式数据流,例如tcp或icmp等,那么配置pass动作的时候需要考虑回向流量。
而inspect,可以事先检测流量,是否放通,如果检测通过无需重新配置,回向流量不做策略也能放通。
有关数据包状态检查,可参见:Cisco ASA 5500 Series Configuration Guide using the CLI, 8.2 Stateful Inspection Overview


5. 配置zone-pair关联policy-map

 zone-pair security zone-pair-name source zone-name destination zone-name
 service-policy type inspect policy-map-name

关键配置

!
interface Ethernet0/0
 ip address 12.1.1.1 255.255.255.0
 zone-member security 1
 ip ospf 1 area 0
!
interface Ethernet0/1
 ip address 13.1.1.1 255.255.255.0
 zone-member security 1
 ip ospf 1 area 0
!
interface Ethernet0/2
 ip address 14.1.1.1 255.255.255.0
 zone-member security 2
 ip ospf 1 area 0
!
interface Ethernet0/3
 ip address 15.1.1.1 255.255.255.0
 zone-member security 2
 ip ospf 1 area 0
!
interface Ethernet1/0
 no ip address
 shutdown
!
interface Ethernet1/1
 ip address 16.1.1.1 255.255.255.0
 ip ospf 1 area 0
!!
ip access-list extended R4-ping-R2-access-list
 permit ip host 14.1.1.4 host 12.1.1.2
ip access-list extended R5-telnet-R2-access-list
 permit ip host 15.1.1.5 host 12.1.1.2
!!
class-map type inspect match-all zone1-to-zone2-telnet-class-map
 match protocol telnet
class-map type inspect match-all zone2-to-zone1-telnet-class-map
 match access-group name R5-telnet-R2-access-list
 match protocol telnet
class-map type inspect match-all zone1-to-zone2-icmp-class-map
 match protocol icmp
class-map type inspect match-all zone2-to-zone1-icmp-class-map
 match access-group name R4-ping-R2-access-list
 match protocol icmp
!
policy-map type inspect zone2-to-zone1-policy-map
 class type inspect zone2-to-zone1-icmp-class-map
  inspect
 class type inspect zone2-to-zone1-telnet-class-map
  inspect
 class class-default
  drop
policy-map type inspect zone1-to-zone2-policy-map
 class type inspect zone1-to-zone2-icmp-class-map
  inspect
 class type inspect zone1-to-zone2-telnet-class-map
  inspect
 class class-default
  drop
!
zone security 1
zone security 2
zone-pair security zone1-to-zone2-zone-pair source 1 destination 2
 service-policy type inspect zone1-to-zone2-policy-map
zone-pair security zone2-to-zone1-zone-pair source 2 destination 1
 service-policy type inspect zone2-to-zone1-policy-map
!

视频部分参见:https://www.youtube.com/watch?v=5vrDeMxQC8E

参考文献

  1. Zone-Based Policy Firewall Design and Application Guide
  2. Cisco ASA 5500 Series Configuration Guide using the CLI, 8.2

2017年10月12日更新