游族马寅龙:常见信息安全风险及应对方案
前言
安全,长期以来是企业最容易忽视的关键点之一。安全问题发生前,存在感低;然而发生以后,损失却已经难以挽回。
为给大家提供相关的经验及参考,「声网开发者创业讲堂 • 第四期丨创业团队如何保障产品业务的安全合规?」活动特别邀请游族网络信息化中心总监马寅龙,以「常见信息安全风险及应对方案」为题进行分享。
马寅龙是游族网络信息化与信息安全负责人,拥有 12 年信息安全管理建设经验,主导构建了游族网络信息安全纵深防护体系,曾作为嘉宾在 CIS / EISS / FIT / SSC 等国内顶级安全峰会演讲。
01 企业安全的核心是服务不断、数据不丢
1、加密勒索
说到信息安全,大家可能想到的是 DDoS、丢数据等,其实在企业中做安全,核心就是两句话,这是以前某银行分管科技的副行长说的,就是**“服务不断,数据不丢”。**
比如我们现在说的勒索,1 可能代表服务挂了,2 可能代表数据没了,所以用这两句话去套各种各样的事件,你会发现所有的事情归根到底要解决的问题就是服务不断和数据不丢,我们将其称为可用性和保密性。
加密勒索为什么特别频繁呢?我觉得绝大多数初创企业都不具备被专业黑客组织盯上并进行长期潜伏和攻击的价值。但是勒索的成本非常低,可复制性非常强,因此可以采取广撒网、多捞鱼的逻辑。
我上半年就收到两个朋友的咨询,询问被勒索了该怎么办,了解情况以后发现攻击者的手法都非常传统、简单。勒索软件的传播途径有很多,比如 2017 年爆出永恒之蓝,至今仍有很多勒索在利用这个漏洞。
绝大多数公司在初创的时候对服务开启和管理员权限是没有控制的,这样的情况会导致,一旦一台机器失陷,可能连累大片服务受影响,因为很多勒索软件都是通过漏洞利用在内网进行自动化传播的。
1)勒索软件的攻击面
勒索进入的地方其实主要常见的是盗版、破解软件。我认为只要付费软件有破解版、破解补丁、注册机等,那么十有八九是有问题的,用户虽然换得了免费的使用权,但是天下没有免费的午餐,所以其中很可能藏着一些安全隐患,会导致加密勒索、挖矿等问题。
其实加密勒索和挖矿的逻辑是一样的,都是通过提供用户所需的内容,进入其电脑获取相应的权限,再做后续处理。其中挖矿更加普遍,但伤害性相对较低,也容易发现,因为它涉及网络流量的通信,可以通过一些旁路的流量探测手段来发现。
而勒索的伤害性比较大,它的传播途径除了刚才我们说的针对个人 PC,还有运维平台或批量密码的泄露、云助手 Access Key。比如大家做运维管理可能都会用到的宝塔之类的管理工具,如果这些管理工具是直接按照初始化配置方式搭建的,或者本身的版本比较低,就可能会存在漏洞。这些漏洞如果暴露在公网上,就会被自动化的攻击盯上。
我这里还要提一点,绝大多数的初创企业其实并不会面临非常高级的攻击,黑客往往都是通过扫描进行批量化处理。
2)勒索软件的应对措施
• 数据备份和定期恢复测试
应对勒索最有效的办法是数据备份,不过,在很多情况下我们只注重备份,但是为了逻辑闭环,最好也做做恢复测试,保证数据备份之后可用。备份有很多种方式,比如虚机整体备份、镜像或者数据库备份、文件备份等,选择依据是看侧重点是什么。
另外,还要做好备份机器的访问控制,比如一台主服务器的数据被加密,如果备份机器的访问控制逻辑与这台主服务器是一样的,并且数据也加密了,那么备份就没有非常大的意义了。所以如果要以最小化投入成本的方式来预防加密勒索风险,我们就需要花费时间来搭建整个备份系统,并且收紧访问控制。
• 终端标准化和封禁高危端口
勒索病毒的传播,往往需要利用漏洞或者一些基础网络条件,所以我们也可以从终端标准化、网络端口封禁的角度来考虑风险处置。不过,终端标准化需要企业具备一定的管理能力,网上有标准的安全基线,比如是否及时给 Windows 打补丁、服务器的系统版本是不是最新的、内网的终端是否经过标准化处理等。高危端口的封禁,是指勒索病毒传播最常利用的 445 等高危的端口是否有用,如果没用,就要进行封禁。
• 访问控制收口 - 权限最小化处理
在大型企业中其实这一点是比较治本的,而且它具备一定的管理逻辑。但是对于很多小企业来说,其实权限最小化反而很容易,在资产相对比较少的情况下,大家只需要记住一点,就是默认 deny,如果有需要,才打开权限,对某些服务只允许本地访问这样的基本访问控制策略就可以了。
• 最后一招
我们的很多企业主朋友中招之后来问有没有解密的办法,其实网上有一些文章和网站可以参考,如果已经公开密钥,有可能是解得开的,但概率极小。从加密本身的算法逻辑角度来说,如果受到加密勒索了,还能自己解开,这是挑战密码学理论基础的,所以没有密钥的人几乎是不可能解开的。那么有没有补救的办法呢?其实还有最后一招,可能可以尝试一下,不一定 100% 成功,在电商交易平台上搜索数据恢复之类的关键词试试看。
2、数据泄露
整个全世界的数据泄露安全的形势是极其严峻的,一个经常使用互联网的人在黑客或者社工库的眼中相当于是半裸奔的状态。如果你在经营一家公司,其中沉淀了大量的用户信息和数据,那么在什么样的情况下可能会被黑客攻击呢?
1)数据泄露的攻击面
• Web 渗透攻击
目前数据泄露的导火索最多的还是 Web 渗透攻击。比如打开一个网站,这个网站可能是用 Spring 搭建的一个 Web 服务,也有可能是用 PHP 写的框架,又或者是用 wordpress 这种快速建站工具搭建的。
如果我们只追求功能可用,往往就会存在很多安全漏洞,这些安全漏洞一方面可能是框架自带的,还有一些是开发人员因为本身的水平或者安全层面的经验不足,导致处理逻辑不完善。比如围绕账号管理的注册、登录、找回密码、重置密码的一系列逻辑,这一系列逻辑如果存在疏漏,就可能会导致信息泄露发生,黑客通过爆破、撞库方式都有可能获取这些信息。
• 互联网非授权
如果一些创业者做的是数据基础服务,那么其中就可能包含 Redis、Zookeeper、Kafka 等常用的技术组件。如果采用我们刚才说的网络配置,那么云服务器端口是要开放互联网访问还是本地访问?如果直接开放到公网上,同时又不设任何的认证授权保护,只有初始化设置,则会被全网扫描,从而导致数据泄露,还可能会遇到挖矿或者勒索这样的问题。
• 内网渗透
这是一些大企业经常会遇到的,比如钓鱼、破解软件、水坑等攻击方式。
其中钓鱼比较,俄乌战争当中也有大量使用钓鱼手法进行基础设施渗透的。水坑是指在某一个行业中往往会有一个社区,当有工具需求的时候,黑客会在这些社区发一些你可能非常想要的东西,比如 App 的某个开发工具特别好用,但这个工具是要付费的,此时黑客会做一个后门,然后放在某一个论坛中,你获取之后就会成为精准定位的一个目标人群。
• 邮件系统
推荐大家使用云上的商业化的邮件系统,不要自己本地搭建,因为本地搭建邮件系统可能会存在一些安全设置问题,如果设置不当,可能会出现安全隐患。攻击者围绕自建的邮件系统其实有一套非常成熟的打法,如果自建邮件系统被盯上,对抗强度会比较大。
以上提到的几种攻击方式中,Web 渗透攻击和互联网非授权对于 Pass 或者 SaaS 服务型公司来说是尤为重要的。我们经常看到的就是,如果将一些 SaaS 服务直接放到公网上,那么通过 Web 漏洞方式其实是非常容易将其攻陷下来的,并且利用的工具也基本上全都是自动化的。
2)数据泄漏的防护措施
数据泄露的防护方式其实真的是一个巨大的话题,在很多大公司中针对数据安全都有专门的岗位,甚至是专门的团队。但对于创业型或者初创型企业来说,关心的是以下几点。
• Web 漏洞
大家可能会问,怎么判断采用的工具是否合适呢?我给大家一个建议,如果你使用某一个开发框架,则可以在 GitHub、Google 或者百度上搜索框架版本和漏洞关键词,如果是比较严重的漏洞,一般都能够搜到,但是最新的版本相对来说安全性会好一点。
• 访问控制
对于访问控制我们要默认 deny,不要全部放到网上任意访问,而要有选择性地开放,进行持续维护。
• 加密保护
当信息需要被加密保护的时候,最好把加密算法和密钥的种子等写到代码中,因为通过二进制编译,它们相对来说是受保护的。然后在服务器或者数据库中存储加密后的信息,这样即使数据丢了其实也看不太到。
• 终端防护
盗版软件破解版中会留一些脏后门,如果小公司或者个人开发者安装了 360 或者其他杀毒软件,都会起到非常好的保护效果,至少保证非常流行的病毒、后门、木马是可以被查杀的。
• 其他
另外,当我们作为乙方跟一个比较大型的甲方谈合作的时候,他们可能会质疑你的数据安全保障能力,那么如何显得自己对数据安全有一定的认知和了解呢?有两个关键点,首先是敏感数据的动态流转和静态分布,以检测敏感数据、存储位置以及它的整体流向。如果对于这些都很清楚,说明我们对数据的控制是非常有把握的,对方就会对你的认知更有信心。
其次,当我们在一些比较大的企业中做数据保护的时候要保证一个逻辑,就是**“进不来、摸不着、看不懂、拿不走、跑不掉”**。“进不来”是对边界和访问控制的防护;“摸不着”是在应用层做访问控制,其实前两点都是做访问控制;“看不懂”是我们刚才讲的加密;“拿不走”是对权限的控制;“跑不掉”涉及完整的对抗和溯源的问题。
那么,如何“动动手”就能避免数据安全风险?其实很多人都会提这样的问题 —— 能不能直接通过一个产品就把问题全都解决了?我的答案是没有。我今天已经介绍了常见的风险及其解决手段,但这些并不是一个产品就可以解决的。
3、DDoS 等其他网络攻击
■图 2
对于 DDoS 等其他的网络攻击如图 2 所示,大家可能都知道,类似 DDoS 和 CC 这种攻击就是通过流堆积或者频繁发包将服务打挂。因为很多小型初创产品都是单体应用,没有负载均衡和监控,也不涉及峰值的访问控制等,这意味着如果我们被盯上了,就可能被 DDoS 攻击。
CC 攻击的逻辑是,正常的 API 的接口会接收输入,如果接收输入的处理逻辑非常复杂,就会消耗后端的计算资源,或者导致等待连接。在这种情况下,如果持续提供输入,但这些输入中又包含着非常巨大的计算工作量,就会把服务端的机器拖垮。
钓鱼邮件前面已经说过了,这里不再赘述。
第三个是 BadUSB,我们常见的 USB 都是 U 盘,但是在安全行业中大家有一个共识,就是只要能物理接触到一台电脑,基本上就能获得这台机器的权限。我的 U 盘明明有杀毒控制的保护,为什么还会有这种风险存在呢?
这里我们看到图 2 中左侧的 BadUSB,它看起来像是一个 U 盘,但实际上它可能只是一个可编程的逻辑电路,因为我们的 USB 接口不止能够识别 U 盘,还可以识别鼠标、键盘等,现在想象一下,这个 U 盘一样的东西插进来之后,被电脑识别成了一个键盘,它完全可以通过键盘操作的方式在你不知情的情况下载后门软件并编译执行。所以如果在路上捡到一个 U 盘,千万不要用。
其实不管是 BadUSB,还是钓鱼邮件,其实都是通过一些输入性的东西,让你在企业环境的内部使用。之前 Mac 上有一款非常好用的工具 Navicat,它就是一个数据库的查询管理工具,当时有一个苹果应用网站提供的免费版本中就被投毒了,影响范围非常大。大家可以想象一下,数据库管理工具中存着大量的数据库信息,后门把这些信息全都拖走对企业造成的影响是可想而知的。
1)如何通过标准化进行安全防护
那么我们做这些攻击的防护时能怎么办呢?我认为可以通过标准化建设,来把防护的短板尽可能的拉升,主要包括对服务端和客户终端的标准化。
• 服务端
服务端的标准化主要包括网络隔离、密码密钥管理、安全产品防护等。
首先,网络隔离在大企业中是必需的。因为互联网是环境是很复杂的,办公环境中的电脑其实和互联网的沟通是非常密切的,这意味着办公环境往往也是非常不安全的。如果做好了生产环境和办公环境之间的有效隔离,安全级别就会得到提升。
其次,一定要保护好密码和我们经常用的 key,尤其是做运维开发的朋友,请相信所有你们熟知的设置密码的方法都一定在常用密码库里。比如你的 SSH 密码设了 8 位或者十几位,但都是非常简单的组合,那么当你暴露在公网上时,一定会收到大量的 root 来连你的 IP 地址,经常就是使用密码字典去不断尝试,大家可以去看看自己的服务器是不是这个情况。
• 终端
在终端这一侧,同样包括网络隔离、密码保护、杀毒软件、数据备份等。如果有一些重要的东西一定不能丢或者一定不能被加密,就一定要做好备份。现在各种各样的云其实都非常方便,提供公有存储云的服务公司往往实力还是不错的。
总结一下攻击的链条,如图 3 所示,getshell 是指可以控制你的电脑并获利,比如挖矿、盗取数据以及破坏,其实归根结底就是服务不断,数据不丢。前面几个主要的动作主要是侦查手段和外部攻击。其实针对创业型企业来说主要是扫描类的外部攻击,内部攻击可能会少一些。之后是一批自动化操作,最终实现数据盗取或者破坏。
■图 3
02 基于风险评估和 ROI 的安全防护
1、安全防护策略最终将走向零信任
1)线上安全的演进路径
• 安全基线
如何选择安全产品呢?最开始的时候技术人员会研究安全基线,比如 DNS 服务器、跳板机,以及网络隔离的防火墙策略,这些我们称为安全基线。除此之外还有就是补丁一定要打得及时,使用最新版本的框架和服务相对来说安全性会好很多。因为网络上 99% 以上的攻击都是针对已知的漏洞进行批量的扫描,所以如果你使用的是最新版本,即使在边界上没有防护,问题也不是很大,除非你自己代码写了 SQL 注入或者远程命令执行这种漏洞,不做入参过滤直接把用户请求参数带进去执行这种。
• 边界安全
如果开始花钱买安全设备,除了需要做合规的公司,往往买的第一个产品都是 WAF,它就是刚才我们说的 web 边界防护。如果你自己的应用写得不好,其中的任意参数都可以被执行,那么 WAF 可以取出 web 的 post 请求中的流量,确认参数是不是带有攻击的特征,因为往往都是一些扫描器,如果这个扫描器的特征和它的输入参数特征命中了,WAF 是可以做拦截和防护的。所以往往我看到的稍微有规模的企业开始做安全的时候,基本上都是先有一个 WAF ,防火墙在网络侧基本上都会有的。
• 服务器安全
在逐渐深入后开始进行对抗的时候,就会加入主机入侵侦测系统,这个大家可以去看一些开源工具,这些工具比较笨重,而且对抗的能力相对来说比较弱,但是对于绝大多数的小企业来说已经不错了。
• 专项安全
但是当公司发展到几千人的规模并且数据又很重要的时候,可以考虑一些商业化产品,更大的公司会有专项的安全服务。我个人的建议是,如果你没有长时间的技术积累,一定要依赖商业产品,不要自己开发。这方面的人才很稀缺,而且稳定性不强。
• 安全大数据
安全建设走到后期,我们要做到一个完整的溯源闭环,就要依赖安全大数据。
2)办公环境安全的演进路径
对于办公环境,还是从安全基线梳理一下有哪些经常出现的问题。一般办公环境在安全建设的时候,都是从杀毒软件开始,接下来是网络准入、敏感数据防泄露,最后会走向零信任办公。零信任现在比较流行,谷歌提出 Beyond Corp 理念之后,国内都在往这个方向做,因为我们的网络边界在不断地被突破,所以这逐渐成为了一种必然,就是当我们不能信任办公环境的边界,同时有很多内部服务要放到互联网上时,零信任办公可能最终会成为我们的一个选择趋势。但是零信任办公的坑也非常多,所以大家要稍微谨慎一点。
2、从半个人的安全部到安全小团队建设
对于安全人员的选择和安全团队的建设,如图 4 所示。
■图 4
1)半个人的安全部
半个人的安全部是安全人员运维开发安全一把抓,在很多小企业中,最基础的线上环境的安全都是运维来兼管的,同时办公环境的安全可能是 IT 兼管的,也有一些不分环境,都是一个技术员负责。那么他们需要做什么呢?如果这个人的开发能力比较强,运维的知识也比较丰富,由于初创型企业的技术浓度往往还是足够的,所以只要稍微看几本概述性的安全书籍,把基础性的产品和安全基线搭建起来就可以了。我所看到的很多中小型企业,人员配备是足够的,但是安全做得非常差,原因是没有人关注这个问题,如果把刚才我们说的防火墙策略和安全基线都做好,很多问题其实是不会发生的。然后就是做好准备,不用多虑。为什么不用多虑呢?其实还是那句话,就是很多小企业面临的其实只有批量式扫描式危险,攻击和对抗程度不是很激烈,如果只是扫描,其实在边界上做基础的设置就可以应对了,更重要的是基线。
2)一个人的安全部
当我们有了一个人的安全部的时候,就要求安全人员一定要懂 Web 安全,因为你面临的最大风险就是通过 Web 应用渗透方式引发的。另外,还要掌握运维的知识,原因是这些问题往往需要开发和运维的同事一起处理,了解运维就会知道有哪些方式可以临时性地快速缓解问题,了解开发就可以知道应该如何修复漏洞。简单来说就是,默认 deny 加上开白名单的方式。如果使用黑名单方式 ,黑名单会不断地增加,这个规则会非常的多,也会有很多绕过的方式。另外,如果安全人员有两到三年的大厂经验,可能经受过相对较多的考验,那么其性价比往往是最高的。接下来就是汇报给运维线,原因是在很多公司中,安全发展到后期会成为一个级别相对来说比较高的,和运维持平甚至会比运维高半级的部门,但是这就会产生一种对立和冲突,所以最开始的时候如果只有一个人,那么汇报给运维是最舒服的,运维既要保证稳定性,同时也要保证安全性。最后是需要有管理方面的支持。
3)3-5 人安全小团队
一个人的安全部最难做的是需要跨团队协同的建设性的工作。我始终认为,一个人的安全部可以做很多事情,但是做不了什么大事,因为一个人的安全部,汇报级别比较低,能动用的资源也比较少,因此当我们要做一些建设性的工作的时候,意味着一个人的安全部可能要升级成一个小团队了,这个团队可能包含三个人,就是一攻一防,还有一个负责合规,其实很多公司都是合规驱动。团队负责人最好是技术出身,有管理意识,部门级别也要有所提升,这样才能够在更高的层次上驱动更多的资源来实现整个团队管理的升级。
03 总结
对于今天的内容做一下总结,就是最大的风险是勒索,做好数据备份。入口有两块,互联网服务和终端,互联网服务包括网络入口收紧,服务框架版本升级,密码保护好;终端包括杀毒,密码保护好,不要用破解软件。
关于「声网开发者创业讲堂」
当下是一个人人可创业的时代,对技术人来说,更是一个创业友好的时代。如果你懂技术,会比其他人更容易将自己的创业想法和梦想付诸实践。
但创业意味着要从 0 到 1,意味着要持续的创造和创新,意味着创业者和团队需要不断的成长和突破。只有这样才能打造出满足市场需求的、有价值的产品,逐渐形成企业的优势和壁垒,成长为一家成熟的企业。
声网关注有创新能力、开发能力和创业意向的开发者,并希望为开发者提供相应的支持和服务。为此,我们推出了「声网开发者创业讲堂」系列创业分享,以便为大家在成长和创业路上提供更多的帮助。
评论