主要是针对Anyconnect的SSL和IKEv2,但是我看到貌似考试传统的三种SSL-×××仍然要考,也会写。今天调了一天的证书,似乎没办法让证书有效。。。

顺便,补充一篇关于IOS CA操作的文档,有非常好的例子。
https://community.cisco.com/t5/security-documents/ios-ca-basic-deployment-certificate-enrollment-and-signing/ta-p/3120844

crypto ca authenticate CA
//这条命令就是认证根此trustpoint对应的CA服务器,并且获取此服务器的public key
cyrpto ca enroll CA
//认证CA Server之后需要从此服务器上申请对应的证书

与之前的例子不同的是,这篇文档都是使用 terminal 关键字,即base64的方式获取或者申请证书。
CA端配置
ASA的远程拨号×××方式_第1张图片

CA通过terminal导出base64形式的证书
crypto pki export CA pem terminal
ASA的远程拨号×××方式_第2张图片

首先说下ASA的策略拓扑,这是取自教主的总结。
之前8.4一共有3中×××,L2L,EZ,SSL。它们的共同点都是有或是配置,或是内置的tunnel-group和group-policy。
其中tunnel-group定义了我们如何终结一个×××,和这个×××使用什么认证方式,而认证策略,即authentication policy,和ISE一样,是让ASA配置他的外部拨号用户的数据来源(local, LDAP, ISE?)。而group-policy,顾名思义是组策略,可以狭义的理解为一个用户组使用何种策略(地址池,是否使用split tunnel,host scan等等)。

第一部分:SSL-×××
先上一个基本配置

web***
enable outside
anyconnect enable
anyconnect image disk0:......pkg

ip local pool Anyconnect-Pool 172.16.133.2-172.16.133.100
//定义anyconnect使用的地址池

group-policy Anyconnect-GP internal
//定义这是个内部组,组的属性由ASA自己配置
group-policy Anyconnect-GP attributes
//组的属性,地址池,使用ssl-client,也可以配置例如split-tunnel, ACL等
***-tunnel-protocol ssl-client
address-pool value Anyconnect-Pool

username SSLuser password cisco123
username SSLuser attributes
***-group-policy Anyconnect-GP //这里看到用户是和group-policy绑定的
service-type remote-access

ASA的远程拨号×××方式_第3张图片

拨号成功之后的验证命令
ASA的远程拨号×××方式_第4张图片

我其实申请了证书,但似乎没啥用。。。我很肯定win7 client端已经信任了根证书。查了很多文档,可能anyconnect现在对于证书的某些位要求很严格?
https://community.cisco.com/t5/***-and-anyconnect/need-help-with-untrusted-***-server-certificate-warning/td-p/2111280

直接先配了ikev2部分吧。

group-policy Anyconnect-GP attributes
***-tunnel-group protocol ikev2 ssl-client

cyrpto ikev2 policy 10
encryption aes
integrity sha
group 2
crypto ipsec ikev2 ipsec-proposal Anyconnect-IKEv2-Proposal
protocol esp encryption 3des
protocol esp integraity sha-1
crypto dynamic-map Anyconnect-DMap 1000 set ikev2 ipsec-proposal Anyconnect-IKEv2-Proposal
crypto map Anyconnect-IKEv2-Map 1000 ipsec-isakmp dynamic Anyconnect-DMap
crypto map Anyconnect-IKEv2-Map interface outside

crypto ikev2 enable outside client-service port 443
crypto ikev2 remote-access trustpoint CA

接着修改client profile,我不清楚是不是ASDM的bug,还是ASAv没有授权流量太小。总之client profile死活刷不出来。但是总算是推到客户端了。其中修改了部分配置如下,尤其要注意grou-policy web下的那个anyconnect profile,是和web下的anyconnect profile做关联的。
ASA的远程拨号×××方式_第5张图片

ASA的远程拨号×××方式_第6张图片

测试成功
ASA的远程拨号×××方式_第7张图片
banner
ASA的远程拨号×××方式_第8张图片

ASA的远程拨号×××方式_第9张图片

接下来改用ISE进行认证,如何使用ISE连接AD并且拿取user group不过多说明

ASA的远程拨号×××方式_第10张图片

强调一点,ISE最重要的功能,AAA服务器,
authentication policy是基于认证协议(radius, tacacs+, EAP-FAST, EAT-TLS 等等等)来决定你用哪个identity source,可以是AD的user,可以是local user database,也可以是endpoint store。
authorization policy是基于一些很多灵活的条件,决定你的授权结果。这个结果以radius attribute来实现。
来看我这里配的例子,authentication policy条件就仅局限于radius,使用windows AD
ASA的远程拨号×××方式_第11张图片
ASA的远程拨号×××方式_第12张图片
authorization policy,
只要是特等Domain group里的user,就可以获得我配置的authorization profile
ASA的远程拨号×××方式_第13张图片
其中authorization profile要和ASA本地的group-policy名字匹配。radius attribute: 25 class
ASA的远程拨号×××方式_第14张图片

ASA的远程拨号×××方式_第15张图片

测试通过后,看下ASA的一段日志。
ASA的远程拨号×××方式
由此可见,反复强调一个概念,group-policy,是用户组的属性。当ISE将class=Anyconnect-GP推给ASA后,ASA直接查看自己本地的group-policy。由此,用户组拿到自己这条anyconnect tunnel的属性。
ASA的远程拨号×××方式_第16张图片

在浏览了Metha的视频之后,有些我跳过了,比如show run all tunnel-group和show run all group-policy你可以查到大部分的属性,这在项目中有特别的需求注意就可以了。
有一篇,比如使用内网的DHCP来给anyconnect分配地址,应用场景虽然不能说没有,但是少。直接参考文档就行:
https://www.cisco.com/c/en/us/support/docs/security/anyconnect-secure-mobility-client/118084-configure-anyconnect-00.html
https://www.petenetlive.com/KB/Article/0001050
http://www.labminutes.com/sec0124_ssl_***_anyconnect_client_address_assignment

External group policy

主要参考labminutes的录像http://www.labminutes.com/sec0125ssl***_anyconnect_client_external_group_policy

先来看ASA端的配置,这也是最简单的:
group-policy EX-Anyconnect-GP external server-group ISE password Cisco123
当anyconnect输入认证密码之后(例如我这里是AD账户),ASA会以group policy作为用户名,Cisco123作为密码再发起一次认证。
所以在ISE里面我们需要修改两个配置

  1. 本地账号
  2. authentication policy不仅仅使用AD,也需要使用internal user
    internal user账号
    ASA的远程拨号×××方式_第17张图片

进入identity sequence,创建一个list使得AD和internal 账号都可以被使用
ASA的远程拨号×××方式_第18张图片

在authentication policy修改可以使用的identity
ASA的远程拨号×××方式_第19张图片

接下来就是授权策略,在配置authorization profile之前,首先需要修改以下dictionary(这个修改我非常不喜欢,要不是Metha大神,我都不知道去查什么文档,所以一般group-policy在项目中遇到的还是使用本地的)
ASA的远程拨号×××方式_第20张图片
ISE的GUI还算好的,但你看这html,需要添加两个SSL clientless 16,SSL client 32.
配置authorization profile
ASA的远程拨号×××方式_第21张图片

authorization policy的匹配条件,直接匹配防火墙的类型。。。

ASA的远程拨号×××方式_第22张图片

接下来看测试结果,PC端
ASA的远程拨号×××方式_第23张图片
ASA的远程拨号×××方式_第24张图片ASA的远程拨号×××方式_第25张图片

ISE radius log,注意二次认证
ASA的远程拨号×××方式_第26张图片
ASA日志
ASA的远程拨号×××方式_第27张图片

SSL clientless ×××
直接参考文档:
https://www.cisco.com/c/en/us/support/docs/security-***/web***-ssl-***/119417-config-asa-00.html
http://www.labminutes.com/sec0118_ssl_***_clientless_bookmark_auto_sign_on

至于像DAP hostscan等特性,9.8的Metha的VOD都需要ISE2.2支持,之后再学。


2019 7 10补充 我知道我的证书问题错在哪里了,教主的课白听了。证书作为验证身份的工具,其验证方法就是把身份信息(subject name)做hash,和fqdn等信息传送给远端。
远端将fqdn做hash,与传送过来的hash值进行比对,得出这张证书是否可以信任。所以subject name里面的CN,OU一定要填对。

ASA的远程拨号×××方式_第28张图片

ASA的远程拨号×××方式_第29张图片

对比之前的,我在搞毛啊。
ASA的远程拨号×××方式_第30张图片

重新测试anyconnect,就没有报错了。浏览器看到是我的路由器签发的证书。
ASA的远程拨号×××方式_第31张图片