攻防视角下,初创企业安全实战经验分享

前言

安全,长期以来是企业最容易忽视的关键点之一。安全问题发生前,存在感低;然而发生以后,损失却已经难以挽回。

「声网开发者创业讲堂 • 第四期丨创业团队如何保障产品业务的安全合规?」活动特别邀请白山云安全研发总监胡金涌,以「攻防视角下,初创企业安全实战经验分享」为题进行分享。

胡金涌拥有十年云安全产品研发经验,主持研发了 SCDN、抗 DDoS、云 WAF、SoC、零信任等安全产品,在攻防领域有丰富的经验。

本文从攻防的视角分享业务上线后可能遇到的常见攻击,并分享安全研发规范、上线前的安全巡检、上线后的安全防护等实战经验并给出一些安全建议。

本文基于胡金涌分享内容二次整理。关注公众号**「声网开发者」,回复关键词「JT0716」** 即可下载活动相关 PPT 资料。

目录

  1. 一些安全建设的误区

1.1 几个典型的安全误区

1.2 网络安全问题决定未来发展的天花板

1.3 安全建设的重要性和必要性

1.4 常见的安全威胁

  1. 业务防护方法和最佳实践

2.1 初创公司的安全建设

2.2 业务系统开发生命周期

2.3 防护方法和最佳实践

2.4 上线前的关注点

2.5 推荐使用云防护

2.6 如何进行云防护的产品选型

2.7 云防护 tips:我的源 IP 是如何暴露的?

2.8 上线后的关注点

  1. 初创企业的安全规范建设

3.1 初创公司的安全规范建设

3.2 布局零信任

1 一些安全建设的误区

1、几个典型的安全误区

图 1

首先给大家介绍一下安全建设常见的误区,如图 1 所示。

第一个误区是:大家普遍认为初创公司受到攻击的概率比较小,而安全总归是要花钱的,因此安全建设是不是能省就省,先放一边,保证项目上线。但其实黑客的攻击是没有差别的,攻击目标可能是大企业,也可能是小企业,所以我觉得初创企业一刚开始还是要有起码的安全建设意识。

第二个误区是:很多人认为只要安装了防火墙,并且买了安全服务,就可以高枕无忧了。这其实也是不对的,不管是防火墙,还是 WAF,或者其他的安全产品,其功能都是相对有限的,可能只针对一个点进行防护,但是安全建设是一个纵深范围非常深非常广的领域,单独依赖一两个安全产品,解决所有的安全问题可能也不是很现实。

第三个误区是:有企业认为行业没有损失就代表很安全,这其实也是不对的,可能有些攻击已经发生了,但我们都不知道,比如数据泄露、拖库等,这些安全隐患可能我们都没有感知到。

2、网络安全问题决定未来发展的天花板

其实因为不重视网络安全问题,很多知名企业受到重创。大家可能比较熟悉的 zoom 在美国上市,市值曾经也很高,但是曾经因为一些安全问题,导致股价下跌得比较厉害。Clubhouse 也是美国的一家公司,它在起初的发展是非常迅速的,但是也因为一些网络安全问题,导致后来的衰落。微盟也是因为内部的安全建设没有做好而出现了问题。

这可能不光是内部管理的规范问题,也是缺乏安全意识的问题。从某种程度上来说,网络安全问题可能就决定了未来发展的天花板。

3、安全建设的重要性和必要性

网络安全事件造成的影响是比较大的,特别是最近几年,国家对网络安全越来越重视,也发布了一系列的安全法规,明确了企业从业者的法律上责任,强调了安全建设的重要性跟必要性。很多公司重业务轻安全,可能起初没有问题,感觉安全好像无关紧要,当出现问题的时候,又感觉安全建设也没起到什么作用,但是这样的后果往往是比较惨重的。

所以初创企业一开始就要重视安全建设,虽然说安全建设是需要花钱的,但是起码可以先做一些高优先级的安全建设,建立安全基线。另外,《数据安全法》《个人信息保护法》《网络安全法》等政策法规,也明确了网络经营者要承担的责任,初创企业也是不例外的。

4、 常见的安全威胁

我今天主要是从两方面介绍常见的安全威胁,第一个是外部安全威胁,第二个就是内部安全威胁。外部安全威胁比较常见,比如 DDoS、CC 等,这些攻击其实在整个产业链中已经非常成熟了,从金主到接单的平台,整个链路是非常完整的,而且攻击成本非常低。因为现在网络越来越发达,很多设备的漏洞非常多,特别是物联网设备等,针对它们的攻击打法是比较多的,攻击面也比较广,破坏力非常强。但是防护就没那么容易,它存在严重的攻防不对等问题。

图 2

图 2 所示为一个网络平台,只需 100 块钱就可以打一个攻击,这类攻击的成本很低,是我们面临的常见威胁。Web 安全也是一种常见的安全威胁,比如搜索注入、XSS、远程命令执行等。我从一份 2017 年到 2021 年的知名报告中摘取了一些数据,如图 3 所示,可以看到整个攻击类型的变化和攻击的趋势。

图 3

第三种常见威胁就是 API 安全,其实现在基本上没有什么业务是不用 API 的,无论是 API 的数量,还是总体调用 API 的数量,都是越来越多的。所以 API 也会有很多的安全问题,比如水平越权、敏感数据暴露、代码漏洞、鉴权、配置错误以及业务逻辑缺陷等。第四种业务安全,比如我们在业务初期做活动推广的时候,就面临着薅羊毛的威胁,此外还有数据泄露、App 安全、主机安全、信息劫持、爬虫等。

2 业务防护方法和最佳实践

1、初创公司的安全建设

那么面对这些安全威胁,我们应该怎样防范呢?初创企业的安全建设与大公司的安全建设是非常不一样的,初创企业的各方面资源比较紧缺,不可能进行大规模的安全建设,但是仍要符合安全基线的要求。我主要从三个方向进行介绍。

首先,在进行开发的时候,我们要具备非常强的安全意识,对所有的外部输入都要做严格的校验,并且开发必须要规范,比如代码规范、发布规范、code review 规范。然后,在开发测试之后要做上线前的准备,此时要做安全防护的规划,针对工具类型进行相对应的安全规划。

不同的这个业务类型所面的攻击类型可能是不一样的,如果是游戏能力业务,那么遭遇 CC、DDoS 攻击的概率很高;如果是 App 业务,那么被逆向、被破解、被薅羊毛的概率就比较高。上线之前还要做安全巡检,比如是否存在弱密码、密钥有没有放到代码中等。最后,上线之后需要制定防护方案以及进行安全运营。

2、业务系统开发生命周期

从开发角度来说,整个的业务的开发周期从需求分析,然后到方案设计,再到开发、测试、上线、运营,其实每个环节都会涉及相应的安全的规范,具体如图 4 所示。

微信图片_20220803183243

图 4

比如在做需求分析阶段,可能要把安全因素考虑进来,做相关的需求分析调研;在方案设计阶段,要做相应的安全的设计,比如针对业务类型可能面临的攻击类型建模,对攻击面进行分析;开发阶段可能更重要的是开发规范;测试阶段可能要做相关的基安全基线的测试;上线阶段要做的是相关的安全检查、配置,以及相应的 checklist;上线运营阶段要对持续关注最新的安全漏洞,并作出相关漏洞的应对,这就是整个的这个业务开发周期。

微信图片_20220803183247

图 5

我们在开发阶段就要做很多的开发规范,如图 5 所示,数据库的访问规范、相关的文件操作,相关的代码规范、缓冲区、异常处理等都是我们要关注的。

图 6 所示为 CI/CD 的流程,我们在整个流程中都要引入相关的安全机制。

图 6

3、 防护方法和最佳实践

我结合实践梳理了安全防护的方法,主要包括程序代码安全、代码仓库安全、密码安全、通讯安全、日志安全、组件使用安全、App 安全、安全测试等。因为安全领域涉及范围非常广,所以这里面只介绍对初创企业来说比较容易落地的几点。

  1. 程序代码安全

程序代码安全是一个非常重要的环节,如图 8 所示,针对常见的 SQL 注入、XSS 漏洞、用户输入是否合法,我们都要做相应的校验,有时我们还要对输入长度、输入内容做转义等处理。另外,针对数据库相应的规范包括永远使用最低的权限操作数据库,机密信息存放不能放在程序代码中;针对特殊的场景也要做相关的处理、合理设置同源策略等都是我们在开发的时候要考虑到的。

  1. 代码仓库安全

对初创企业来说,可能各方面的流程制度不是很规范,会将代码和工作文档传到公网上,比如 GitHub、GitLab,这就没有遵循很好的开源规范。另外,将用户名、密码、token 等敏感信息直接写在代码中非常容易造成信息泄露,也是不好的习惯。

  1. 密码安全

密码安全是一个非常普遍的问题,程序面对暴力破解也要能做相应的防范,比如可以通过验证码或者双因子认证等机制来解决暴力破解问题。而且在整个的传输过程中要做加密链路,不允许使用弱密码。如果在开发过程中没有注意到这些问题,在上线之后可能会导致很大的风险。

  1. 通信安全

刚才也提到,所有的数据传输应该尽可能做到端到端的加密,尤其是互联网外部数据传输一定要做 https 的加密传输,这也是一个最基础的安全保障。推荐大家一定要做这样的安全措施。

  1. 日志安全

系统相关的所有访问都要保留痕迹,包括操作时间,操作人、IP、URL、访问内容等,我们都要做尽可能详细的记录。当然,其中可能也会考虑到企业自己的数据安全,有些信息是不记录的,这要满足相关的政策法规。记录数据的目的就是方便故障分析、安全事件的处理,甚至安全取证等。现在基本上对日志的要求是最低保存六个月,尤其是一些重要的日志数据。

  1. 组件安全

在开发的过程中会大量使用第三方的各种开源组件。前段时间 Log4j 的漏洞影响方非常广,因为它是一个非常基础的日志组件,很多应用都会用到这个组件,Redis、MySQL 技术组件的使用面是非常广的,使用这些技术组件时要注意哪些内容呢?

第一个就是重点关注公网的端口暴露,非必要不要暴露在公网上,保持最低可见的范围。第二个就是不要使用默认的端口,比如 Redis 6379、MySQL 3306,应尽可能使用非标的端口来降低攻击的风险(这里只能是降低,但是不可能完全避免,但这是一个很有效的举措)。对于内部的应用,比如 ES、grafana 等,我们也要做相应的权限控制。如果是做认证,那么认证密码也要满足一定的条件,尽可能不要使用弱密码。

  1. App 安全

很多初创企业都有自己的 App,对于它们来说,重要的密钥、token 等信息不能硬编码到 App 中。这样很容易被破解。同时,尽可能做加固,其实现在有很多商用的解决方案可以使用。App 在采集用户数据的时候也要保持最低的权限,而且要做好数据隐私,这部分其实也有很多相关的政策法规,国家现在对此的管控也非常严格。我们的 App 中还会大量使用第三方的 SDK,这些第三方 SDK 可能对我们不那么透明,因此也要关注第三方 SDK 的安全性。

  1. 安全测试

在整个安全开发过程中,我们还要做好安全测试。首先是威胁建模,基于项目或者产品面临的威胁类型,根据不同的业务,要做好威胁的建模,并梳理攻击面来针对性地引入相关的安全测试。

我们刚才提到整个开发过程中要注意的规范,那么上线之前我们应该做哪些事情呢?如图 8 所示,HTTPS 证书是最低的要求,但在使用 HTTPS 证书时我们要注意监控证书的有效期,证书是有有效期的,特别是这种免费的证书,有效期可能只有几个月。一旦证书过期了,业务可能就会中断。

此外,我们还要做安全检测,检查程序漏洞、Web 应用漏洞等。当然安全检测的覆盖范畴比较广,有很多的商用方案,但是可能会比较贵。其实我们也可以使用一些免费开源的漏扫工具,通过这些工具也可以帮助我们扫描一些比较明显的问题。其实我们也可以在内部使用扫描器来做定期的扫描,尽早发现以避免攻击造成更大的破坏。

4、上线前的关注点

上线之前我们还要做好安全防护规划,这可能要跟项目经理或者产品 owner 做好沟通,确定安全防护方案。做安全防护是要花时间的,要确认是否会对整个项目计划和里程碑造成延期,这都是需要跟相关的管理方提前做好沟通的。我们还要明确安全防护涉及的安全和隐私质量的最低可接收级别。这都是我们上线之前需要做的准备工作。

5、推荐使用云防护

防护安全威胁要做的事情是非常多的,对初创企业来说,可能没有很多的资源支持,也没有专业的安全人员做相应的实施,所以比较可行的方法就是使用云防护,那使用云防护有什么好处呢?

首先云防护用起来比较方便,基本上是即开即用的,只要在平台上买好安全服务,做好相应的配置,然后通过 DNS 引流的方式可以把流量直接接过来就可以。而且云防护一般是按需付费的,所以对初创的企业来说成本是非常容易控制的。

此外,除了做防护之外,云防护普遍还能提供加速,比如 WAF、SCDN,除了防护之外,还提供静态加速,降低回源带宽,提升访问速度。云防护的资源可以弹性扩展,这对初创公司也是非常友好的。

6、如何进行云防护的产品选型

但是在使用云防护的时候也要注意很多问题,其实我们的很多客户在使用的过程中体验并不好,这不是说我们的产品不好,而是没有用对,怎么样做安全产品的选型呢?其实现在各种各样的云防护产品非常多,做产品选型可能要注意以下几个方面。

第一个是产品能力,这是我们最看重的,要具备针对常见攻击的防控能力,还要看节点数量,因为节点数量越多,就能满足就近接入,从而有更好的网络速度。产品价格也是初创企业比较敏感的,要尽可能选价格比较弹性的产品。

第二个就是防护设置,安全产品尤其是云防护,虽然使用非常灵活,但是如果用不好,防护效果也不会好。所以我们在使用云防护的时候要设置好相关的策略,策略跟业务是强相关的,API 业务跟网站业务的访问策略是完全不一样的,很多 API 可能没有办法做人机校验,浏览器可能通过输入验证码的方式就可以。我们还要做业务特征的学习,云防护的能力是比较强的,但是如果事先根据业务特征的流量模型来做分析,可能防护效果更好。

而且在业务接入的初期,推荐先使用观察模式,这样可能它会记录下认为的攻击行为,但是这并不会阻断业务,防护模式就会相对比较严格。所以在开始上线的初期,我们还是要做好业务的观察,从而避免误防。然后在攻击的时候,我们也可以做相关的告警,这样我们就可以第一时间接收到攻击的发生。我们还要了解云厂商在极端攻击下的处置措施,虽然云厂商的防护能力很强,但毕竟也不是无限的,如果超出了防护能力会如何处理,我们要事先了解清楚。我们使用这个防护的时候还要做一些安全预案,做好安全的底线。

第三个是就是安全服务,业务面对攻击时需要云厂商及时做出反馈跟响应。现在大部分云厂商是采用工单的方式,我们也需要去了解具体的响应速度,有的是人工服务,人工服务也是有时间限制的,这都需要做一些了解。

第四个就是源站保护。如果我们使用云防护,但是源站暴露了,那么黑客完全可以绕过云防,直接攻击源站,所以这是在使用云防护时尤其要注意的一点,要做好安全巡检,确保源站不暴露。同时在防护过程中,我们要回源,做黑名单设置,只允许防护节点,这样可以最大程度地保证安全性。我们的云服务比较弹性,还要注意避免忽略服务到期,导致失去防护。这是使用云防护过程中的一些小细节。

7、云防护 tips:我的源 IP 是如何暴露的?

刚才我们提到了源站,其实很多初创企业因为没有太多的经验,导致虽然接入了云防护,但实际上并没有取到防护的效果,因为 IP 暴露了,黑客已经获取了 IP,即使更换 IP 他也能找到。实际上有非常多的途径能暴露 IP,比如过去可能没有接入云防护,后面虽然接入了,但是过去的 DNS 记录是直接指向源站的,而很多平台可以查到历史 DNS 解析记录。

所以如果 DNS 解析记录直接指向源站,就有暴露的风险。

第二种是子域名,这个也很普遍,现在有很多的子域名,包括静态域名、动态域名、API 域名可能是独立的域名,可能接入的是动态域名或者 API 域名,而静态域名可能还是指向源站的,这可能也会导致源站泄漏也有被攻击的风险。

第三种是有些网站做得不是很好,能直接展示或接口展示源站信息。第四种是使用的安全产品可能回源,这也会也会暴露 IP。

另外,邮箱 MX 记录、邮件服务、内部泄露、网络空间的搜索引擎也会导致源 IP 暴露,现在网络空间搜索引擎能力是其实非常强的,很多的业务资产都能检索到,可以通过关联分析找到源站。其实各种方法也是非常多的,所以我们在做业务开发或者上线的时候一定要多加去注意,避免源站被暴露。因为一旦源站暴露,云防护基本上就失去作用了。

8、上线后的关注点

刚才提到上线之前的开发和业务规划,那么上线之后我们要关注哪些指标呢?首先就是关注防护情况,如果发生攻击,我们要做数据分析。然后要进行安全巡检,有条件的话还可以做攻击应急和攻击演练。最后就是要关注安全圈,刚才提到很多软件项目会大量使用第三方组件,如果关注安全圈的信息,就可以及时了解安全漏洞情况,进而做及时的响应,修复漏洞。

3 初创企业的安全规范建设

前面介绍了面临外部威胁的防护,其实企业内部自身的安全建设也是非常重要的,接下来分享一下初创企业应该从哪些重点方向来建立安全基线。

1、初创公司的安全规范建设

图 7

初创公司的安全规范建设包括图 7 所示的几个方面。第一个是要做好安全培训,安全培训要从刚开始就在整个公司进行,要让大家建立安全意识,形成安全文化,具体来说包括行为安全、账密安全、安全意识和开发规范。

第二个是流程制度。流程制度可能跟安全没有直接的关系,但是也对安全有一定的影响。比如变更管理、权限管控、网络管理、设备管理、安全审计。第三个是数据安全,主要包括个人隐私、数据备份、数据脱敏。

2、布局零信任

传统的安全其实还是存在很多的问题,随着企业的转型,现在很难适应现阶段新的发展趋势。特别是远程办公,所以零信任很可能成为未来的新趋势。如果初创企业从一开始就布局零信任,基于零信任的最佳实践构建安全体系,其实是一件很好的事情。那么零信任的理念是什么呢?它的理念很简单,如图 8 所示,首先是身份的认证和授权。

图 8

其次,对所有资源访问的权限是动态的,要基于整体的上下文来做这样相关的动态权限控制。然后在分配访问权限的时候,遵循最低权限的原则,并且对于重要的应用还可以做多因素的身份认证。这是零信任的几个重要的理念。所以如果我们一开始就能布局零信任,比如建立一个统一的身份管理、统一的权限管理、统一的应用管控,遵循零信任的理念进行安全建设,我觉得是一个很好的开始。

布局零信任其实也有几个技巧,如图 10 所示。第一个是我们要以层为单位做整体性思考,因为零信任涉及的范围比较广,所以我们要遵循最佳实践,按照分层的方式做整体的考量。第二个是尽可能使用多因素认证,然后是做单点登录,就是前面提到的一个企业中可能有很多平台和各种各样的系统,如果能打通单点登录,就可以简化使用。

另外,因为零信任的原则是不信任任何人,不管员工是内部还是外部的,都要做相关的权限控制和身份认证,所以是没有内外部区分的。同时,实施零信任需要全公司自上而下的整个推动,所以高层也需要配合,全员参与过渡。

最后零信任中其实有一些重要的细节,传统安全过渡到零信任附加了很多的内容,整个防护理念完全不一样,在这个过程中要尽可能避免对工作效率的影响,实现平滑过渡。所以如果有条件的话,建议初创公司从一开始就去做零信任设计,这样可以解决一些很长远的问题。
(正文完)

推荐阅读
相关专栏
开源技术
106 文章
本专栏仅用于分享音视频相关的技术文章,与其他开发者和声网 研发团队交流、分享行业前沿技术、资讯。发帖前,请参考「社区发帖指南」,方便您更好的展示所发表的文章和内容。