【零信任】揭秘零信任里的“隐身”黑科技
2021-04-21
来源: 白话零信任
一个网络有多少IP和端口向外暴露,就有多少可以被攻击的点。暴露面越小,网络越安全。
零信任里面有一些可以实现“零暴露面”的隐身技术,可以让企业免疫网络攻击。
下面我就来介绍其中三种。
隐身技术1:SDP端口隐藏
SDP技术是用来实现零信任理念的最好的技术框架之一。SDP技术可以把攻击面降低到最小,甚至完全不暴露端口,实现“零”攻击面。
大家都知道,一个网站需要把端口映射到互联网上,才能被外部用户访问。
SDP可以做到——让一个网站只对合法用户映射端口,不对非法用户映射端口。
就像下图这样,只有合法用户能连接到业务系统。非法用户完全“看不到”被保护的业务系统和网络。坏人去尝试进行连接的话,会发现这个IP地址上什么网站都没有。但是同时好人却可以完全正常地使用。
被保护的网络就像隐身了一样,坏人根本看不到,摸不着。包括下图中列举的各类网络攻击都无从发起。有了SDP就相当于对所有网络攻击都免疫了。
这么神奇的效果是怎么实现的呢?介绍端口隐身的原理之前,我先科普一下啥是端口,黑客怎么攻击端口。
什么是端口
如果一个服务器是一个大楼的话,端口就像大楼的各个出入口。不同的入口可以进入不同的店铺、不同的区域。对服务器来说,不同的端口对应了不同的服务程序。
每个服务器程序都是通过“端口”跟外面的用户通信的。例如,我们平时用浏览器打开百度的时候,就是通过百度的443端口跟百度的服务器程序通信的。浏览器地址栏里真实的URL是www.baidu.com:443,你一般看不到443,是因为浏览器把端口隐藏了,没显示出来。不信你在url后面输入:443试试,打开的是同一个界面。
访问https网站是通过服务器的443端口,访问http网站是通过服务器的80端口,建立SSH连接是通过22端口,发送邮件是通过25端口……
黑客怎么攻击端口
黑客一般会先收集服务器都开了哪些端口,猜测服务器提供什么服务,然后分别制定相应的攻击计划。
所以,端口是攻防的关键。各类网络攻击基本都是以“端口”为目标的。如果端口没有暴露出来的话,黑客就没有可攻击的目标。
1、利用漏洞攻击
黑客用端口扫描工具(例如Nmap)可以从端口的返回信息中了解到很多服务器的信息。例如,服务器的操作系统、中间件、通信协议等等。
坏人知道了目标服务器的信息,就可以利用相应的漏洞去攻击。互联网上有很多公开的漏洞库。只要在漏洞库里搜索,就能查到漏洞。
操作系统、中间件等软件厂家会从漏洞库里查找自己的漏洞,并进行修复升级。但软件出新版了,用户不一定立马跟着升级。大部分用户用的都是带着漏洞的旧版本。
对黑客来说,这些服务器和用户,都成了靶子。黑客可以随意攻击,让服务器瘫痪、或者窃取机密信息。
2、DDoS攻击
除了利用漏洞,黑客还有更简单粗暴的攻击方法。
如果发现目标服务器某个端口是暴露的,直接利用大批的肉鸡傀儡机进行流量攻击,把服务器的资源占满,直接就能给服务器搞瘫痪。
3、自动信息收集
看到这,你可能会想,端口直接暴露在互联网上确实危险,但是哪有那么多人这么无聊,每天在网上扫描漏洞、肆意进攻啊。有的话也轮不到我吧。
我告诉你,错了!每天有很多爬虫在大规模地自动扫描。
就像百度会不断地爬全世界的所有网页一样,很多黑客组织会搞一套集群每天去扫全世界所有的服务器。下图就是某个国内的公开的服务器搜索引擎。去搜一个漏洞的名字,马上能把全世界所有有这个漏洞的服务器列出来。
所以,你可能已经在别人的目标列表里了,只不过还没轮到,或者你还不知道而已。
一般的防御手段
网络攻击很恐怖,那现在一般公司是怎么防御的呢?一般有两种手段。
一种是允许所有人访问目标网站,但是访问时会进行各种安全过滤。发现恶意代码或者病毒木马,则立即进行阻断。
这种方法依赖于识别恶意行为的规则库。如果一种新型的攻击刚刚被发明,破解方法还没被发明出来,那么很大可能这种攻击是防御不住的。这就是常说的零日攻击。
而且,这种防御的思路有一个缺陷,就是只要目标网站是暴露出来的,它就是一个靶子!坏人可以随时去研究它,破解它。
例如,WAF是专门防御针对web的攻击的设备,网上WAF的绕过教程有都很多。因为WAF是所有人都可以看到的,所有人都可以不断地去研究它,去测试有没有办法绕过它的防御。
正是因为第一种方法有这种局限,所以很多重要的系统都是不暴露在公网上的。
如果需要远程访问这种系统的话,企业一般选择通过VPN接入。
VPN的特点是它可以减小暴露面。外部用户看不到VPN保护的业务系统的端口。
但是VPN还是存在一个问题,就是VPN本身还是要暴露端口的。例如SSL VPN就要暴露443端口。有端口就有漏洞!例如下图就是我在漏洞库里搜到的各种VPN的漏洞。
所以VPN也不是一个完美的办法。那么有没有办法一个端口都不暴露呢?有!方法就是——SDP。
SDP的隐身原理
回到最开始的图。SDP设备通常会部署在网络的入口进行防御(下图中“火”左边的圆圈开关)。被保护的网络只有一个出入口。SDP就在这里把守。
1、SDP的组件
SDP需要两个组件配合,才能实现隐身的效果。这两个组件分别是SDP客户端和SDP网关。
(1)SDP客户端安装在用户电脑上。
(2)SDP网关部署在网络入口。
2、默认关闭所有端口
SDP网关的默认规则是——关闭所有端口,拒绝一切连接。网关防火墙规则只有一条,就是deny all。默认情况下,谁来他都不理。所有人都连不上它的端口。SDP网关就是这么“隐身”的。
3、端口敲门
这样的话,坏人是连不上了,但是好人怎么连呢?好人要进行一套特殊的流程才能连。这套流程叫做“端口敲门”。
打个比方,端口敲门的原理就像是,你要进入一个秘密基地,基地的大门平时是紧闭的。里面有个人守着,外面怎么敲门都不给开,除非你敲对了暗号,例如三长两短。敲对了暗号,就给开门了。
SDP技术要求好人在连接端口之前,也要“敲门”。
(1)SDP客户端在跟SDP网关通信之前,会先发一个“敲门”用的数据包。包中带有用户身份和申请访问的端口。
(2)SDP网关收到敲门包之后进行验证,看看身份合不合法,看看申请的端口有没有授权。
(3)如果都合格了,那么SDP网关会在防火墙中添加一条规则——允许来自这个用户的IP的流量访问某某端口。这就相当于把SDP网关这扇门给“敲”开了。
(4)敲门完成之后,用户再去访问网关的端口就可以访问通了。网关会把用户的流量转发给相应的业务系统。
注意,这个时候,坏人去访问“同一个端口”还是不能访问。因为网关只对好人的IP做了放行,坏人的IP是没有放行的。所以坏人还是扫不到端口,看不到,摸不着。
而且目标端口,对好人也只是暂时开放,一旦好人停止操作超过一分钟,端口就自动关了。如果好人一直在操作,那么SDP客户端会定期去敲门,保持端口是开放的。
你可能会发现,这里面有个问题——如果SDP网关默认所有的端口都是关闭的,那敲门包是怎么接收的呢?
其实,SDP会留一个端口,处于半开放的状态,只接收,不响应。(例如,随便一个UDP端口)
(1)端口号是网关事先与客户端协商好的,例如60001
(2)客户端把敲门包发送到60001端口上
(2)60001端口接收数据包后不做任何响应
(3)坏人的扫描工具探测60001端口时,会认为这个端口啥反应都没有,肯定是关闭的。
以上就是SDP的端口隐身机制。
4、隐身的效果
如果拿Nmap去扫描SDP网关的话,结果会发现所有端口都是关闭状态,如下图。但是用SDP客户端可以正常打开网站。
5、SDP和VPN的对比
Gartner预言SDP会替代VPN技术,主要就是因为SDP的隐身能力。VPN至少还是要暴露一个端口的(例如ssl vpn的443端口)。为什么总是听到vpn爆出漏洞的新闻呢,就是因为vpn始终暴露端口,坏人可以随时去尝试攻击,去研究你有没有漏洞。
所以从这点来说,SDP的安全性确实更高。
隐身技术2:基于云的IP隐身
SDP可以做到端口隐藏,但IP还是需要对外映射的。不然好人也访问不到了。
有没有不用映射IP就能实现远程访问的技术呢?有!很多基于云的零信任产品会带有这种技术。
1、云隐身的原理
这种技术的架构如图,包括三个部分:客户端、云端、连接器。
(1)连接器先主动跟云端建立隧道
(2)客户端的流量先发到云端,再沿隧道的回路,转发到连接器
(3)最后连接器再把流量转发给内网服务器
云端相当于SDP的网关。连接器起到连接内网和云端的作用。
这种架构下,企业不用给连接器映射IP和端口。连接器能上网就行。企业内网只有向外的连接,没有向内的连接。这样,坏人就彻底进不来了。
为什么连接器不需要对外映射IP和端口呢?
因为连接器是主动向外建立隧道,连接器本身不对外提供服务。云端跟连接器通信,是沿着隧道的回路来进行通信的。
如果想不明白的话,可以想想我们平时在家上网的场景。家里电脑是不对外映射IP和端口的,网站怎么把信息发给电脑呢?电脑主动向网站发起连接,网站是顺着连接的回路把网页发下来的。
2、云隐身的好处
企业不用暴露IP和端口有很多好处。
(1)首先就是不用备案了。
(2)而且,各种DDoS攻击和漏洞扫描都不可能了。扫描工具里要填写目标IP。企业什么IP都不暴露的话,坏人别说扫端口了,IP都不知道怎么填。
这样,企业网络就相当于彻底隐身了,耶!
3、云隐身的缺陷
这种模式又省心又安全,看似完美。但其实是有个风险点的。风险点就是云端自身的安全。云端还是要对外映射IP的。
这种模式本质上是把风险转嫁了,转嫁给云端了。
4、云+SDP的结合
如果要保护云端的话,可以考虑把SDP融入进来。云端装一个SDP的网关。云还是暴露IP,但是不暴露端口。
这样,总共两层防护,第一层是SDP隐藏端口,第二层是连接器不暴露IP。整体的安全性就比较完美了。
隐身技术3:无端模式
SDP+连接器的方式在安全性上是很好的,但是在便捷性上有一个缺点——需要用户安装一个客户端。因为敲门是一个特殊的流程,有客户端才能执行。电脑上默认浏览器没法执行。
有端的话就难推广。一般终端的产品是比较难运维的,用户很排斥往自己的电脑上装各种乱七八糟的东西。
能不能没有端?能。
我看到过一个国外网友给自己公司DIY了一套无端的隐身方案。
1、无端模式的架构
(1)用户先登录SSO(单点登录)系统
(2)SSO通知防火墙添加一条规则——允许来自用户IP的流量(规则标签里加上创建时间)
(3)后台有一个回收程序,定期去检查所有防火墙规则,对比创建时间,发现已经过了10分钟,就立即清除该规则。
2、无端模式的优缺点
这种方案也能实现隐身的效果。用户登录SSO之前,防火墙是关闭的。业务系统在互联网完全扫不到。
这种方案相当于把敲门的逻辑放到SSO系统里去执行了。好处是用户不用安装客户端,但是代价是企业的SSO系统是暴露在外的。
所以,从这个角度看,体验上来了,但是安全性下去了。
总结
上面介绍了三种隐身技术,各有利弊,各有适合的场景。三种技术还可以两两组合,产生更佳效果。
隐身技术企业带来的价值也非常大。有隐身之后可以避免掉绝大多数的网络攻击、渗透测试。尤其是比较大的公司,内部几百个系统,一个一个搞安全建设太累了,不如在统一入口上直接隐身,简单有效。