网络空间安全技术丛书
点击查看第二章
点击查看第三章
Linux系统安全:纵深防御、安全扫描与入侵检测
胥峰 著
第1章 Linux系统安全概述
著名网站技术调查公司W3Techs(官方网站:https://w3techs.com )于2018年11月17日发布的调查报告中指出,Linux在网站服务器操作系统中使用比例高达37.2%。除了被广泛使用在网站平台上以外,Linux也常常被作为FTP服务器、电子邮件服务器、域名解析服务器和大数据分析服务器等而部署在互联网上。Linux作为互联网基础设施的一个重要组成部分,保障其安全的重要性不言而喻。虽然Linux是一款被大量部署的优秀的开源操作系统,但是这并不意味着不需要关注其安全性。在互联网上,有许许多多针对Linux系统的攻击。例如,中国国家计算机病毒应急处理中心(官方网站:http://www.cverc.org.cn )在《病毒预报 第七百六十九期》中指出:“通过对互联网的监测,发现了一款旨在感染Linux设备的加密货币挖矿恶意程序Linux.BtcMine.174。该恶意程序在不经过设备所有者同意的情况下使用CPU或GPU资源来进行隐蔽的加密货币挖掘操作。”
如果缺乏严密细致的防御措施、积极主动的安全扫描、行之有效的入侵检测系统、切实到位的安全管理制度和流程保障,那么Linux系统很容易被黑客入侵或利用,而保障业务和数据安全也将成为一句空话。
本章概览性地介绍信息安全和系统安全的概念、常见的威胁分析模型和保障安全的主要原则。对于从全局上把握Linux系统安全来说,这些知识是不可或缺的,它们是构建完整Linux系统安全体系的指南,引导着本书后续章节内容。
1.1 什么是安全
1500多年前,由从梵文译成汉文的《百喻经·愿为王剃须喻》中讲述了亲信救王的故事。故事中写道:“昔者有王,有一亲信,于军阵中,殁命救王,使得安全。”这里的安全指的就是“平安、不受威胁”。
同样,笔者认为,安全是指一种状态,在这种状态下,某种对象或者对象的某种属性是不受威胁的。例如,《中华人民共和国国家安全法》第二条对国家安全的定义是:“国家政权、主权、统一和领土完整、人民福祉、经济社会可持续发展和国家其他重大利益相对处于没有危险和不受内外威胁的状态,以及保障持续安全状态的能力。”《中华人民共和国网络安全法》第五条中指出,网络安全的目的之一就是“保护关键信息基础设施免受攻击、侵入、干扰和破坏”,也就是保护关键信息基础设施不受威胁。
1.1.1 什么是信息安全
对于什么是信息安全(Information Security),不同的组织和个人可能有不同的定义。
ISO/IEC、美国国家安全系统委员会和国际信息系统审计协会对信息安全的定义是被大部分信息安全从业人员所认可并支持的。《ISO/IEC 27001:2005 信息安全管理体系规范与使用指南》中对信息安全的定义是:“保护信息的机密性(Confidentiality)、完整性(Integrity)、可用性(Availability)及其他属性,如真实性、可确认性、不可否认性和可靠性。”
美国国家安全系统委员会(Committee on National Security Systems,CNSS)在《Committee on National Security Systems: CNSS Instruction No. 4009》对信息安全的定义是:“为了保障机密性、完整性和可用性而保护信息和信息系统,以防止未授权的访问、使用、泄露、中断、修改或者破坏。”
国际信息系统审计协会(Information Systems Audit and Control Association,ISACA)对信息安全的定义是:“在企业组织内,信息被保护,以防止被泄露给未授权用户(机密性)、防止非恰当的修改(完整性)、防止在需要的时候无法访问(可用性)。”
通过以上这3个定义我们可以看出,保障信息安全的最重要目的是保护信息的机密性、完整性和可用性这3个属性。
- 机密性:信息仅仅能够被已授权的个人、组织、系统和流程访问。例如,个人的银行账户交易流水和余额信息,除了账户持有人、经账户持有人授权的第三方组织、依相关法律法规规定有查询权限的组织以外,不应该被任何其他实体获取到。另外,商业组织的客户联系信息往往也具有较高的价值,也需要保护其机密性。在某些对安全要求较高的行业,甚至特别强调了对机密性的保障。例如,在《支付卡行业数据安全标准3.2.1版本(Payment Card Industry Data Security Standard, Version 3.2.1)》3.2.2条中明确指出,在授权完成后,不能在日志、数据库等位置存储信用卡验证码(CVV2、CVC2、CID、CAV2等)。这是一个强调信用卡验证码机密性的例子。
- 完整性:保护信息的一致性(Consistency)、准确性(Accuracy)和可信赖性(Trustworthiness)。例如,A公司向B公司提供的数据报告是通过电子邮件附件的形式来传输的,那么A公司就需要和B公司预先确定一种机制,来检查和确认B公司收到的电子邮件附件确实与A公司发送的一模一样,是未被在传输过程中篡改的。
- 可用性:当需要访问的时候,信息可以提供给合法授权用户访问。没有了可用性的保障,信息的价值就难以持续体现出来。
在学习信息安全的机密性、完整性和可用性这3个属性时,我们可以使用信息安全的C.I.A金三角帮助记忆,如图1-1所示。
在考虑信息安全的时候,必须把保障信息的机密性、完整性、可用性作为最重要目标,才能建立完善和有效的保护机制,避免顾此失彼。例如,华为公司2019年一号文《全面提升软件工程能力与实践,打造可信的高质量产品—致全体员工的一封信》(电邮讲话【2019】001号 签发人:任正非)指出:“公司已经明确,把网络安全和隐私保护作为公司的最高纲领。”其同时指出,“安全性(Security)”的要求就是“产品有良好的抗攻击能力,保护业务和数据的机密性、完整性和可用性”。
1.1.2 信息安全的木桶原理
一般来说,信息安全的攻击和防护是严重不对称的。相对来说,攻击成功很容易,防护成功却极为困难。信息安全水平的高低遵循木桶原理(Bucket effect),如图1-2所示。
如图1-2所示,虽然有多种多样的防护措施,但是信息安全水平的高低,却取决于防护最薄弱的环节。木桶原理体现了安全体系建设中对整体性原则的要求。整体性原则要求我们从宏观的、整体的角度出发,系统地建设信息安全体系,一方面,全面构架信息安全技术体系,覆盖从通信和网络安全、主机系统安全到数据和应用安全各个层面;另一方面,还要建立全面有效的安全管理体系和运行保障体系,使得安全技术体系发挥最佳的保障效果。
1.1.3 Linux系统安全与信息安全的关系
1.1.1节介绍了信息安全的概念,那么,本书的主题“Linux系统安全”与信息安全是什么关系呢?
首先,我们需要认识到,只有保障了Linux系统安全,才能保障依赖于其提供服务的信息安全。信息是有生命周期的,从其产生、收集、处理、传输、分析到销毁或者存档,每个阶段都可能有大量的设备、平台、应用介入。而为这些设备、平台、应用提供底层支持的,往往有大量的Linux系统(包括服务器和嵌入式设备等),其为信息的整个生命周期提供源源不断的动力支撑。
其次,我们也需要认识到,保障Linux系统安全是手段,保障信息安全是目的。如果一个Linux系统上没有存储任何有价值的信息,不生产或者传输有价值的信息,不处理和分析有价值的信息,那么这个系统也就失去了保护的价值。对Linux系统安全的关注,实际上是对真正有价值的信息的关注。
1.2 威胁分析模型
与安全相对应的是威胁。我们要保障安全,就需要了解威胁是什么。
1.2.1 STRIDE模型
微软的STRIDE模型是常用的威胁模型之一。STRIDE这6个字母分别代表身份欺骗(Spoofing identity)、篡改数据(Tampering with data)、否认性(Repudiation)、信息泄露(Information disclosure)、拒绝服务(Denial of service)、提权(Elevation of privilege)。
STRIDE模型针对的属性、定义和例子参考如表1-1所示。
在分析面对的威胁时,我们应该利用STRIDE模型来分门别类地总结和梳理,这样才能更完整清晰地整理出所有的潜在威胁,并制定出相应的解决方案。
1.2.2 常见的安全威胁来源
在实际的安全工作中,我们常见的信息安全所面对的威胁来自于多个方面,如图1-3所示。
- 地震、雷雨、失火、供电中断、网络通信故障和硬件故障都属于破坏物理安全的例子,它们直接破坏了信息的可用性,导致业务中断,无法继续向合法授权用户提供服务。
- 系统漏洞和Bug可能会同时破坏机密性、完整性和可用性。
-
内部人员威胁往往是很多组织在安全体系建设中未加以足够重视的部分,而事实表明,因内部人员误操作或者恶意利用职权而导致的信息泄露和破坏的案例不计其数。IBM调查报告中指出,在2015年,60%的攻击是由内部人员直接或者间接发起的。内部人员造成威胁的个人因素主要有:
- 出于贪婪或经济利益的需要。
- 因工作原因对公司和上级领导心怀不满。
- 即将跳槽到另一个组织。
- 希望取悦他人。
- 个人生活不如意而导致工作行为异常。
- 黑客渗透是显而易见的威胁,黑客们可能会利用系统漏洞和Bug进行攻击,也可能会辅助以社会工程(Social Engineering)的方式进行攻击。在渗透完成后,黑客往往通过在系统中植入木马后门(包括Rootkit等)的方式进行隐秘的长期控制。
- 病毒和蠕虫的散播让信息基础设施的资源被恶意利用,还可能导致信息的非法泄露和被恶意篡改。
- 计算机中的“应用逻辑炸弹”是指在特定逻辑条件满足时,实施破坏的计算机程序,该程序触发后可能造成计算机数据丢失、计算机不能从硬盘或者软盘引导,甚至会使整个系统瘫痪,或出现设备物理损坏的虚假现象。
- 实施拒绝服务(Denial of Service)攻击,包括其高级形式—分布式拒绝服务(Distributed Denial of Service,DDoS)攻击,黑客的目标是让信息系统无法正常工作提供服务,以达到其不可告人的目的(例如商业或者政治目的)。
- 社会工程(Social Engineering)是一种通过对受害者心理弱点、本能反应、好奇心、信任、贪婪等心理陷阱进行诸如欺骗、伤害等危害手段。社会工程攻击在近年来的一些网络入侵事件中起到了很大的作用,对企业信息安全有很大的威胁性。
1.3 安全的原则
通过大量的实践,我们总结出10个最关键且有效的安全原则,分别是纵深防御、运用PDCA模型、最小权限法则、白名单机制、安全地失败、避免通过隐藏来实现安全、入侵检测、不要信任基础设施、不要信任服务、交付时保持默认是安全的。
1.3.1 纵深防御
在安全领域,有一种最基本的假设:任何单一的安全措施都是不充分的,任何单一的安全措施都是可以绕过的。
试想一下,在一些谍战影片中,最核心的机密文件一般放在哪里?
最核心的机密文件不会放在别人能轻易接触到的地方,而是放在有重兵把守的深宅大院里面,房间的门会配置重重的铁锁,进入房间后还有保险柜,打开保险柜之后,会发现原来机密文件还是加密过的。在这样的场景中,守门的精兵强将、铁锁、保险柜都是防止机密文件被接触到的防御手段,加密是最后一道防御,防止机密文件万一被窃取后导致的信息泄露。这是典型的纵深防御的例子。
早在1998年,由美国国家安全局和国防部联合组织编写的《信息保障技术框架(Information Assurance Technical Framework,IATF)》出版。该书针对美国的“信息基础设施”防护,提出了“纵深防御策略”(该策略包括了网络与基础设施防御、区域边界防御、计算环境防御和支撑性基础设施等深度防御目标)。从此,信息安全领域的纵深防御的思想被广泛流传开来。
纵深防御(Defense in depth)也被称为“城堡方法(Castle Approach)”,是指在信息系统上实施多层的安全控制(防御)。实施纵深防御的目标是提供冗余的安全控制,也就是在一种控制措施失效或者被突破之后,可以用另外的安全控制来阻挡进一步的危害。换句话说,纵深防御的目标也就是增加攻击者被发现的几率和降低攻击者攻击成功的几率。
纵深防御的概念如图1-4所示。
为了保护核心数据,我们需要在多个层面进行控制和防御,一般来说包括物理安全防御(如服务器加锁、安保措施等)、网络安全防御(例如,使用防火墙过滤网络包等)、主机安全防御(例如,保障用户安全、软件包管理和文件系统防护等)、应用安全防御(例如,对Web应用防护等),以及对数据本身的保护(例如,对数据加密等)。如果没有纵深防御体系,就难以构建真正的系统安全体系。
1.3.2 运用PDCA模型
在实施了纵深防御策略以后,我们还需要不断地检查策略的有效性,细致分析其中潜在的问题,调查研究新的威胁,从而不断地改进和完善。
我们需要牢记的一句话是:“安全不是一劳永逸的,它不是一次性的静态过程,而是不断演进、循环发展的动态过程,它需要坚持不懈的持续经营。”因此,笔者认为,动态运营安全是一条需要持续贯彻的原则,而PDCA模型恰好能有效地辅助这种运营活动。《ISO/IEC 27001:2005 信息安全管理体系规范与使用指南》中也明确指出:“本国际标准采用了‘计划—执行—检查—改进’(PDCA)模型去构架全部信息安全管理体系(Information Security Management System,ISMS)流程。”
PDCA(Plan-Do-Check-Act,计划—执行—检查—改进)也被称为戴明环(Deming Cycle),是在管理科学中常用的迭代控制和持续改进的方法论。PDCA迭代循环所强调的持续改进也正是精益生产(Lean Production)的灵魂。
标准的PDCA循环改进流程如图1-5所示。
在安全领域实施PDCA的方法和步骤如下:
-
计划阶段的任务如下。
- 梳理资产:遗忘的资产往往会成为入侵的目标,也往往导致难以在短时间内发现入侵行为。对资产“看得全,理得清,查得到”已经成为企业在日常安全建设中首先需要解决的问题。同时,在发生安全事件时,全面及时的资产数据支持也将大大缩短排查问题的时间周期,减少企业损失。资产梳理的方法包括使用配置管理数据库(Configuration Management Database,CMDB)、网段扫描、网络流量分析、对相关人员(如业务方、运营方、开发方、运维方)进行访谈等。需要梳理的对象包括,服务器IP地址信息(公网、内网)、域名信息、管理平台和系统地址、网络设备IP地址信息及与这些资产相关的被授权人信息。
- 制定安全策略:安全策略既包括安全技术策略,也包括安全管理策略,实现“两手抓,两手都要硬”。安全技术策略包括安全工具和系统、平台,如果没有它们的辅助,那么就没有办法阻止恶意入侵。安全管理策略包括制度和流程,如果没有它们发挥强有力的作用,那么就会使得安全技术策略的效力大打折扣。
- 制定安全策略的实施方案:在这个阶段,需要制定具体的安全策略实施方法、实施负责人、实施步骤、实施周期。
- 制定安全策略的验证方案:制定验证方案的目的是在检查阶段能够以此为基准检查确认安全策略的有效性。
- 在执行阶段的任务是实施计划阶段制定的方案。这个阶段的工作包括物理防护、网络防护、主机防护、应用防护和数据防护,以及安全管理制度的实施。
- 在检查阶段的任务是按照计划阶段制定的验证方案验证安全策略的有效性,从而确认安全策略的效果。这个阶段的工作包括自我检查、漏洞扫描、网络扫描、应用扫描、渗透测试等,也包括安全管理制度实施效果的检查。这一阶段的成果是下一阶段的输入。
- 在改进阶段的任务是以检查阶段的输出为指导,完善安全策略,进入下一个升级迭代。
1.3.3 最小权限法则
最小权限法则(Principle of Least Privilege,PoLP)是指仅仅给予人员、程序、系统最小化的、恰恰能完成其功能的权限。
在系统运维工作中,最小化权限法则应用的一些例子包括:
- 服务器网络访问权限控制。例如,某些后端服务器不需要被外部访问,那么在部署时,就不需要给予其公网IP地址。这些服务器包括MySQL、Redis、Memcached,以及内网API服务器等。
- 使用普通用户运行应用程序。例如,在Linux环境中,监听端口在1024以上的应用程序,除有特殊权限需求以外,都应该使用普通用户(非root用户)来运行。在这种情况下,可以有效地降低应用程序漏洞带来的风险。
- 为程序设置Chroot环境。在经过Chroot之后,程序所能读取和写入的目录和文件将不再是旧系统根下的而是新根下(即被指定的新位置)的目录结构和文件。这样,即使在最糟糕的情况下发生了入侵事件,也可以阻止黑客访问系统的其他目录和文件。
- 数据库访问控制。例如,针对报表系统对MySQL数据库的访问控制,一般情况下,授予SELECT权限即可,而不应该给予ALL的权限。
在运维和运营过程中,未遵循最小权限法则将会对系统安全造成极其严重的威胁。例如,根据The Hacker News网站报道,75%运行在公网上、未使用认证的Redis服务器被黑客入侵过。造成该严重安全问题的重要原因之一就是,未遵循最小权限法则来限制Redis服务器其对外服务和使用较低权限的用户启动Redis服务。
1.3.4 白名单机制
白名单机制(Whitelisting)明确定义什么是被允许的,而拒绝所有其他情况。
白名单机制和黑名单机制(Blacklisting)相对,后者明确定义了什么是不被允许的,而允许所有其他情况。单纯使用黑名单机制的显而易见的缺陷是,在很多情况下,我们无法穷尽所有可能的威胁;另外,单纯使用黑名单机制,也可能会给黑客通过各种变形而绕过的机会。使用白名单机制的好处是,那些未被预期到的新的威胁也是被阻止的。例如,在设置防火墙规则时,最佳实践是在规则最后设置成拒绝所有其他连接而不是允许所有其他连接。本书第2章中就使用了这一原则来进行网络防护。
1.3.5 安全地失败
安全地失败(Fail Safely)是指安全地处理错误。安全地处理错误是安全编程的一个重要方面。
在程序设计时,要确保安全控制模块在发生异常时遵循了禁止操作的处理逻辑。以代码清单1-1为例。
如果codeWhichMayFail()出现了异常,那么用户默认就是管理员角色了,这显然导致了一个非常严重的安全风险。
修复这个问题的处理方式很简单,如代码清单1-2所示。
在代码清单1-2中,默认用户不是管理员角色,那么即使codeWhichMayFail()出现了异常也不会导致用户变成管理员角色。这样就更加安全了。
1.3.6 避免通过隐藏来实现安全
通过隐藏来实现安全(Security by obscurity)是指通过试图对外部隐藏一些信息来实现安全。举个生活中的例子。把贵重物品放在车里,然后给它盖上一个报纸,我们就认为它无比安全了。这就大错特错了。
同样,在信息安全领域,通过隐藏来实现安全也是不可取的。例如,我们把Redis监听端口从TCP 6379改成了TCP 6380,但依然放在公网上提供服务,这样并不会明显提高Redis的安全性。又例如,我们把WordPress的版本号隐藏掉就认为WordPress安全了,这也是极其错误的。当前互联网的高速连接速度和强大的扫描工具已经让试图通过隐藏来实现安全变得越来越不可能了。
1.3.7 入侵检测
在入侵发生后,如果没有有效的入侵检测系统(Intrusion Detection System,IDS)的支持,我们的系统可能会长时间被黑客利用而无法察觉,从而导致业务长期受到威胁。例如,在2018年9月,某知名国际酒店集团被曝出发现约5亿名预定客户信息发生泄露,但经过严密审查发现,其实自2014年以来,该集团数据库就已经持续地遭到了未授权的访问。该事件充分证明了建设有效入侵检测系统的必要性和急迫性。
按照部署的位置,入侵检测系统一般可以分为网络入侵检测系统和主机入侵检测系统。
网络入侵检测系统部署在网络边界,分析网络流量,识别出入侵行为。
主机入侵检测系统部署在服务器上,通过分析文件完整性、网络连接活动、进程行为、日志字符串匹配、文件特征等,识别出是否正在发生入侵行为,或者判断出是否已经发生入侵行为。
本书第11~13章将详细介绍入侵检测相关技术和实践。
1.3.8 不要信任基础设施
在信息安全领域有一种误解,那就是“我使用了主流的基础设施,例如网站服务器、数据库服务器、缓存服务器,因此我不需要额外防护我的应用了。我完全依赖于这些基础设施提供的安全措施。”
虽然主流的信息基础设施在设计和实现时会把安全放在重要的位置,但是如果没有健壮的验证机制和安全控制措施,这些应用反而会成为基础设施中显而易见的攻击点,使得黑客通过应用漏洞完全控制基础设施。
WebLogic这样一个广泛使用的Web容器平台就曾经爆发过严重的安全漏洞。例如,在2017年12月末,国外安全研究者K.Orange在Twitter上曝出有黑产团体利用WebLogic反序列化漏洞(CVE-2017-3248)对全球服务器发起大规模攻击,大量企业服务器已失陷且被安装上了watch-smartd挖矿程序。这个例子告诉我们,要时时刻刻关注信息基础设施的安全,及时修正其存在的安全缺陷。
1.3.9 不要信任服务
这里的服务是指任何外部或者内部提供的系统、平台、接口、功能,也包括自研客户端和作为客户端功能的软件,例如浏览器、FTP上传下载工具等。
在实践中,我们常常见到,对于由外部第三方提供的服务,特别是银行支付接口、短信通道接口,应用一般都是直接信任的,对其返回值或者回调请求缺少校验。同样,对于内部服务,应用一般也是直接信任的。事实上,这种盲目的信任关系会导致严重的安全风险。如外部和内部服务被成功控制后,我们的业务也可能会受到直接影响。对于来自自研客户端或者作为客户端功能的软件的数据更应该进行严格校验,因为这些数据被恶意篡改的概率是非常大的。例如,黑客通过逆向工程(Reverse Engineering)对自研客户端进行反编译(Decompilation),往往可以直接分析出客户端和服务器端交互的数据格式,从而可以进一步模拟请求或者伪造请求而尝试入侵。
1.3.10 交付时保持默认是安全的
在交付应用时,我们要保证默认情况下的设置是安全的。比如,对于有初始密码的应用,我们要设置较强的初始密码,并且启用密码失效机制来强制用户在第一次使用的时候就必须修改默认密码。另一个例子是虚拟机镜像的交付。我们在烧制虚拟机镜像的时候,应该对镜像进行基础的安全设置,包括删除无用的系统默认账号、默认密码设置、防火墙设置、默认启动的应用剪裁等。在虚拟机镜像交付给用户以后,用户可以按照实际需要再进行优化和完善,以满足业务需求。
1.4 组织和管理的因素
笔者认为,要保障信息安全和系统安全,除了有必要技术手段的支持以外,还要考虑组织和管理的因素,也就是人、流程与制度的因素。
1.4.1 加强安全意识培训
在造成信息泄露的事件中,有一定比例是由组织内部人员的安全意识缺失导致的。例如,据澎湃新闻报道,某市政府信息公开网曾于2017年10月31日发布了《第二批大学生一次性创业补贴公示》,公示单位为其劳动就业服务管理局,责任部门为景德镇市人力资源和社会保障局。其中,可供公众下载的文件公布了学生姓名、完整身份证号以及联系电话等。应对这种问题的方式是对全员进行信息安全意识培训,使所有人都参与到信息安全建设中,提高防御信息泄露的能力。而覃某利用其在某大型银行内部担任技术岗位职务的便利,在总行服务器内植入病毒获利的案例则暴露了组织在安全管理和流程上的漏洞。
在高级持续性威胁(Advanced Persistent Threat,APT)中,通过社会工程方式发送钓鱼邮件是黑客组织最常用的攻击手段。这种以钓鱼邮件为载体的攻击又被称为“鱼叉攻击”(Spear Phishing)。随着社会工程攻击手法的日益成熟,电子邮件几乎真假难辨。从一些受到高级持续性威胁攻击的大型企业可以发现,这些企业受到威胁的关键因素都与普通员工遭遇社会工程的恶意邮件有关。黑客刚一开始,就是针对某些特定员工发送钓鱼邮件,以此作为使用高级持续性威胁手法进行攻击的源头。例如,臭名昭著的高级持续性威胁组织OceanLotus(海莲花)所使用的近60%的攻击都是将木马程序作为电子邮件的附件发送给特定的攻击目标,并诱使目标打开附件。一个典型的钓鱼邮件攻击的流程如图1-6所示。
被截获的部分钓鱼邮件附件如图1-7所示。
在一个典型的钓鱼邮件攻击中,黑客可以通过一封看似正常但却极具伪装性和迷惑性标题和附件(如图1-7所示)的邮件就可以让用户个人电脑或者服务器失陷。因此,我们要持续教育和告诫员工,不得打开未知来源和与工作无关的邮件,特别是不要被具有诱惑性标题的邮件所迷惑。另外,在发现钓鱼邮件时,要及时通知安全管理人员介入调查。
1.4.2 特别注意弱密码问题
笔者在处理大量安全事件中得到的经验表明,弱密码问题是导致众多安全事件的罪魁祸首。同样,在360公司发布的《2018上半年勒索病毒趋势分析》中指出,从2016年下半年开始,随着Crysis/XTBL的出现,通过RDP弱口令暴力破解服务器密码人工投毒(常伴随共享文件夹感染)逐渐成为主角。到了2018年,几个影响力最大的勒索病毒几乎全都采用这种方式进行传播,其中以GlobeImposter、Crysis为代表,感染用户数量最多,破坏性最强。由此可知,很多时候,黑客入侵并不需要高超的技术能力,他们仅仅从弱密码这个入口突破就可以攻破企业的整个信息基础设施。因此,企业及组织应该特别注意弱密码问题。
1.4.3 明令禁止使用破解版软件
破解版软件也成为众多木马和病毒的载体,而安装了这些载有恶意代码的破解版软件后,可能会直接突破网络边界上的安全控制,直接影响服务器和数据的安全。对于服务器管理和操作软件来说,使用破解版的风险尤其严重。例如,360终端安全实验室在2018年11月20日发布的《警惕!Oracle数据库勒索病毒RushQL死灰复燃》中指出,RushQL数据库勒索病毒的大规模爆发,正是由于很多数据库管理员下载使用了破解版Oracle PL/SQL而导致Oracle数据库被锁定。同样,在2012年1月爆发的“汉化版”PuTTY、WinSCP、SSHSecure工具内置黑客后门,导致3万多台服务器系统用户名和密码被传送到黑客服务器上,也再次说明了在组织内禁止使用所谓“汉化版”“破解版”软件的重要性和紧迫性。
1.4.4 组建合理的安全组织结构
在中大型互联网公司中,一般会有首席安全官(Chief Security Officer,CSO)直接负责公司的整体安全事宜。在这种组织架构中,安全事项由较高职位的管理层直接负责,对于推动安全策略的制定和实施是强有力的保障。
在小型互联网公司中,服务器安全一般由运维总监兼管,这种情况下,安全制度的推行一般都会受到一些挑战,这些挑战来自于研发和测试、业务等干系人。解决这些挑战的方式是:
- 通过公司管理层,对运维总监进行书面授权,确认其承担安全建设的责任,并授予其制定安全制度和在全公司实施的权力;同时要求各类干系人予以积极配合。
- 运维总监可以通过正式和非正式的沟通与干系人就安全目标达成一致,然后逐步实施安全策略。
1.5 本章小结
本章介绍了信息安全的概念、系统安全和信息安全的关系,并解析了微软STRIDE威胁分析模型。利用威胁分析模型,可以更好地了解信息安全的机密性、完整性、可用性。1.3节介绍了10个基础的安全原则,即纵深防御、运用PDCA模型、最小权限法则、白名单机制、安全地失败、避免通过隐藏来实现安全、入侵检测、不要信任基础设施、不要信任服务、交付时保持默认是安全的。这些原则来源于实践,反馈于实践。在安全实践中,以这些原则为基准,可以避免大部分安全问题的产生。在本章的最后,简要介绍了在组织中通过安全意识培训等管理手段提高系统安全的方法。接下来的章节是对本章中提到的一些概念、观点、原则的具体化实践。
推荐阅读材料
- 《Computer Security: Principles and Practice (3rd Edition)》,William Stallings和Lawrie Brown著。该书第1章提纲挈领地讲解了计算机安全的概念和安全设计的基础原则。
- https://en.wikipedia.org/wiki/Defense_in_depth_(computing) ,讲解了纵深防御的历史背景、控制措施、例子说明。
- https://en.wikipedia.org/wiki/Principle_of_least_privilege ,讲解了最小权限法则的历史和实现。
- https://wiki.mbalib.com/wiki/PDCA ,讲解了PDCA的概念、特点和使用方法。
- https://searchsecurity.techtarget.com/definition/advanced-persistent-threat-APT ,简要介绍了高级持续性威胁的定义以及其工作原理。
- https://www.fireeye.com/current-threats/apt-groups.html ,知名网络安全公司FireEye分析了活跃的高级持续性威胁组织,包括各高级持续性威胁组织的目标对象、使用的恶意软件、攻击的方式等。
本章重点内容助记图
本章涉及的内容较多,因此,笔者编制了图1-8以帮助读者理解和记忆重点内容。