您可以捐助,支持我们的公益事业。

1元 10元 50元





认证码:  验证码,看不清楚?请点击刷新验证码 必填



  求知 文章 文库 Lib 视频 iPerson 课程 认证 咨询 工具 讲座 Model Center   Code  
会员   
   
 
     
   
 订阅
  捐助
零信任架构实战系列:无密码化方案落地
 
 
  1671  次浏览      19
2021-8-11
 
编辑推荐:
本文介绍了密码的背景和危害、方案设计和架构及如何同零信任的场景结合, 希望对您的学习有所帮助。
本文来自于LiREEBUF,由火龙果软件Linda编辑、推荐。

密码/口令一直是企业安全中绕不开的一个话题,无数英雄在此折腰,相信不少人都有欲除之而后快的念头,那么我们是否可以干掉密码?又会有哪些挑战?本文既是对干掉密码的实践,以及如何同零信任结合。

一、密码是一剂良药吗?

(1)密码/口令起源

正文开始前,为避免混淆先明确,本文内所说的密码实则是登陆口令,特指静态密码,而非对通讯或内容加密的对称或非对称密码。

相传在《左传》中,2000多年前的吴国与楚国在交战时,吴王的船被楚军截获,十分着急的吴国士兵在一个漆黑的夜晚,派了3个士兵乔装成楚兵,潜入进去楚军,为了避免黑夜认错人,按照事先约定好的,以“余皇”为暗号进行身份确认,后夺回了吴王船只。

从此,“暗号”开始在军中使用,一般在对敌战争中能见度不高时,用来辨别敌我,后来又称“暗号”为“口令”沿袭至今。(故事未经考证)

(2)密码的“危害”

从上述故事可以看出,密码的安全机制是在于,密码只有拥有者和验证者才知晓,通过对密码的校验来识别身份,如果密码泄露了,就可以伪装身份,先进大多数网站、系统的认证也是如此,账号和密码背后代表了你的身份和权限。

常规情况来说,密码应该是安全的,理论上不会被其他人知道,但真实的情况却不是这样,密码成了现在最容易攻击的一大薄弱点,大体上针对密码以下攻击方式都会导致密码失效:

弱口令:弱口令是非常普遍的情况,本质上是违反人要追求便利的心理,违反了人性;

密码盗取:有多少看客曾经将密码放到txt中,或记录在便签纸上?或是中个木马通过键盘记录,都很容易导致密码被盗取,而密码复杂性在这类场景下毫无意义;

撞库攻击:一般不会有人对每个网站都设置独立的密码,原因还是违反了人性,所以一旦某一个网站密码被泄露,账号很容易在其他网站中被撞,大概率会登陆成功,在外暗网内的密码社工库已经达到惊人的规模了;

拖库攻击:直接从服务端上把账号和密码盗走,方式多样,最终结果都是数据库被拿走,用户对此是毫无感知的,至于密码复杂的意义在于服务端有没有进行加密,加密可以增加被爆破的难度。

从上述情况可以看到,密码被盗是大概率事件,就算你有良好的习惯,也无法保障其他地方不出问题。

而在企业中,密码带来的安全风险就更严峻,很多APT案例,都是以获取到管理员密码为里程碑,比如去年驱动之家供应链攻击,如下图:

(图1)腾讯御见分析报告

在针对驱动人生的攻击中可以看到,前期准备、横向移动的阶段性成果,都是以获取到管理员账号密码为里程碑,并且在目标达成后很快就实施了后续的攻击,迅速达成战果。

这类型的攻击在企业安全事件中也是层出不穷,导致密码讽刺的由应该提供保护,变成了加害方,密码不再是安全要素而是风险要素。

二、去密码化方案分析

那么我们能否干掉密码,用更安全的方式来替代它呢?答案显然是可以的,而且这个目标应该是多数企业应该达成的目标,会是一个长期趋势。

(1)密码在企业中的应用

在尝试干掉密码前,有必要先了解清楚密码在企业中的应用范围,对方下药疗效才更好。如果按照密码使用对象来区分,会有下面几类对象:

面向客户

业务密码:QQ、游戏账号之类

面向员工

办公PC密码

企业邮箱密码

业务IM密码

网络准入密码

VPN密码

代码仓库密码

业务系统密码

OA网站密码

面向管理员

网络设备密码

服务器登陆密码

安全设备登陆密码

管理后台密码

......

面向系统服务

API-KEY:服务API调用认证

数据库密码

......

这四类对象,需要采用的解决方案各不一样,这篇文章会先聚焦在企业内部用户“员工”和“管理员”这两类角色上,业务账号安全、服务口令安全留在后续再做探讨。

(2)密码挑战

在面向员工和管理员的密码安全问题上,企业安全已经奋战很多年了,各大公司都采用过很多方式,例如下面场景方式:

密码复杂策略:通过域控、后台密码策略等方式,强制要求密码满足复杂度要求,比如我知道业界某知名公司要求密码长度在15位以上,15位以下被视为弱口令;

密码生命周期:要求定期密码进行更换,以及禁止使用之前曾经用过的密码,防止密码来回使用,目的就算密码被泄露了,也只在密码生命周期内可用;

主动爆破:包括不限于直接用密码破解机对域控密码进行破解,用扫描器进行爆破,用基线系统进撞密码,目的是主动发现弱密码;

社工库撞库:前几年法律不完善时,为了降低社工库危害,很多企业安全团队会自己下载社工库后去撞公司员工账号,目的也是为了主动发现被泄露的密码;

除此外还有口令管理制度、安全意识培训,这些并没有什么用的方式...

上述方案在人性面前,都是naive,多年的企业安全经验上,有违人性的规则,必然会被绕过,比如:

密码复杂度策略:类似这样“123456qwerty!@#$%^”看似安全的复杂密码,或是写在电脑旁的便签纸上,更为了方便贴在显示器下广而告之;

密码生命周期:每次都要设新密码,记不住怎么办?在密码后通过+1、-1方式来循环;

最终你会发现,规则有多强,人的创意就会有多高。

(3)替代密码方案的选择

那么什么样的密码才是安全的呢?我总结了个密码四要素,相对应的强密码就是他的反面,可以用来做评估参考,如下:

弱密码要素

可知:可以被获取到;

可预测:可以通过其他信息预测到,比如生日,姓名;

可重放:可以被重复使用;

单一维度:维度单一,一输皆输。

强密码要素

不可知:不能或难以被获取;

不可预测:强随机性,不能或难以被预测;

不可重放:一次有效,无法被重复使用;

多维度:维度多样化,需要多维度组合,某一个维度被盗不影响整体安全。

基于上述标准,引入现在场景的密码替代技术,可以快速评估密码替代方案是否安全、健壮,如下:

上表可以看出,大众普遍认识的生物识别并不安全,而多数运维使用的证书登陆也并不安全,至于以前手机上常见的手势方式验证就更弱了。

传统的OTP+PIN码的方式是相对最安全的,也是我们首选方案,但需要说明但是,考虑到用户体验等问题,我们也使用了扫码等方案来适用不同场景,并非单纯的一刀切。

而每引入一个新的方案,一定会带来新的风险,比如OTP+PIN的方式安全依赖密钥种子和算法安全性,本文假定这些方案都被用最优方式落地,因此不做进一步衍生讨论了。

三、去密码化方案设计

明确了需求、挑战和密码替代方式后,就可以开始进行去密码化方案设计了,在方案设计上需要考虑:需求是否能被满足、是否可以扩展、是否具备弹性、是否稳定、以及易用,同时设计时也需要考虑后续如何落地的问题。

(1)需求实现

需求实现上一个重要考虑是不是能支持员工、管理员使用的密码场景,通过对密码场景进行梳理分类,会发现需要支持的认证方式主要有下面几类,只要支持了这些认证方式,对应的系统、场景也就可以支持到了。

Form网页认证:

OA网站

内部业务系统

后台管理网站

知识库等

PAM认证:

Linux类服务器认证

Windows KDC认证:

Windows类系统

Radius认证:

网络准入、无线网准入

网络设备认证

VPN认证

私有协议:

企业IM认证

exchange客户端认证

(2)统一认证系统架构

为了提高用户体验,降低成本,建立统一的认证中心是很有必要的,尤其是集团化的公司,随着分公司、人员和业务的增多,如果是分散的架构,会导致要投入的人力成本大幅增加。

等部署实施完,随着人员在不同公司、业务之间的流动,又会加剧管理的复杂度,最终因用户体验下降,项目难以被推进。

(图2)统一认证系统架构

绿色-核心区

Auth服务:认证系统核心,用于算法、密钥种子、密钥生成方式;

Auth-DB:用于存储用户、认证代理、授权等相关信息;

红色-认证代理和认证接口

Form认证代理:用于提供web系统OTP认证接入;

PAM认证代理:用于Linux类系统使用OTP认证接入;

Windows认证代理:用于Windows类系统使用OTP认证接入;

auth接口:私有协议或是特殊场景下使用auth接口来获取认证信息;

Radius:对接Radius服务,用于网络设备、准入、VPN类的OTP认证接入;

蓝色-用户区

激活服务:用户自助系统,用于用户自主激活,PIN码设置,手机更换,找回等;

软、硬令牌:OTP载体,实际上由于智能手机的普及,通过手机软令牌会给用户更好的体验,硬件令牌往往用于一些特殊场景;

黄色-管理区

系统管理后台:用于权限分配、用户锁定、禁用、认证代理管理等功能

(3)认证代理实现

在认证代理实现上,区分不同认证代理是为了解决不同认证场景,本质上都是将认证请求转发到auth中来认证,例如Form网页认证代理,将输入的账号和密码转给auth服务进行验证,返回认证结果给业务网站。

除form外,其他几类认证都有开源或是相关解决方法,现将常用的几类实现原理简要进行介绍,如果需要进一步研究和实现的可以根据文章后面的参考链接,进一步学习。

PAM认证代理

可拔插验证模块(PAM)是Linux自带的功能,是为了通过统一的接口、配置,以可扩展方式实现不同的认证接入。

(图3)PAM框架

在PAM框架上,对于相关的认证管理、账号管理、会话管理、口令管理都进行了封装,开发者不用关心底层使用的服务模块,可以比较快速的实现,网上也有很多样例可以参考。

(图4)PAM配置架构

我们只需要按照PAM标准,开发好对应的SO通过PAM配置文件,指定什么样的应用使用OTP认证,比如远程登陆,或是本地登陆,su之类。

Windows认证代理

Windows的OTP认证代理实现相对比较复杂,原因是windows不像Linux提供了比较好的认证接入方式,需要通过劫持方式来嵌入OTP的认证,但这类方式并非完美实现,主要逻辑如下:

(图5)2003交互式登陆流程

上图是windows 2003、XP版本的windows认证逻辑,区别在于左边的是走的本地认证,右边的走的域认证,嵌入OTP认证后的逻辑如下:

CTRL+ALT+DEL:进入交互式认证,启动GINA(账号密码输入框)

GINA:输入用户名和密码后,转发至本地LSA进行验证,如果是域的话会转给域LSA由AD进行认证;

New process:认证通过后,由OTP agent劫持认证状态,转入OTP的认证,认证通过后放行认。

(图6)windows2008登陆流程

windows2008后登录逻辑有了较大调整,引入了票据机制,整个逻辑更加复杂,但对OTP类的登录来说,过程还是一样,走完windows认证后进行劫持,再通过OTP认证。

但这类方案不是完美方案,会导致用户需要两次认证,体验并不好。如果有更好的解决方案,请发消息给我。

Radius认证

远程认证拨号用户服务(RADIUS)主要用于网络接入设备和认证服务器之间承载认证、授权、计费和配置信息。通常用于网络设备认证、VPN认证和网络准入等认证,支持PPP、CHAP、EAP等协议。

(图7)Radius认证代理

在OTP集成中通常有认证代理转发模式,即不对认证协议进行改造,而是将认证逻辑请求转到认证服务中进行验证,或是改造原生逻辑将OTP的认证逻辑嵌入其中。

密码代填方案(差)

先说明密码代填不是一个好方案,一般是用于解决一些老旧商业系统无法支持OTP的情况,这类系统由于是黑盒模式,又不提供接口或是SDK,导致接入改造难度比较大。

(图8)密码代填

这类场景在万不得已的情况下可以考虑密码代填方式,好处是实现相对容易,但问题是由要代填密码,也就是说会导致保存明文密码。

这类方式一旦认证代理如果出了问题,可以绕过验证,以任意人账号登录后面的系统,风险还是比较高的,通常不得已不要使用这类方式。如果一定要用可以通过对明文密码加密、密码随机化,密码一次性使用等方式来加强保护,但本质上还是不安全,并非是安全的方案。

有一些身份认证的乙方公司会使用这类方案来做集成,如果遇到这类要考虑下安全风险。

(4)用户身份绑定

统一认证架构后,令牌其实已经变成了唯一认证来源,不管想做什么,都需要令牌来。包括零信任中设备->用户->应用的信任关系,也是依赖于令牌。也就是说账号和OTP令牌实际是用户在网络空间中的投射。

考虑到近万员工已经不可能一对一来支持,或是通过管理员下发令牌来进行身份绑定和激活了。因此需要把激活过程变成自助模式,通过对员工实体身份对校验来进行激活绑定,以及结合员工状态来自动实现禁用、回收等工作。

该环节需要考虑比较多的是,怎么证明你就是你的问题,以及如何让用户好理解,引导上尽可能的方便不要造成用户的困惑,以及设备更换后,需要重新绑定等问题。

四、与零信任场景的结合

本质上这个无密码化方案是完全可以和零信任架构脱钩,独立运行,但有了零信任架构会带来用户体验上的很多好处。

方案开发和落地是两个事情,里面有巨大的鸿沟,尤其是当你实施时,需要面对大量用户时会面临很多技术和非技术的挑战,例如:

(图9)实施挑战

不开心:你要改变我的习惯,不开心,用不惯请你改回来;

没头脑:令牌怎么激活?帮助文档在哪里?你能不能帮我搞?

业务为王:业务出了问题你负责吗?我业务出问题了,就是上你们的搞的。

你爸爸:要集成?厂家不支持,厂家要费用,厂家没时间,厂家已经倒闭了...

上面这些是在涉及用户的安全方案落地中常见问题,而要做无密码化方案,势必要改变用户习惯,需要业务配合接入,而业务也要考虑自己的业务稳定性,这些挑战都需要运营、开发、业务携手来克服。

通过零信任架构,在一定程度上可以解决或减轻上述问题,主要原因是零信任集中了各类系统的入口,统一了身份,从而也可以天然可以统一认证方式了。

(图11)零信任集成架构

类似上述架构,Form类认证的网站业务可以全部放在网关后,服务器登陆维护可以用网页版堡垒机方式进行集成,移动办公和零信任终端agent集成等,关于这部分内容之前写的零信任实战远程办公中有写,感兴趣的可以看文末索引回顾,就不重复了。

用户体验好不好是安全方案能否落地的关键因素,尤其是在互联网公司,一个不小心就会被在论坛上喷,造成很大的压力。

通过零信任可以统一用户体验,账号、令牌、权限的激活均变为一次性操作,然后结合大量的自助引导,以用户体验为目标的UI设计,自助化的流程系统等,以一套标准培养用户习惯,最终达成预期目标。

五、结束语

这个方案是零信任架构中一个附带成果,个人觉得对企业安全来说,能解决密码安全问题可以给安全带来较大提升,而方案从设计、开发到实施落地,间隔了很长时间,团队也付出了很多努力,最后的一个体会就是,尽量避免违反人性去推动安全。

最终,某天我们终于发布了取消静态密码登陆的通告,将集团用户都切换到无密码化的环境中,解决了多数密码场景。

但要认清现实的是,实际情况还是有很多问题在等待解决,比如exchange客户端问题、数据库密码问题,API密钥问题,OTP和自动化运维的冲突问题等。

而大范围的使用过程中,还需要考虑HA问题、分布式架构等问题

 

   
1671 次浏览       19
 
相关文章

iOS应用安全开发,你不知道的那些事术
Web安全之SQL注入攻击
移动APP安全在渗透测试中的应用
从Google备份互联网看“数据安全”
 
相关文档

web安全设计与防护
互联网海量内容安全处理技术
黑客攻击与防范技术
WEB黑盒安全检测
 
相关课程

WEB网站与应用安全原理与实践
web应用安全架构设计
创建安全的J2EE Web应用代码
信息安全问题与防范
最新活动计划
MBSE(基于模型的系统工程)6-20[北京]
大模型微调原理与实操 6-20[厦门]
基于模型的数据治理与中台 6-25[北京]
DoDAF规范、模型与实例 6-24[北京]
UAF架构体系与实践 7-4[北京]
Linux内核编程及设备驱动 7-25[北京]
 
最新文章
物联网安全概述
史上最详细的区块链技术架构分析
一文读懂区块链整体架构及应用案例
区块链技术架构
安全架构评审实战
最新课程
Web应用安全架构、入侵检测与防护
物联网关键技术、安全与边缘计算
区块链安全技术实践指南
云服务与安全架构
互联网安全开发方法与实践
更多...   
成功案例
中国银行 信息安全技术及深度防御
北京 Web应用安全架构、入侵检测与防护
某财税领域知名IT服务商 Web安全测试
普瑞克斯 web安全设计、测试与优化
北京和利时 性能和安全性测试
更多...