开篇词
没有安全意识,也没有把安全当成一个优先级很高的事情去做
在追求开发效率的同时,一定要把“安全”这俩字“放在心上”
现状:小 公司没有安全,大公司都在“补”安全。
如果业务的开发和管理人员,能够具备基础的安全知识, 尽早做好安全规划,就能够以很低的成本满足公司前期的安全诉求。
实践出真知,个人安全能力 的提升,需要经过不断地磨练。
安全攻防知识全景图
希望学完这个专栏之后,你能够既懂“攻”又懂“防”,既懂理论也懂实践
记一次Linux被入侵,服务器变“矿机”全过程
记一次Linux被入侵,服务器变“矿机”全过程
安全基础概念
01 | 安全的本质
机密性(Confidentiality)、完整性(Integrity)、可用性(Availability),我们可以简 称为 CIA 三元组,是安全的基本原则
机密性用一句话来说就是,确保数据只被授权的主体访问,不被任何未 授权的主体访问。 简单用一个词总结就是“不可见”
机密性的一个前提是明确授权规则,也就是明确每一项数据可以被 什么样的主体访问。
提出了很多访问控制机制和安全模型,对数据和访问主体打上标签或 者进行分类,并制定相应的访问控制规则去自动进行授权
面临的机密性攻击,其实是人为原因导致的疏忽,也就是错误使用访问控 制机制或数据保护技术。比如,因为权限滥用,导致开发人员拥有敏感数据的无限制访问权 限;因为弱密钥,导致加密被破解;甚至显示器上的数据被别有用心的人窥探。所以说,当 前机密性保护的要点是引导人去做正确的事情,避免这类看似低级、实则普遍的漏洞发生。
完整性就是确保数据只被授权的主体进行授权的修改,简单来说,就是“不可改”。
完整性会更加强调对修改 行为的日志记录,并有合适的监督机制进行审计。
针对完整性的攻击也和机密性一样,更多的是由于人为原因导致的疏忽。除了黑客本身对数 据的恶意篡改,已授权的主体也可能对数据完整性产生破坏,比如员工意外地误删除数据、 程序 bug 导致错误数据被写入、正常用户的一些无效输入等。
可用性就是确保数据能够被授权的主体访问到, 简单来说,就 是“可读”。
可用性会面临哪些挑战呢? 在运维层面上,有很多技术在为可用性提供支撑,比如,在基础建设上的机房建设(如 何在断电、高温、火灾等情况下保护设备)、多地冗余,以及在服务中的备份、资源冗 余等。 在研发层面上,如何降低响应延迟、如何处理海量数据、如何在峰值进行扩容等,这些 问题其实都是在可用性上的挑战。 在攻击的角度上,黑客也会对可用性发起攻击,也就是我们常说的 DoS(Denial of Service,拒绝服务)攻击。比如,通过发送大量的流量来占满带宽资源。
建设安全体系,在不同阶段做不同的事
通常来说,在互联网企业发展初期,可用性的优先级较高。如果涉及金钱相关的业务,则完 整性的优先级更高;而涉及个人隐私相关的业务,则保密性的优先级更高。对于大部分企业 而言,可用性在初期受到的挑战更多,则越发展越稳定,后期在可用性上的投入会逐渐降 低。而完整性和机密性,会随着业务的发展,重要性越来越高,在企业的安全投入中,占比 会越来越大。
02 | 安全原则:我们应该如何上手解决安全问题?
安全解决方案的黄金法则
黄金法则主要包含三部分:认证(Authentication)、授权(Authorization)、审计 (Audit)
IAAAA法则识别、认证、授权、审计、问责
1. 身份识别和认证 who are you?
认证形式三种弱到强
你知道什么(密码、密保问题等); 你拥有什么(门禁卡、安全令牌等); 你是什么(生物特征,指纹、人脸、虹膜等)。
将多种类型的认证进行组合,可以形成多因素认证机制
可信的身份认证是建立安全保障体系的第一步。
通过衡量一个应用的认证安全等级,我们 就能看出它整体的安全水平
2. 授权 what can you do?
在系统 或者应用中,我们的操作都会受到一定的限制。比如,某些文件不可读,某些数据不可修 改。这就是授权机制
3. 审计和问责 what have you done?
实现方式-日志,不可否认性
大部分情况下,事前防御属于认证,事中防御属 于授权,事后防御属于审计。
建立安全体系都是一个长期过程,因此,我们需要一个有效的 管理方案来进行推动
03 | 密码学基础:如何让你的密码变得“不可见”?
对称加密算法
首先,我们来看对称加密算法。所谓对称加密,代表加密和解密使用的是同一个密钥。
经典对称加密算法有 DES、IDEA、AES、国密 SM1 和 SM4。下面我们一起来 具体看看。
DES(数据加密标准,Data Encryption Standard) 密钥长度为 56 位
IDEA(国际数据加密算法,International Data Encryption Algorithm)密钥长度为 128 位
AES(高级加密标准,Advanced Encryption Standard)。 提供了 128 位、192 位和 256 位三种密钥 长度。通常情况下,我们会使用 128 位的密钥。
AES 是国际上最认可的密码学算法。
国密 SM1(SM1 Cryptographic Algorithm)和 SM4(SM4 Cryptographic Algorithm)
对于大部分公司来说,选取 AES128 进行加解密运算,就能获得较高的安全性和性能。如 果是金融或政府行业,在涉及国家层面的对抗上,有一定的合规需求,则需要应用国密算 法。
在选取加密算法的时候,存在不同的分组计算模式:ECB/CBC/CFB/OFB/CTR。选取 CBC 和 CTR 这两种推荐使用的模式就可以满足大部分需求了,它们在性能和安全性上都有较好 的保证。
非对称加密算法
有对称就一定会有非对称。非对称加密代表加密和解密使用不同的密钥。