HTML/JavaScript

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日更新

2016年8月28日星期日

【Cisco】【安全】【CCNA】Cisco Unicast RPF 简单介绍

Cisco Unicast RPF 简单介绍

Cisco Unicast RPF 简单介绍

介绍

uRPF(Unicast reverse path forwarding),简称单播逆向路由转发,是一种防止IP欺骗的技术,通常情况下网络设备在转发数据的时候关心的是目的(Destination),并不关心源(Source),而uRPF技术就是关心源(Source)的一个技术。即,从某个接口进来的数据包,能否从此接口在返回到源(Source)上,如果可以从入接口返回到源,那么将通过uRPF检查完成数据转发,反之亦然。

  1. 严格uRPF检查
  2. 松散uRPF检查
  3. 默认路由uRPF检查
  4. 使用ACL免uRPF检查
  5. GRE Tunnel Keepalives uRPF检查
  6. Unicast RPF 实验

严格uRPF检查

RPF检查分为两种,一种是严格方式,另外一种是松散方式。严格方式要求,数据包从那个接口进来,那么指向源(Source)的路由下一跳也必须是数据包进来的接口。若不匹配则丢弃。(The rx option enables a Strict Mode uRPF on the router. This mode ensures that the router reaches the source address only via the interface on which the packet was received.)

配置命令:

R1(config-if)#ip verify unicast source reachable-via rx

松散的RPF检查

松散的RPF检查,只关心有没有去往源(Source)的路由,如果有那么就通过检查,如果没有则丢弃。与严格方式不同,严格方程除了关心有没有路由还关心流量进来的接口。(The any option enables a Loose Mode uRPF on the router. This mode allows the router to reach the source address via any interface.

配置命令:

R1(config-if)#ip verify unicast source reachable-via any 

默认路由uRPF检查

有的设备上为了避免环路,就会配置ip route 0.0.0.0 0.0.0.0 null 0 来避免网络环路对这样的路由是否也能参与到uRPF检查呢?那么可以通过allow-default 选项来完成。如果配置了此选项,那么默认路由将不适用于uRPF检查,必须使用明细路由来完成uRPF检查,反之亦然。(You can also use the allow-default option, so that the default route can match when checking source address.)

配置命令:

ip verify unicast source reachable-via { any | rx } allow-default 

使用ACL免uRPF检查

如果想让某些源不参与uRPF检查,可以使用挂载ACL,ACL中所匹配的条目不适用于RPF检查。
配置命令:

R1(config)#access-list 100 permit ip host 222.222.222.222 any
R1(config-if)#ip verify unicast reverse-path 100

GRE Tunnel Keepalives uRPF检查

了解GRE Tunnel keepalive机制

tunnel ip 192.168.1.5     +----------------Interface Tunnel----------------+tunnel ip 192.168.1.7     
tunnel source 5.5.5.5     |                                                |tunnel source 7.7.7.7     
tuneel destiantion 7.7.7.7|                                                |tuneel destiantion 5.5.5.5
                          |                                                |                          
                          |                                                |                          
                          |                                                |                          
                          |                                                |                          
                          |                                                |                          
                         +\-----+  56.1.1.0/24 +------+  67.1.1.0/24 +-----\+                         
                         |  R5  |--------------|  R6  |--------------|  R7  |                         
                         +------+.5          .6+------+.6          .7+------+                         

如上图所示。

R5
tunnel source 5.5.5.5
tuneel destiantion 7.7.7.7
R7
tunnel source 7.7.7.7
tuneel destiantion 5.5.5.5

那么以R5为例,R5发送的keepalive内容如下

+-----------++-----------++------------++----------------------------------+
|SRC 5.5.5.5||DST 7.7.7.7||GRE Head(IP)||SRC 7.7.7.7||DST 5.5.5.5||GRE Head|
+-----------++-----------++------------++----------------------------------+


Frame 4: 62 bytes on wire (496 bits), 62 bytes captured (496 bits) on interface 0
Ethernet II, Src: ca:01:1a:64:00:08 (ca:01:1a:64:00:08), Dst: ca:02:02:fc:00:08 (ca:02:02:fc:00:08)
Internet Protocol Version 4, Src: 5.5.5.5, Dst: 7.7.7.7
Generic Routing Encapsulation (IP)
Internet Protocol Version 4, Src: 7.7.7.7, Dst: 5.5.5.5
Generic Routing Encapsulation (Possible GRE keepalive packet)

当R7收到数据包之后对数据包进行检查,观察GRE tunnel 内层的信息,观察到内层的目的IP地址是去往R5的,于是乎就将GRE内层的信息在重新传回到R5上,数据包如下:

+-----------++-----------++--------+
|SRC 7.7.7.7||DST 5.5.5.5||GRE Head|
+-----------++-----------++--------+

Frame 5: 38 bytes on wire (304 bits), 38 bytes captured (304 bits) on interface 0
Ethernet II, Src: ca:02:02:fc:00:08 (ca:02:02:fc:00:08), Dst: ca:01:1a:64:00:08 (ca:01:1a:64:00:08)
Internet Protocol Version 4, Src: 7.7.7.7, Dst: 5.5.5.5
Generic Routing Encapsulation (Possible GRE keepalive packet)

R5收到了这个数据包即认为tunnel 链路还是存活的。就继续保持UP状态,反之亦然。

简单了解了GRE keepalive机制,如果uRPF的检查配置在R7的tunnel接口上会发生什么事情呢?
R7的tunnel 会DOWN掉。DOWN掉的原因就是因为R7在回送keepalive的时候出现了问题,即R7要回送如下报文的时候,进行uRPF检查
发现去往7.7.7.7的出接口并不是tunnel接口,所以RPF检查失败,导致回送的数据R5迟迟收不到,造成R5端认为tunnel keepalive 出现问题,即R5 tunnel 为DOWN状态。

R7#show ip route 7.7.7.7
Routing entry for 7.7.7.7/32
  Known via "connected", distance 0, metric 0 (connected, via interface)
  Routing Descriptor Blocks:
  * directly connected, via Loopback1
      Route metric is 0, traffic share count is 1

解决此问题的办法就是需要配置一条ACL,让7.7.7.7免于RPF检查,这样R7正常回送keepalive也就不会导致R5端tunnel为DOWN状态了。

配置命令:

access-list 1 permit 7.7.7.7
ip verify unicast source reachable-via rx 1

Unicast RPF 实验(视频)

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

参考文献

  1. Understanding Unicast Reverse Path Forwarding
  2. Configuring Unicast Reverse Path Forwarding
  3. GRE Keepalive and Unicast RPF
  4. Unicast Reverse Path Forwarding(PDF)
  5. GRE Tunnel Keepalives
  6. GRE Tunnel Keepalives2

2017年10月12日更新

2016年8月26日星期五

【Cisco】【安全】【CCNA】配置802.1x EAP-MD5 radius认证

配置802.1x EAP-MD5 radius认证

配置802.1x EAP-MD5 radius认证

介绍

  1. 如何配置802.1x
  2. ACS5.3安装(视频)
  3. 采用radius方式进行802.1x认证(实验)

如何配置802.1x

  1. 全局下开启802.1x认证,接口下开启802.1x认证
  2. 配置AAA的Radius认证服务器

全局下开启802.1x认证,接口下开启802.1x认证

R12(config)#dot1x system-auth-control
R12(config-if)#dot1x port-control auto 

auto参数说明

R12(config-if)#dot1x port-control
auto                PortState will be set to AUTO
force-authorized    PortState set to Authorized
force-unauthorized  PortState will be set to UnAuthorized 

Auto —enables 802.1x authentication and causes the port to begin in the unauthorized state, allowing only EAPOL frames to be sent and received through the port. The authentication process begins when the link state of the port changes from down to up or when an EAPOL-start frame is received. The switch requests the identity of the client and begins relaying authentication messages between the client and the authentication server. Each client attempting to access the network is uniquely identified by the switch by using the client MAC address.

force-authorized —disables 802.1x authentication and causes the port to change to the authorized state without any authentication exchange required. The port sends and receives normal traffic without 802.1x-based authentication of the client. This is the default setting.

force-unauthorized —causes the port to remain in the unauthorized state, ignoring all attempts by the client to authenticate. The switch cannot provide authentication services to the client through the port.

配置AAA的Radius认证服务器

激活3A认证

R12(config)#aaa new-model

配置802.1x采用radius方式进行认证

R12(config)#aaa authentication dot1x default group radius

配置Radius Server

R12(config)#radius-server host 192.168.119.119 auth-port 1645 acct-port 1646 key cisco 

**注:**If auth-port and acct-port are not specified, the default value of auth-port is 1645 and the default value of acct-port is 1646

配置ACS Radius认证服务器
Network Resources—>Network Devices and AAA Clients ,在此添加AAA认证客户端(设备IP,不是PC的IP)

enter image description here

Users and Identity Stores—>Internal Identity Stores—>Users,在此创建用户

enter image description here

配置完成之后可以在设备上使用“test aaa group radius 用户名 密码 new-code” 命令来测试用户是否正常,详细信息请参考Enhanced Test Command

至此配置802.1x任务完成。

ACS5.3安装(视频)

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

采用radius方式进行802.1x认证(实验视频)

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

参考文献

  1. Configuring IEEE 802.1x Port-Based Authentication
  2. RADIUS Commands
  3. Enhanced Test Command

2017年10月12日更新

2016年8月22日星期一

【Cisco】【安全】【CCNA】Cisco IOS设备登录管理

Cisco IOS设备登录管理

Cisco IOS设备登录管理

介绍

  1. Telnet Password管理设备
  2. Telnet Username+Password管理设备
  3. Telnet 无密码管理设备
  4. SSH 管理设备
  5. 依据不同的用户给予不同的命令行权限
  6. 远程登录惩罚特性

Telnet Password管理设备

首先需要关注的是,其实IOS设备默认就已经开放了23端口,只是因为设备默认没有配置vty密码所以无法登陆上去,为什么这么说呢?
enter image description here
在一个空配置的设备上,12.1.1.1 Telnet到12.1.1.2 我们发现TCP会话已经正常建立,并且了也传递了部分TCP(Telnet数据)之所以无法进入设备是因为我们没有给 line vty配置密码,所以被IOS 拒绝。

R1#telnet 12.1.1.2
Trying 12.1.1.2 ... Open
Password required, but none set
[Connection to 12.1.1.2 closed by foreign host]

那么进入正题,既然提示需要配置一个Password,那么就配置一个好了。配置方法如下。

R2(config)#line vty 0 15
R2(config-line)#password ccie43413
R2(config-line)#password ?
0 Specifies an UNENCRYPTED password will follow
7 Specifies a HIDDEN password will follow
LINE The UNENCRYPTED (cleartext) line password

在配置Password的时候可以配置“0” 明文方式,也可以配置“7”密文(HIDDEN)方式。
当然这里需要注意的是在配置 Password 7 的时候并不能直接输入字符的,这样配置是无法下发下去的,需要先将密码转换为密文的方式才能下发。(若不指定密码等级,那么将默认使用“0”级,明文方式进行配置下发)

R2(config)#line vty 0 15
R2(config-line)#password 7 ccie43413
Invalid encrypted password: ccie43413
R2(config-line)#password 7 020507520E525C751D1D

虽说是采用password 7 加密方式,其实这种方式也不安全,加密后的文本可以轻易被破解。可以去 Cisco Type 7 Password Tool 输入需要加密的Password或者输入要解密的Password ,就可以得到密码。
enter image description here

配置

R2
line vty 0 4
password 7 020507520E525C751D1D
login
line vty 5 15
password 7 020507520E525C751D1D
login
验证:
R1#telnet 12.1.1.2
Trying 12.1.1.2 ... Open
User Access Verification
Password: 
R2>

Telnet Username+Password管理设备

同样进行Telnet登录的时候也可以进行用户名和密码的方式来登录到设备上,需要在line vty 下配置login local 命令(默认是login)

R2(config)#line vty 0 15
R2(config-line)#login local

然后是在全局下创建用户名和密码

R2(config)#username ccie43413 password ?
0 Specifies an UNENCRYPTED password will follow
7 Specifies a HIDDEN password will follow
LINE The UNENCRYPTED (cleartext) user password
R2(config)#username ccie43413 secret ?
0 Specifies an UNENCRYPTED secret will follow
4 Specifies a SHA256 ENCRYPTED secret will follow
5 Specifies a MD5 ENCRYPTED secret will follow
LINE The UNENCRYPTED (cleartext) user secret

使用password创建密码,若不指定密码类型,则默认为“0”明文方式,若使用secret创建密码,在新版本的IOS中将使用secret 4 创建加密密码。若在老版本的IOS中则使用secret 5 创建加密密码。 需要注意的是,在新版的IOS 15.2的IOS中才支持secret 4,如果你使用的是老版的IOS 12.4,那么secret 4可能不支持。

secret 5 虽说是MD5加密但仍然不安全,在新版本的IOS中会提示此算法将被淘汰“Warning: MD5 encryption will be deprecated soon.Please move to SHA256 encryption.”

若要生成secret 5 密钥可以找一个老的IOS设备,配置username ccie43413 secret ccie43413,show run 就可以看到secret 5 的密钥了。
当然你可以通过Openssl去生成密钥,具体方法参见 Using the openssl Tool to Generate a Type 5 Password

配置

username ccie43413 secret 4 5eumjDyS.TauJikTRN0uboCxgj6pJEYb5tFrJ6efRUQ
!
line vty 0 4
login local
line vty 5 15
login local
!
验证:
R1#telnet 12.1.1.2
Trying 12.1.1.2 ... Open
User Access Verification
Username: ccie43413
Password: 
R2>

Telnet 无密码管理设备

不少人可能因为工作需要的关系,如每次Telnet到思科设备上都需要输入密码实在是烦人,所以在此我发现通过一种方式可以不输入用户名和密码就可以直接管理思科设备。
配置方法

R2(config)#line vty 0 15
R2(config-line)#no login
R2(config-line)#privilege level 15
R2(config-line)#exit
R2(config)#no aaa new-model

no login是无需密码就可以直接接入vty线路,但是这时候只能进入在用户模式中进行操作即“>”模式。这是因为如果vty线路默认不做权限等级限制默认的配置就是privilege level 1,权限比较低,所以我们需要补一个命令 “privilege level 15”进入的时候直接进入最高管理权限。另外需要注意的是,必须要关闭aaa new-model否则设备还是会去找用户名和密码。

配置

no aaa new-model
!
line vty 0 4
privilege level 15
no login
line vty 5 15
privilege level 15
no login
!
R1#telnet 12.1.1.2          !验证部分
Trying 12.1.1.2 ... Open

R2#

SSH 管理设备

配置SSH的方法如下,首先你需要配置一个主机域,ip domain-name 命令,这个主机域会用于生成RSA密钥文件。

R2(config)#ip domain-name ccie43413.blogspot.com

然后去创建一个密钥使用crypto key generate rsa命令,指定rsa强度

 R2(config)#crypto key generate rsa
The name for the keys will be: R2.ccie43413.blogspot.com
Choose the size of the key modulus in the range of 360 to 4096 for your
General Purpose Keys. Choosing a key modulus greater than 512 may take
a few minutes.
How many bits in the modulus [512]: 1024
% Generating 1024 bit RSA keys, keys will be non-exportable...
[OK] (elapsed time was 1 seconds)
*Aug 23 13:34:25.515: %SSH-5-ENABLED: SSH 1.99 has been enabled

创建完成之后可以通过 show crypto key mypubkey all 命令查看创建的密钥文件。

R2#show crypto key mypubkey all
% Key pair was generated at: 13:34:25 UTC Aug 23 2016
Key name: R2.ccie43413.blogspot.com
Key type: RSA KEYS
Storage Device: not specified
Usage: General Purpose Key
Key is not exportable. Redundancy enabled.
Key Data:
30819F30 0D06092A 864886F7 0D010101 05000381 8D003081 89028181 00A79598
E47CC2DB 10F21512 58FB525A 2D1124CA 0F023260 8F77517E 0305D087 7D4FBED5
D09B9D12 FBBA7B2E AC2C7FD2 0EAF5B80 718191C8 6C111E6B 32757EBC 3EDFF46F
9385B974 23947D5C 98BCB2EF F9484A9C 8916761E 62DCE0D6 8C2B223E 5574060E
5D30F00D 610A5A84 B37ADEDE CE5DB93C DA7BF4BF ED42D965 24F932B4 95020301 0001
% Key pair was generated at: 13:34:26 UTC Aug 23 2016
Key name: R2.ccie43413.blogspot.com.server
Key type: RSA KEYS
Temporary key
Usage: Encryption Key
Key is not exportable. Redundancy enabled.
Key Data:
307C300D 06092A86 4886F70D 01010105 00036B00 30680261 00ADCAE4 ACF8A0D1
C0C8F0B8 B27B8E6C B0D0F70B EC2AA537 50505AC2 21020871 842E0FE2 9D9311CE
023F8FB1 9E621E0E 90E77A32 A2F42179 F164C84C 5D3BBF76 AAC8F3C4 6864FDB1
1BEFDB20 93AB5729 DEF7D6EE CAF825CD CFCE9D87 81FC412C 87020301 0001

然后在vty线路下开启SSH功能,并且配置用户名密码方式认证

R2(config)#line vty 0 15
R2(config-line)#transport input ssh
R2(config-line)#login local
R2(config-line)#exit
R2(config)#username ccie43413 secret 4 5eumjDyS.TauJikTRN0uboCxgj6pJEYb5tFrJ6efRUQ

配置

关键配置:
ip domain name ccie43413.blogspot.com                                   !创建一个域
!
username ccie43413 secret 4 5eumjDyS.TauJikTRN0uboCxgj6pJEYb5tFrJ6efRUQ !配置用户名密码
!
crypto key generate rsa                                                 !此命令在show run 中不会显示
!
line vty 0 4
 login local
 transport input ssh                                                    !选择ssh登录方式
line vty 5 15
 login local
 transport input ssh
验证:
R1#ssh -l ccie43413 12.1.1.2
Password: 
R2>

依据不同的用户给予不同的命令行权限

思科设备提供了两种实现此功能的方式,一种是用户登录到line上的时候,提供一个level等级,再依据等级给予相应的操作权限,但是这样并不利于管理,所以笔者采用的是view的方式来进行。
首先需要开启aaa new-model

R2(config)#aaa new-model

然后配置parser view

R2(config)#parser view cisco1
R2(config-view)#secret cisco1
R2(config-view)#commands exec include ping
R2(config-view)#exit
R2(config)#parser view cisco2
R2(config-view)#secret cisco2
R2(config-view)#commands exec include traceroute

配置Telnet用户名和密码(开启了aaa new-model就相当于在vty链路下login local,只不过没有显示)

 R2(config)#username ccie43413 password 0 ccie43413

配置

关键配置:

aaa new-model
!
username ccie43413 password 0 ccie43413
!
parser view cisco1
secret 5 $1$21sD$LVag09YktIMdoYadE9fGy/
commands exec include ping
!
parser view cisco2
secret 5 $1$ot3I$2Ws704Ml7MXcAtEzmxSYI0
commands exec include traceroute
!

验证:
特定的用户只能执行特定的命令。
R1#telnet 12.1.1.2
Trying 12.1.1.2 ... Open
User Access Verification
Username: ccie43413
Password: (这里输入的是Telnet的用户名和密码)
R2>enable view cisco1
Password: (这里输入的是parser view的用户名和密码)
R2#ping 12.1.1.1
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 12.1.1.1, timeout is 2 seconds:
!!!!!
Success rate is 100 percent (5/5), round-trip min/avg/max = 8/9/12 ms
R2#traceroute 12.1.1.1
% Invalid input detected at '^' marker. 

R1#telnet 12.1.1.2
Trying 12.1.1.2 ... Open
User Access Verification
Username: ccie43413
Password: 
R2>enable view cisco2
Password: 
R2#traceroute 12.1.1.1
Type escape sequence to abort.
Tracing the route to 12.1.1.1
VRF info: (vrf in name/id, vrf out name/id)
  1 12.1.1.1 12 msec 16 msec 8 msec
R2#ping 12.1.1.1
% Invalid input detected at '^' marker.
R2#

远程登录惩罚特性

配置一些惩罚特性可以降低密码被破解的可能性,如下是配置命令。

R2(config)#login block-for 600 attempts 3 within 60
R2(config)#login delay 2
R2(config)#login quiet-mode access-class ccie43413
ip access-list standard ccie43413
permit 192.168.1.1
R2(config)#login on-failure log
R2(config)#login on-success log

login block-for 600 attempts 3 within 60
如果有一个用户在60秒的时间内登录错误达3次,那么这个用户需要等待600秒的时间之后才可以重新连接Telnet会话

login delay 2
指定连续登录的时间间隔

login quiet-mode access-class ccie43413
只要是匹配了ACL是“ccie43413”的这些IP地址,不受 login block-for和login delay的影响。

login on-failure log 和 login on-success log
相应的login日志记录

log:

验证
略
*Aug 21 20:34:35.119: %SEC_LOGIN-4-LOGIN_FAILED: Login failed [user: 1] [Source: 1.1.1.1] [localport: 23] [Reason: Login Authentication Failed] at 20:34:35 UTC Sun Aug 21 2016
*Aug 21 20:34:35.123: %SEC_LOGIN-1-QUIET_MODE_ON: Still timeleft for watching failures is 23 secs, [user: 1] [Source: 1.1.1.1] [localport: 23] [Reason: Login Authentication Failed] [ACL: ccie43413] at 20:34:35 UTC Sun Aug 21 2016
*Aug 21 20:34:36.931: %SEC_LOGIN-5-QUIET_MODE_OFF: Quiet Mode is OFF, because block period timed out at 20:40:34 UTC Sun Aug 21 2016

参考文献

  1. Cisco IOS Terminal Services Command Reference, Release 12.2

2017年9月29日 更新