ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

PKI系列:(4) 证书访问控制—CABAC

2021-03-09 23:03:42  阅读:252  来源: 互联网

标签:map 证书 访问控制 CABAC crypto site ASA PKI config


说明

    有时候,我们希望对证书的内容控制的非常细致,总是想让同一部门的人才能互访,而其余的部分则不可以,默认情况下,只要有合法的证书的设备,那么就能正常建立起***,如果想得到控制的话,在Cisco上提供一个叫做CABAC,证书访问控制来对证书的某些字段进行匹配,只有匹配的才能进行建立***,访问特定的资源。

    介绍下环境,CA Server是2003服务器,之前用IOS建立过***的介绍,这次换2003,设备左边的是路由器,而右边用的是ASA 8.0版本,它们之间建立基于证书的***。 NTP服务器用路由器来搭建,Windows 2003上没找到好的NTP 服务器,ASA是做不了NTP服务器的。IP 地址信息按图上所规划的,路由器身后有个网段1.1.1.0/24,ASA身后有个网段 2.2.2.0/24。

NTP服务器设置

这里NTP的时间一定要与2003的时间对应,否则整个PKI则无效,可以比2003的时间快点,因为这样可以落在证书有效范围内,但是,不要比它慢。
Router
Cisco-site_1(config)#clock timezone GMT 8
Cisco-site_1#clock set 11:11:00 18 nec 2012

ASA
Cisco-Site-2(config)# clock timezone GMT 8
Cisco-Site-2(config)# ntp server 12.1.1.2

show ntp status的时候,显示为synchronized,就证明时间已经同步了。

服务器搭建
参考之前CA Server部署那篇文章,有对于2003和SCEP插件的安装介绍。

路由器申请证书

1、创建RSA密钥对
Cisco-site_1(config)#crypto key generate rsa modulus 2048 label cciese exportable

2、创建信任点
Cisco-site_1(config)#crypto pki trustpoint IOS
Cisco-site_1(ca-trustpoint)#enrollment url http://12.1.1.1/certsrv/mscep/mscep.dll
Cisco-site_1(ca-trustpoint)#subject-name cn=Site1.ccie.com, o=ccie, ou=cciers, c=cn
Cisco-site_1(ca-trustpoint)#rsakeypair ccies

注意,微软的格式是这样获取的。

3、申请根证书
Cisco-site_1(config)#crypto pki authenticate IOS

pki

这个MD5值可以询问CA 管理员是否一致

pki

可以通过这个进行查看 。

4、申请个人证书
首先进入http://12.1.1.1/certsrv/mscep/mscep.dll 来复制一次性密码,也就是challenge password is 那段
Cisco-site_1(config)#crypto pki enroll IOS

pki

这里password和re-enter password 是输入那个复制的一次性密码。

5、CA Server颁发证书
可以在管理工具里面———证书颁发机构

pki

有个等待颁发的证书,如果是正常手续的话,可以双击这个证书查看个人信息,如果确定无误,右击进行颁发。
Dec 18 03:47:20.811: %PKI-6-CERTRET: Certificate received from Certificate Authority 当收到这个信息后,就表示证书申请成功了。

注意的地方

我们看下 show crypto pki certificates
申请过程中的状态

pki

申请后的状态

pki

它在申请过程中,其实通过RA来进行申请的,这时候Windows 2003其实是作为RA的存在,因为SCEP默认它不集成的。那为什么在路由器上它能自动识别呢。可以看下show run的配置

pki

当配置了url为微软格式后,它会自动添加一条命令 mode ra,所以,它可以自由的转换, 如果是在H3C和HW上配置的话,这个必须手动配置,否则的话,证书会申请失败。

ASA上的证书申请

1、创建RSA密钥对,在ASA上这是必须的,系统不会自动创建
Cisco-Site-2(config)# crypto key generate rsa label cciese modulus 2048

2、创建信任点
Cisco-Site-2(config)# crypto ca trustpoint ASA
Cisco-Site-2(config-ca-trustpoint)# subject-name cn=site2.ccie.com, o=ccie, ou=cciese, c=cn
Cisco-Site-2(config-ca-trustpoint)# enrollment url http://12.1.1.1/certsrv/mscep/mscep.dll
Cisco-Site-2(config-ca-trustpoint)# keypair cciese

这里ASA还是引用的12.3IOS的配置方法,而IOS 12.4以后就使用PKI的方式了

3、申请根证书
Cisco-Site-2(config)# crypto ca authenticate ASA

pki

4、申请个人证书
首先,在CA Server上刷新一次性密码,按F5即可,因为上次的密码被使用了。然后复制

Cisco-Site-2(config)# crypto ca enroll ASA

pki

5、CA Server颁发证书

pki

# The certificate has been granted by CA! ASA上收到这个提示了就证明,收到个人证书

pki

一个非常重要的问题来了,注意下,它发布CRL的方式,http://domain/certenroll/Root-ccie.crl,这个domain对于路由器和ASA来说它并不知道是多少,这会导致什么情况发生?

pki

查看crls发现为空,这是很正常的,因为ASA和路由器发送请求这个CRL时候,CA 服务器以http://domain来做为地址,而domain这个地址,对于ASA和路由器来说并不知道,所以导致CRL解析失败。

解决办法:

1、ASA和路由器上静态定义一个ip host domain 12.1.1.1 ,这样ASA和路由器就能正常解析了,但这个只适合实验环境。


2、对于工程环境来说,可以通过NAT来把CA服务器映射出来,无论是否是动态IP地址,动态IP地址可以通过一个技术解决,DDNS,只需要ASA和IOS上开启域名解析和定义一个公网的DNS服务器。建议是8.8.8.8 或者是DDNS产商的服务器。

3、关闭CL的检查,这样能互相建立***,但是,不建议这么做。

4、在CA Server上添加一个CRL的静态地址目录,右击Root-CCIE属性——-扩展——-添加,这种方法只能是静态的公网地址才可,否则建议使用第二种解决方案。


pki

关于使用哪种方案,取决于实际环境而定,建议使用 2、3、4, 第一种比较不太现实,但是,我这由于是实验环境,所以,可以通过这种办法解决。

pki
pki

都可以正常获取CRL,当设置了静态映射后,通过crypto pki crls request来重新获取CRL,ASA上注意参数是CA

***的配置

IOS上的
crypto isakmp policy 10
!
!
crypto ipsec transform-set trans esp-des esp-md5-hmac
!
crypto map l2l 10 ipsec-isakmp
set peer 12.1.1.3
set transform-set trans
match address ***

ip access-list extended ***
permit ip host 1.1.1.1 host 2.2.2.2
!
ip route 2.2.2.0 255.255.255.0 12.1.1.3

interface Loopback0
ip address 1.1.1.1 255.255.255.255
!

interface FastEthernet0/0
ip address 12.1.1.2 255.255.255.0
crypto map l2l

ASA的配置
crypto isakmp enable outside
crypto isakmp policy 10
authentication rsa-sig
encryption des
hash sha
group 1
lifetime 86400

tunnel-group 12.1.1.2 type ipsec-l2l
tunnel-group 12.1.1.2 ipsec-attributes
trust-point ASA

crypto ipsec transform-set trans esp-des esp-md5-hmac

crypto map l2l 10 match address 100
crypto map l2l 10 set peer 12.1.1.2
crypto map l2l 10 set transform-set trans
crypto map l2l 10 set trustpoint ASA
crypto map l2l interface outside

access-list 100 extended permit ip host 2.2.2.2 host 1.1.1.1

这里注意下,ASA上面默认是预共享密钥的,所以需要改为数字签名,然后、ASA与IOS的策略是不同的,所以需要改变。 红色部分是需要注意的。

***已经正常建立了。

CABA证书访问控制

当证书只要是合法的时候,那么IOS和ASA之间建立***是没有任何限制的,但是,在填写证书的个人信息的时候,IOS填写的OU为cciers,为ASA填写的cciese,这样填写就是为了模拟两个不同的部门,看下证书列表的使用。

Cisco-site_1(config)#crypto pki certificate map l2l 10

issuer-name是匹配根证书,而subject-name是匹配个人证书的信息。
Cisco-site_1(ca-certificate-map)#subject-name co ou=cciers
eq=必须等于 ne=不等于 co=包含 nc=不包含 ,通常情况下使用co就行了,包含这个字段就行了。

调用这个证书访问控制
Cisco-site_1(config)#crypto isakmp profile profile
Cisco-site_1(conf-isa-prof)#match certificate l2l
Cisco-site_1(conf-isa-prof)#ca trust-point IOS

调用这个证书访问控制,然后用IOS申请的根证书进行 验证,isakmp profile的功能就不介绍了,可以调用许多策略在里面。
Cisco-site_1(config)#crypto map l2l 10 ipsec-isakmp
Cisco-site_1(config-crypto-map)#set isakmp-profile profile
调用这个profile到map里面。

这时候,只允许从同一个CA申请的证书并且要满足OU=cciers的情况下,才允许进行***的建立,而ASA则是cciese的,如果成功的话,那么就***建立不起来。 注意的是,证书访问控制控制的是当别人与自己建立***的时候,才会检查是否满足列表匹配的,自己与别人建立是不会进行检查的。

pki

ASA主动发起会话的时候,是不信的

pki

debug信息提示Dec 18 05:42:56.539: map_db_check_isakmp_profile profile did not match,策略不匹配profile的内容

而从路由器端发起则没什么问题

pki

ASA上的证书访问控制

ASA的证书访问控制有点特殊,之前IOS上做了证书访问控制,ASA端发起的流量被拒绝了,因为OU不匹配访问控制设置的,这次,需要在ASA上定义一个OU=cciese的策略,IOS主动发起流量,如果建立不成功,则证明访问控制是有效的。
Cisco-Site-2(config)# tunnel-group-map enable rules
Cisco-Site-2(config)# no tunnel-group-map enable ou
Cisco-Site-2(config)# no tunnel-group-map enable ike-id
Cisco-Site-2(config)# no tunnel-group-map enable peer-ip

crypto ca certificate map ASA 10
subject-name attr ou co cciese

tunnel-group-map ASA 10 12.1.1.2

在ASA上做L2L的证书访问规则比较特殊,它必须关闭其余的匹配信息,自己定义规则, 默认情况下,ASA是通过对方发送过来的地址信息或者OU位来匹配特定的Tunnel-group,但是在L2L的证书控制之中,必须关闭才能有效,所以,在ASA进行证书访问控制需要特别的小心才行,暂时还没找到什么解决的办法。关闭这些,不会影响预共享密钥的***建立

pki

通信不了了,

pki

在ASA上的debug信息,级别我只给了7,只显示了部分信息,它上面提示

Dec 18 14:05:44 [IKEv1]: IP = 12.1.1.2, Trying to find group via cert rules… 说12.1.1.2正在视图匹配cert 的rules规则,后面就被拒绝了。

怎么确定它是被证书规则搞定的呢,可以在规则中在添加匹配ou=cciers即可
crypto ca certificate map ASA 20
subject-name attr ou co cciers

tunnel-group-map ASA 20 12.1.1.2

注意:不要把规则都定义在一个序列号中,一个序列号匹配一个规则,所以这里定义了20

pki

这时候,***就建立起来了。
总结下:1、证书访问规则只对对方发起的连接有效,而自己方发起的连接则不检查
2、如果要定义多个规则,就必须用序列号区分,一个序列号对应一个匹配规则(比如定义多个OU,如果是不同字段可以在一个ID中定义)
3、如果使用的是2008服务器的话,默认情况下CRL是不允许使用HTTP来获取的,需要在属性中打开这个功能。

本文首发于公众号:网络之路博客

标签:map,证书,访问控制,CABAC,crypto,site,ASA,PKI,config
来源: https://blog.51cto.com/ccieh3c/2653250

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有