PKI系列:(6)不一样的SSL VPN 认证与授权 【证书认证,LDAP授权】 | 网络之路博客(公众号同名)(其他平台网络之路Blog)
登录
  • 欢迎网络之路博客网站,分享有用的知识点,公众号:网络之路博客,B站:网络之路Blog
  • 如果您觉得本站对您有帮助,那么赶紧使用Ctrl+D 收藏吧,支持我们下
  • 远程技术支持的淘宝店铺已经开张了哦,传送门:需要的朋友可以点击查看

PKI系列:(6)不一样的SSL VPN 认证与授权 【证书认证,LDAP授权】

【汇总】部署自己企业内部的PKI架构

文档帖子汇总实战系列学习视频学习必备软件
    博主也只是业余时间写写技术文档,请大家见谅,大家觉得不错的话,可以推荐给朋友哦,博主会努力推出更好的系列文档的。如果大家有任何疑问或者文中有错误跟疏忽的地方,欢迎大家留言指出,博主看到后会第一时间修改,谢谢大家的支持,更多技术文章尽在网络之路博客,http://ccieh3c.com

说明

最常见的SSL VPN认证恐怕是用户名和密码了,其实还有个更加方便的认证,那么就是证书,为什么说SSL VPN证书认证方便呢,因为部署起来非常相对来说比较容易。目前只有ASA支持SSL VPN证书认证,路由器只支持AAA技术。

pki

介绍下几个概念:LDAP,轻量级目录服务,它非常类似一个目录合集,可以快速的查找到特定的资源, 像微软的AD就使用了LDAP,在SSL VPN中介绍LDAP,肯定是它来做认证和授权咯, LDAP支持直接调用AD数据库的用户信息来验证客户端,这样省去了部署Radius和ACS的麻烦。

证书认证: 这里讲的证书认证不是Server端提供一个合法证书, 而是,PC端也需要申请个人证书,并且把这个证书作为验证存在,那么怎么可以验证呢,可以回想下证书 由许多字段组成,在企业下的CA,当用户申请一个证书后,它是以用户名作为cn的。

这次环境,ASA使用的是8.4版本的OS,8.0也可以做,有些命令上的变化, PC使用XP,同时拥有user1、和user2的证书, 服务器使用的是2003,装了AD和CA

一、服务器初始化

关于服务器的搭建可以参考之前的文章dot1x的企业部署,其实对于个熟悉网络的人来说,搭建域和CA不是难事的。

创建两个user和group,LDAP一般需要依靠组进行授权,而不是针对单个用户

pki

user1隶属于group1、 user2 隶属于group2,后面就针对group1 和group 2进行授权

二、ASA 离线申请证书,一定要保证时间同步

1、创建密钥对
FW-ASA55200(config)# crypto key generate rsa label cciese modulus 2048
FW-ASA55200(config)# crypto ca trustpoint SSLVPN

2、创建信任点
FW-ASA55200(config-ca-trustpoint)# enrollment terminal
FW-ASA55200(config-ca-trustpoint)# subject-name cn=www.cciers.com
FW-ASA55200(config-ca-trustpoint)# fqdn www.cciers.com
FW-ASA55200(config-ca-trustpoint)# keypair cciese
FW-ASA55200(config-ca-trustpoint)# exit

cn和FQDN在SSL VPN的证书中非常需要注意i,因为它必须匹配你的SSL VPN的域名。

pki

有时候,我们访问一个https的网站,它会提示这个证书是有问题的,那么到低哪有问题呢,看下它提示的内容,有效期内、网页名称匹配、信任的颁发机构。

HTTPS证书不报错的三个规则:

1、受信任的根证书颁发机构 (PC必须安装根证书到信任机构)
2、时间在有效期内
3、FQDN, 也就是我们用域名访问的时候,那么这个服务器的证书必须包含这个域名的信息,也即是FQDN信息 (我们实际环境中,申请的域名,那么在申请证书的时候FQDN就填写这个域名)

FW-ASA55200(config)# crypto ca enroll SSLVPN
产生个人证书的申请文件 PKCS#10

pki

它会警告 这个证书将添加一个FQDN, 这个证书用于VPN身份验证可能会导致连接问题,询问是否要登记。 这里选择yes

复制这个PKCS#10的文件,发送给CA管理员。

3、CA服务器离线产生证书
通过http://localhost/certsrv/登录到网站,申请一个证书——–高级申请————-使用based64 编码的CMC或PKCS#10文件————–

pki

注意这里要选择Web 服务器类型,然后提交

pki

发现这里自动颁发了,这就是企业CA与独立CA不同之处,独立CA是需要手动颁发的,而企业CA大部分应用与企业内部,配合组策略来部署,所以,自动颁发是比较可行的。 下载以 base 64保存到桌面。

另外一个,还需要下载根证书,根证书比较简单,直接返回主页。

下载一个CA证书————–以based 64下载,保存到本地

pki

这样就两张证书了。

4、导入根证书和个人证书
用记事本或者写字板打开证书,先打开根证书,复制里面的内容

FW-ASA55200(config)# crypto ca authenticate SSLVPN

粘贴根证书的内容,按quit完成, 最后提示,根证书导入成功
导入个人证书,用记事本或者写字板打开个人证书,复制内容
FW-ASA55200(config)# crypto ca import SSLVPN certificate

pki

粘贴复制的内容,按quit结束, 提示证书导入成功。

三、PC离线证书申请方式

在实验环境中,我们可以直接通过http的形式访问内部CA服务器,进行证书申请,但是,为了让朋友们在实际工作中明白怎么离线申请证书,我们可以以几种方式进行。
1、管理员以不同的用户名登陆,为它们分别申请证书,这个适合没有加域的用户
2、如果是加域了的用户,那么完全可以通过组策略方式,让用户自动完成证书注册,这样对于用户来说是透明的。
3、可以通过把CA服务器暂时性的转换到外部,让PC进行申请证书

这里,我们使用第一种方法进行, 关于组策略部署证书在dot1x系列已经讲过了,有兴趣的朋友可以看看。

pki

申请一个证书———–用户证书———–提交

pki

然后,安装此证书,这时候需要选择工具————Internet选项——-内容———证书————–

pki

选择导出

pki
pki
pki

然后保存在桌面。使用同样的方法对user2 进行申请证书——然后导出来,保存在桌面。

pki

将这三张证书一起发送给客户端。

先安装根证书,然后安装个人证书

pki
pki
pki

在导入个人证书的是,不要标志此密钥为可导出的、这样有效的保护了证书

pki

PC上的额外步骤

因为在这次环境中,没有部署DNS服务器,而我们访问SSL VPN是利用域名方式进行访问的,所以这里必须修改下PC的hosts文件,添加一条SSL VPN域名的解析记录。
C:\WINDOWS\system32\drivers\etc

pki

SSL VPN的配置

FW-ASA55200(config)# webvpn
FW-ASA55200(config-webvpn)# enable outside

FW-ASA55200(config)# tunnel-group DefaultWEBVPNGroup webvpn-attributes
FW-ASA55200(config-tunnel-webvpn)# authentication certificate
FW-ASA55200(config)# ssl trust-point ssLVPN inside
FW-ASA55200(config)# ssl certificate-authentication interface outside port 443

就启用SSL VPN,并且启用了证书认证

pki

可以选择user1或者user2直接进行验证,而不用输入用户名了。

没有任何提示证书不安全,认证通过了

SSL VPN的LDAP授权

FW-ASA55200(config)# aaa-server 2003 protocol ldap
FW-ASA55200(config)# aaa-server 2003 (inside) host 10.1.1.249
FW-ASA55200(config-aaa-server-host)# ldap-base-dn dc=cciers, dc=com dn属性
FW-ASA55200(config-aaa-server-host)# ldap-scope subtree 查询的访问包括子域
FW-ASA55200(config-aaa-server-host)# ldap-naming-attribute sAMAccountName 微软的格式
FW-ASA55200(config-aaa-server-host)# ldap-login-dn cn=administrator, cn=users, dc=cciers, dc=com 管理员权限账户,必须明确标明它处于哪个位置,
FW-ASA55200(config-aaa-server-host)# ldap-login-password cisco+123 管理员权限的密码
FW-ASA55200(config-aaa-server-host)# server-type microsoft 服务的类型为微软
FW-ASA55200(config-aaa-server-host)# exit

pki

关于DN属性,如果学过微软的就知道,它是基于命名的格式,这里我创建了一个cciers.com的域,那么dn属性就是dc=cciers, dc=com,管理员权限的位置怎么区分呢, 我们可以看到administarot处于cciers.com的users下, 那么就是cn=administrator, cn=users, dc=cciers, dc=com

关于属性的映射

FW-ASA55200(config)# ldap attribute-map sslvpn
FW-ASA55200(config-ldap-attribute-map)# map-name memberOf IETF-Radius-Class
FW-ASA55200(config-ldap-attribute-map)# map-value memberOf CN=group1,OU=SSLVPN,DC=cciers,DC=com 1
FW-ASA55200(config-ldap-attribute-map)# map-value memberOf CN=group2,OU=SSLVPN,DC=cciers,DC=com 2
怎么知道这个属性怎么得到呢,如果熟悉微软的人,那么就能轻松的写出来,但是,有时候我们学习网络的人来说,只对网络精通,而微软的却不怎么样了,我们可以通过一个debug信息来获取信息。

debug ldap 255
ASA5520# test aaa authentication 2003 host 10.1.1.249 username user1 password $
INFO: Attempting Authentication test to IP address (timeout: 12 seconds)

[8] Session Start
[8] New request Session, context 0xce37fdd0, reqType = 1
[8] Fiber started
[8] Creating LDAP context with uri=ldap://10.1.1.249:389
[8] Connect to LDAP server: ldap://10.1.1.249:389, status = Successful
[8] defaultNamingContext: value = DC=cciers,DC=com
[8] supportedLDAPVersion: value = 3
[8] supportedLDAPVersion: value = 2
[8] supportedSASLMechanisms: value = GSSAPI
[8] supportedSASLMechanisms: value = GSS-SPNEGO
[8] supportedSASLMechanisms: value = EXTERNAL
[8] supportedSASLMechanisms: value = DIGEST-MD5
[8] Binding as administrator
[8] Performing Simple authentication for administrator to 10.1.1.249
[8] LDAP Search:
Base DN = [dc=cciers, dc=com]
Filter = [sAMAccountName=user1]
Scope = [SUBTREE]
[8] User DN = [CN=user1,OU=SSLVPN,DC=cciers,DC=com]
[8] Talking to Active Directory server 10.1.1.249
[8] Reading password policy for user1, dn:CN=user1,OU=SSLVPN,DC=cciers,DC=com
[8] Read bad password count 0
[8] Binding as user
[8] Performing Simple authentication for user1 to 10.1.1.249
[8] Checking password policy for user user1
[8] Binding as administrator
[8] Performing Simple authentication for administrator to 10.1.1.249
[8] Authentication successful for user1 to 10.1.1.249
[8] Retrieving user attributes from server 10.1.1.249
[8] Retrieved Attributes:
[8] objectClass: value = top
[8] objectClass: value = person
[8] objectClass: value = organizationalPerson
[8] objectClass: value = user
[8] cn: value = user1
[8] sn: value = user1
[8] userCertificate: value = 0…0..r…….a……..!0…*.H……..0<1.0…..&…,d….com1.0…..&…,d…
[8] userCertificate: value = 0…0..s…….as.!……0…*.H……..0<1.0…..&…,d….com1.0…..&…,d…
[8] userCertificate: value = 0…0..s…….ap.o……0…*.H……..0<1.0…..&…,d….com1.0…..&…,d…
[8] distinguishedName: value = CN=user1,OU=SSLVPN,DC=cciers,DC=com
[8] instanceType: value = 4
[8] whenCreated: value = 20121219052131.0Z
[8] whenChanged: value = 20121219070301.0Z
[8] displayName: value = user1
[8] uSNCreated: value = 49184
[8] memberOf: value = CN=group1,OU=SSLVPN,DC=cciers,DC=com
[8] uSNChanged: value = 49226
[8] name: value = user1
[8] objectGUID: value = .q;FH..K….)y\.
[8] userAccountControl: value = 512
[8] badPwdCount: value = 0
[8] codePage: value = 0
[8] countryCode: value = 0
[8] badPasswordTime: value = 130003706445625000
[8] lastLogoff: value = 0
[8] lastLogon: value = 130003706515000000
[8] pwdLastSet: value = 130003680915468750
[8] primaryGroupID: value = 513
[8] objectSid: value = …………W.(fRZ.I]K..c…
[8] accountExpires: value = 9223372036854775807
[8] logonCount: value = 0
[8] sAMAccountName: value = user1
[8] sAMAccountType: value = 805306368
[8] userPrincipalName: value = user1@cciers.com
[8] objectCategory: value = CN=Person,CN=Schema,CN=Configuration,DC=cciers,DC=com
[8] Fiber exit Tx=704 bytes Rx=6808 bytes, status=1
[8] Session End
INFO: Authentication Successful

红色部分,已经给出user1的DN属性了,
map-name memberOf IETF-Radius-Class class属性相当于ACS上的25 class属性
map-value memberOf CN=group1,OU=SSLVPN,DC=cciers,DC=com 1 , 属性部分可以直接复制,1代表下面的group-policy,做个映射

ASA5520(config)# aaa-server 2003 host 10.1.1.249
ASA5520(config-aaa-server-host)# ldap-attribute-map sslvpn
调用这个ldap属性映射

ASA5520(config)# tunnel-group DefaultWEBVPNGroup general-attributes
ASA5520(config-tunnel-general)# authorization-server-group 2003
ASA5520(config-tunnel-general)# authorization-required
ASA5520(config-tunnel-general)# username-from-certificate CN
注意:8.3之前是这个命令 authorization-dn-attributes CN
这些命令的意思是,当一个证书认证过来的时候,通过证书的CN位通过LDAP来询问这个用户在AD中的属性,然后通过属性对应的映射,给于授权。

FW-ASA55200(config)# group-policy 1 internal
FW-ASA55200(config)# group-policy 1 attributes
FW-ASA55200(config-group-policy)# banner value user1

FW-ASA55200(config)# group-policy 2 internal
FW-ASA55200(config)# group-policy 2 attributes
FW-ASA55200(config-group-policy)# banner value user2

测试结果

user1的证书验证

pki

user2的验证

pki

认证和授权全部通过了,证明之前的部署都是成功的。

总结:关于SSL VPN的证书验证其实还是很容易实现的,因为通常情况下,可以通过组策略或者NAT方式进行申请, 推荐使用组策略来部署,没加域的特别用户才用NAT方式进行申请。

1、LDAP还能完成认证的功能, 由于这次是证书认证,所以没介绍LDAP的详细使用
2、虽然LDAP功能比较强大,但是也有缺陷,比如不支持空格的OU,和中文的(在cisco中)

下载对应文档

百度盘下载博客资源汇总与学习思路
如果下载地址失效,请联系博主或者在下面留言,谢谢。下面也有其他您需要的资源推荐哦

关于博客资源下载说明

首先,感谢大家对网络之路博客的支持,本站所有资源都是开放下载,不做任何限制,资源都是上传在百度盘,分为两种类型:
(1)第一种是书籍PDF与视频类,全部放在博客分享,觉得对大家学习有帮助的博主会收集好、然后以博主的经验整理分类后排序好分享出来。
(2)第二种是技术性文章与视频,全部放在公众号(网络之路博客)/B站(网络之路Blog)发布,以博主原创为主,主要分享系列为主,由浅入深的带大家了解工作中常用到的一些网络技术,当然也会分享一些比较经典的案例。
(3)分享资源有涉及到您的利益以及版权问题,请联系博主,24小时候内删除。
想第一时间收到最新更新内容吗,点击获取~~~

点击查看详情

(广告)博主自主原创最新实战课程

点击查看详情


(广告)远程技术支持(设备调试),有搞不定的找我,价格实惠,为您解决实际工作上的问题

远程技术调试与技术支持,点击查看详情


原创与收集的内容,允许转载,转载时请务必以超链接形式标明文章原始出处,博客地址http://ccieh3c.com。

喜欢 (2)
[]
分享 (0)
公众号:网络之路博客(其他平台网络之路Blog)
分享一些自己懂的技术知识点,希望对大家有帮助。
发表我的评论
取消评论
表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址