安全架构1--关于甲方安全体系建设历程的思考
本文是关于甲方安全体系建设历程的思考,分为三部分:
一、安全体系建设v1.0–快速治理
二、安全体系建设v2.0–系统化建设
三、安全体系建设v3.0–全面完善
同时,对于甲方安全体系建设,附属两篇实践博文:
甲方基础安全运营平台建设实践
SDL安全与企业办公安全落地实践
一、安全体系建设v1.0–快速治理
很多互联网公司的业务发展通常先于安全团队建设,在业务发展到一定规模、出现安全事故时才考虑在安全方面进行投入,但此时已经是企业信息安全环境状况很差的时候,安全作为业务的基本属性,已经严重滞后于业务的快速发展。
此时可能出现的安全问题有:企业内网出现众多弱口令和未打安全补丁的系统,线上业务有大量常见的安全漏洞,员工安全意识薄弱,数据泄露严重……
对于这时候的企业所面临的安全风险,需要救火式的快速切入解决,先从容易的、成本小的、效果明显的地方入手。
1.1 选择合适的安全负责人
安全团队早期一般为1-3人,因此,安全负责人知识面的广度就极为重要。负责人应当熟悉安全技术和安全运营,以及安全管理和安全合规。安全负责人需要带领安全团队开展包括安全研发(基于开源二次开发)、渗透测试、安全加固、应急响应、安全审计、安全培训、安全合规、安全管理、安全运营等工作。
1.2 识别主要的安全风险
快速治理阶段的主要目标是利用20%的资源解决80%的安全风险,所以第一步是识别主要的安全风险。互联网公司的特点是业务技术以 web 和移动应用 APP 为主(有的还涉及到桌面软件、云服务、IoT硬件等),业务迭代快,人员变动较大,公司管理较为松散。互联网企业的安全风险大多来自线上业务,同时企业内部也随时面临风险。
在线业务
在线业务的风险主要包括
web安全风险
、业务自身的安全风险
、移动应用安全风险
。企业内部
来自企业内部的安全风险主要包括
员工的安全风险
、口令的安全风险
、钓鱼攻击和社会工程学的安全风险
、安全合规风险
。
除了这些安全风险,还有很多其他的安全风险,例如业务中的DDoS,未打安全补丁的设备和工具,包括路由器、打印机、个人电脑、BYOD设备(自带设备)等。
1.3 实施快速消减
以两手都要抓,两手都要硬的原则,一手抓安全技术和安全运营,一手抓安全管理和安全合规。双管齐下快速消减安全问题。
解决web安全风险可采取的处理方式按优先级排序依次为:
- 全站清理 webshell 后门,购买或采用开源WAF快速解决常见web安全问题;
- 使用动态应用安全测试、静态应用安全测试、交互式应用安全测试产品,对web业务进行黑盒扫描、白盒扫描和人工渗透测试,解决线上主要漏洞;
- 部署RASP(运行时应用自保护)时应当使用自保护产品对web进行自免疫保护,比如使用Prevoty、OpenRASP等;
- 提供安全代码过滤库和安全编码培训,提升代码等安全质量。
解决来自业务的安全风险可采取的处理方式按优先级排序依次为:
- 初期针对业务特点,选择合适的第三方风控安全产品;
- 人员到位后,可以从接入层(查询引擎、规则引擎、模型引擎)、处理层、数据层这三方面构建自有的安全风控平台。
解决移动应用安全风险可采取的处理方式按优先级排序依次为:
- 采用商业方案(免费/付费)对APP进行漏洞扫描和安全加固来解决常见的安全问题;
- 安全团队中熟悉移动应用安全技术的成员对移动应用进行深入的人工安全测试;
- 提供基础移动安全组件和安全编码培训、安全编码规范。
解决来自员工的安全风险可采取的处理方式按优先级排序依次为:
- 部署可统一管理的EDR安全产品,在生产环境中统一使用堡垒机进行远程审计管理,采用数据库管理系统审计进行数据库访问;
- 员工入职时进行安全培训,在入职前对重点员工进行背景调查,制定员工信息安全行为规范并进行考试,在员工离职时需要告知其安全须知,并进行安全审计;
- 对企业重点业务团队建立隔离受控网络,统一访问互联网的代理服务器,确保包括HTTPS在内的网络流量可审计;
- 建立基于机器学习的用户异常行为发现系统,如 Splunk 产品中的UEBA模块。
解决口令安全风险可采取的处理方式按优先级排序依次为:
- 通过弱口令扫描器(Hydra/Medusa)检测公司员工账号和内网(SSH、MySQL、RDP、web后台等)所有涉及密码的系统服务,并责令修改密码以快速解决弱口令隐患;
- 建设基于OpenLDAP的统一单点登录系统,并使用基于TOTP方案的动态口令双因素认证或RSA Key,若使用Wi-Fi技术,则可以通过Radius协议实现双因素认证;
- 建立更加严格的基于Fido U2F认证协议的实体安全密钥登录系统和BeyondCorp账户安全体系。
解决来自钓鱼攻击和社会工程学的安全风险可采取的处理方式按优先级排序依次为:
- 对员工进行相关安全意识培训,并不定期组织相关演练测试以验证培训效果,加强办公场地物理安全管控,避免使用第三方通信软件建立工作群;
- 强化对钓鱼攻击和利用社会工程学进行攻击的技术监控(如终端安全监控),若要查看高风险文件则可利用沙箱技术进行隔离访问,对于浏览网页的高风险操作可以使用远程安全浏览产品;
- 加强 BYOD 设备的安全管理。
解决安全合规认证可采取的处理方式按优先级排序依次为:
- 阅读官方安全合规文档,了解安全合规需求;
- 列出安全合规需要的文档清单,撰写安全合规文档;
- 判断哪些要求公司已经做到了,哪些还没做到,对于没有做到的制定实施计划方案;
- 以外规对内规,内规对检查,检查对整改,整改对考核的原则,推进落地;
- 通过合规认证,拿到合规证书。
二、安全体系建设v2.0–系统化建设
经过第一阶段救火式的快速治理后,企业中存在的大部分隐患基本被解除,所以第二阶段可以系统的完善企业安全架构,将“安全融于体系”的安全理念落地。
2.1 依据 ISMS 建立安全管理体系
ISMS 具体是由 ISO 27001-ISO 27013 系列标准组成的,其中尤其以ISO 27001最为业界熟知。ISO 27001主要规定了信息安全管理体系的要求,主要是对一些概念的介绍和概述,一般用于认证。ISO 27002 是对应ISO 27001的详细实践,该标准涉及14个领域,113个控制措施。
ISMS提供了一个大而全的指导性要求框架,其可以为互联网企业安全团队带来的帮助有:
- 提供了一个全面的安全视图,避免安全覆盖面不足带来的死角;
- 可以给高管一个可交代的信息安全实施依据,方便安全策略的推行;
- 获取ISO 27001认证后,可以提高公司知名度与信任度,使客户对企业充满信心。
ISMS是具体依据PDCA循环原则建立:
P即Plan(计划)
。制定与风险管理和信息安全改进相关的政策、ISMS目标、流程和程序,以提供符合组织全球政策和目标的结果;D即Do(实施)
。实施和利用ISMS政策对流程和程序进行控制;C即Check(检查)
。在检查过程中对流程进行相应的评估,并在适当的情况下根据政策、目标和实践经验衡量流程的绩效,之后将结果报告给管理层进行审核。A即Act(行动)
。根据ISMS内部审核和管理评审的结果或其他相关信息,采取纠正和预防措施,不断改进上述系统。
安全管理体系具体可以依照ISO 27001的14个控制领域开展
,通过对ISMS提供对检查表格,一项一项完成相应的模块并打钩,等勾选的差不多了,安全管理体系自然也就建立好了。
安全管理类对工作虽然繁杂,但万变不离其宗,要先把合规要求和规章制度等规则吃透,然后发现本企业在执行方面的风险和短板,最后完成整改和化解风险。
2.2 基于 BSIMM 构建安全工程的能力
1、BSIMM 介绍
BSIMM 是衡量软件是否安全的标尺,可以通过 BSIMM 标准来实施自身安全开发建设,BSIMM 具体由三大部分组成:
- 软件安全框架(SSF):支撑 BSIMM 的基础结构由划分为4个领域的12项实践模块组成;
- 软件安全小组(SSG):负责实施和推动软件安全工作的内部工作小组;
- 软件安全计划(SSI):一项涵盖整个组织机构的项目,用于以协调一致的方式来灌输、评估、管理并演进软件安全活动。
软件安全框架的4个领域12项实践模块:
治理 | 情报 | SSDL触点 | 部署 |
---|---|---|---|
战略和指标(SM) | 攻击模型(TM) | 架构分析(AA) | 渗透测试(PT) |
合规性和政策(CP) | 安全功能和设计(SFD) | 代码审计(CR) | 软件环境(SE) |
培训(T) | 标准和要求(SR) | 安全测试(ST) | 配置和安全漏洞管理(CMVM) |
治理:
用于协助组织、管理和评估软件安全计划的实践,人员培养也属于治理领域的核心实践。情报:
用于在企业中汇集企业知识以开展软件安全活动的实践,前瞻性的安全指导和威胁建模都属于该领域。SSDL触点:
分析和保障与特定软件开发工作及流程相关的实践。部署:
与传统的网络安全及软件维护组织机构打交道的实践,软件配置、维护和其他环境问题对软件安全有直接影响。
2、安全工程能力建设中常见问题的解决办法
问题1:业务上线时间紧、压力大,安全漏洞修复占用时间过多而影响业务上线进度
为避免安全工作成为开发瓶颈,安全测试技术应尽量和现有系统相结合。比如,
- 在IDE上直接集成SpotBugs插件,开发人员在编译时就能被提示要修改漏洞代码;
- 在管理第三方组件漏洞时将BlackDuck与Maven仓库相结合,业务人员不需要介入就可以解决Java库的安全问题;
- 在提交代码到GitLab时,加入Gitrob自动扫描密钥、密码等敏感信息泄露问题;
- 将Facebook Infer集成在CI平台(如Jenkins)上,形成扫描集群以自动检测代码漏洞,并编写Python脚本将漏洞信息发到JIRA上提醒研发人员修复,跟踪漏洞修复进度。
问题2:安全漏洞方面的误报太多
任何自动化安全测试系统在刚上线时都可能存在误报问题,针对这类问题可以设计误报反馈功能,成立专职安全小组提供安全技术支持,并使其参与到不断优化检测规则的工作中来,经过几轮迭代之后基本都可以解决误报问题。
问题3:公司对员工工作无量化指标,部分研发团队成员的责任心不够,对于漏洞修复持无所谓态度,从而留下大量安全隐患
建立漏洞修复相关的流程制度,将代码质量与KPI挂钩,对因违反流程制度而造成安全隐患的员工按出现的漏洞等级进行处罚。结合质量保障团队定期发送项目质量报告,最终将安全漏洞数据汇总到代码质量管理平台。将漏洞修复放入KPI指标,以促进开发人员修复安全漏洞的积极性。
问题4:安全方案和要求通常会阻碍业务发展
安全团队在设计安全方案和要求时,不应该以安全团队省时省事、少承担责任为出发点,这样会阻碍业务发展、降低效率。一套安全方案和要求,应当是能够在降低甚至不降低业务发展的情况下还能保障安全,这样的方案和要求才能受到业务团队和开发运维团队的欢迎。
3、构建普适的安全技术架构
网络层: 在NTA网络流量分析方面有AOL开源的
Moloch
和redborder
等,在欺骗防御方面有Thinkst的OpenCanary
和Canarytokens
主机层: 开源产品有Facebook的
Osquery
应用层: 开源产品有百度的
OpenRASP
身份和访问权限管理: 开源的产品有
gluu
数据安全与隐私: 细粒度权限管理的开源产品有
Apache Ranger
,大数据安全与性能分析的开源产品有Apache Eagle
,开源的密钥管理系统有Vault
安全运营: 开源的产品有Mozilla开源的SIEM平台
MozDef
三、安全体系建设v3.0–全面完善
经过第二阶段的系统安全建设后,企业已经基本形成了完整的安全体系,因此,第三阶段的安全体系建设工作主要是对其进行全面完善。
3.1 强化安全文化建设
如何建设企业安全文化?安全应该纳入企业的价值观中与业绩一起考核。如果企业文化是贴在墙上的,也不知道怎么考核,那么企业文化所起到的作用就不大。只有建立好企业安全文化,公司才不至于因人员变动而导致安全价值观逐渐稀释。
3.2 完善安全韧性架构
安全韧性架构主要实现4中能力:
- 预料能力,保持对入侵的知情准备状态;
- 承受能力,即使被入侵仍然可以继续执行基本任务或业务职能;
- 恢复能力,在入侵期间和之后恢复任务或业务功能;
- 适应能力,修改任务或业务功能的支持能力,以预测技术、运营、威胁环境中的变化。