目录
前言
网络安全三大要素
CIA含义
1. Confidentiality(机密性)
1.1 机密性主要三个解决方法
1.1.1 加密
1.1.2 权限管理
1.1.3 敏感信息暴露
2. Integrity(完整性)
3. Availabitity(可用性)
威胁分析Threat 微软 STRIDE模型
Spoofing(伪装)
Tampering(篡改)
Repudiaton(抵赖)
Information Disclosure(信息暴露)
Denial of Service Dos(DOS)
Elevation of Privilege(提升权限)
解决网络安全的常用五种实战方法
1、黑名单、白名单
2、最小权限原则
3、纵深防御
4、数据和代码分离
5、不可预测性
前言
在本文发布前已有文章介绍有安全测试相关的文章,随着时间的推移无论是什么攻击工具或手段其内在的本质无非是围绕网路安全的核心基础点来逐一开展并深入研究,通过网络安全核心点发散开并在不同的领域点去寻找突破点而诞生出不同的攻击手段。温顾而知新巩固核心基础知识
网络安全三大要素
CIA含义
Confidentiality、Integrity、Availabitity
1. Confidentiality(机密性)
保密性涉及到在网络传输的时,传输的信息或数据存储场景下的信息安全问题。比如一些秘密数据不会被人直接以明文方式阅读,防止被人看到这些保密信息数据,所以保密性非常重要,因此也保密性排第一位。
1.1 机密性主要三个解决方法
1.1.1 加密
第一个就是加密,网络传输时利用加密算法加密,保存数据的时候需要用加密。
1.1.2 权限管理
第二个是权限管理,设置不同的权限能访问到的信息不一样,权限管理也是非常重要。
1.1.3 敏感信息暴露
第三个是铭感信息暴露,对于任何一些敏感的信息,比如密码或一些数字签名等均属于敏感信息,其次电子邮箱Email、生日等信息在很多地方也都是敏感信息。敏感信息在进行数据传输、保存、写日志的各个层面都需要对铭感信息进行一个保护。
2. Integrity(完整性)
数据内容是完整的没有被篡改,尤其是在数据传输的过程中是非常重要的。比如数据中一端传递到另一个端,也就是客户端传递到服务端信息的时候怎么保障在传输数据的时候被传递的数据没有被篡改过。涉及到的很重要的点就是在于数字签名的校验,需要理解其机制是怎么回事。
数据内容完整、没有被篡改,SignaTure数字签名校验,数据传递前先进行数据签名,数据接收时需要对签名做一些算法去校验被传递数据的签名,只要文本被修改过签名就会出现对不上则校验不通过。
3. Availabitity(可用性)
在网络安全中经常遇到的一个问题,比如攻击者一直Call调用被攻击的服务,一直Call直到服务器被搞挂机。在网络安全中也会考虑这个问题不能让攻击者无限制的去调用服务,需要有一些限制这就是可用性。
威胁分析Threat 微软 STRIDE模型
Spoofing(伪装)
攻击者传递过来的信息是一个假信息,这就是spoofing伪装,需要对传递的信息进行认证。
Tampering(篡改)
攻击者传递数据前进行了篡改,篡改就涉及到数据完整性,需要对其数据签名进行校验。
Repudiaton(抵赖)
攻击者发送一段数据后,然后告诉服务没有发过该段数据,简单而言就是耍赖、抵赖,也就是用户做的事情进行否认,这也是签名校验的一个作用。电子签名,签名校验记录用户发送过的数据,
Information Disclosure(信息暴露)
信息被暴露出去了,敏感信息无论在数据传输,或打日志、保存等各个环节都得贵铭感信息进行一个保护。这也是网络安全中非常重要的内容。
Denial of Service Dos(DOS)
攻击者对服务网站的可用性进行摧毁,不停的对被攻击的网站进行攻击直至网站被搞挂为止。尽最大可能做到网站不会被搞挂,网站总是可用的
Elevation of Privilege(提升权限)
一个普通用户不应该有命令权限,不应该有管理员权限。比如一个黑客想要攻击服务网站,就要想办法提升自己的权限,让自己作为一个管理员方便来操作一些事。
解决网络安全的常用五种实战方法
1、黑名单、白名单
用户被加入黑名单则不能访问,添加白名单用户即所有不在白名单列表的用户均不能访问,黑名单和白名单的作用是相反的。白名单比黑名单更安全,如果能用白名单尽量使用白名单,假如提供的服务实在太多了也就只能用黑名单。
2、最小权限原则
比如某用户在系统中是一个样什么角色,需要什么样的权限就给予相应权限。就好比Linux的一个权限安排的原装类似,也就是说设定的用户需要用到什么权限就给什么权限,不要再给他额外的多余的权限,没有必要就不要给他设定,直接设定最小给定权限数。
实战中可能很多人会偷懒,因为设了一个最小权限的话,以后需要加一个权限又的重新加很麻烦,很多人就是为了怕麻烦就给他权限开的很大,什么东西都是用admin操作,用管理员权限去操作,偷懒是不行的随之时间的推移还是有很多坑要踩。麻烦是没有办法避免需接受现实,权限配置本身也是软件工程里面最基本需要考虑的功能。
3、纵深防御
在网络传输或是某个具体数据操作时,他其实是拥有不同的层面需要去考虑,比如Web应用层,网络层,用户的请求到了数据库层面等需要做安全配置,甚至操作系统也需要做安全配置。不同的层面都需要全面考虑安全策略,不同的层面都需要有些了解,并且不同层面都需要有相应的安全权限配置,所以这就是纵深防御。
4、数据和代码分离
数据和代码分离的原则也是非常重要,相比大家对网络安全稍微也有写了解应该知道各种注入攻击(SQL注入、XSS攻击等),还有缓存区溢出的问题,都是因为没有把数据跟代码分离开来。程序是程序,数据是数据,不要把用户的输入作为程序命令的一部分这是很容易出现问题点,有兴趣的小伙伴可以单独去详细了解注入攻击,为什么数据跟代码一定要完全分离。
5、不可预测性
在设计代码或设计程序时,比如ID的设定,用户ID、网站页面ID,ID等标识最好是一个随机变化,无法让人猜不出来的值。如果ID以数字递增的方式会很容易被攻击者一眼就看出其可能的含义,可以直接根据设置的ID去猜测某一个页面或某一个接口数据直接在浏览器上去尝试,以上这种情况均需要去避免,有时候可能前端的问题较少,设计的重点用户ID或交易号不能让攻击者很容易猜出来。