本文主要是介绍互联网安全防御之道,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
互联网安全其本质是黑客和开发者之间的攻防战争。既然是战争,就有相通性。我们可以借鉴一些在现实战争中的思维来实施防御。
苏联元帅米·尼·图哈切夫斯基就曾在第一次世界大战以及国内战争中,提出一种名为:「大纵深作战理论」思想。该思想的核心是:多点布防,以点带面,多面成体,纵深打击及防御。我们今天就大纵深作战理论来谈一谈如何在互联网安全中进行有效实践。
纵深防御整体框架
整个防御分解到如下几层实施处理:展现层,网络层,代理层,接入层,逻辑层和存储层,每层都有对应的方法和策略,下面具体逐层讲解:
展现层
展现层分为app客户端以及web网页端,app客户端主要有DEX加壳保护,内存防dunp,资源文件保护,防二次打包以及防调试保护等等,现在移动互联网化,所以防御战场很多转向移动app端处理,特别是金融和游戏领域显得尤为重要。另外一种就是web网页端,虽然现在网页版比较少,但是急于可动态调整的H5版本化也逐渐流行,所以这一块的防护也是不容忽视,主要是js的混淆加密,以及页面混淆加密机制。
网络层
网络层是中间人攻击的主要手段,所以信息的脱敏变得尤为重要,数据的加密传输,HTTPS的加密传输协议甚至自定义加密传输协议(特别适用于app客户端)就显得比不可少,数据脱敏可以采取非对称加密,但是非对称加密有一个比较大的问题,cpu资源耗损较大,如果能在数据传输阶段就直接采用不可逆加密使最好的,例如密码加密传输可以直接采用MD5加签传输,即使在网络层获取也无从得知明文,或者说得知明文的代价很大。
网络层还有一种就是类似云防御机制的WAF系统,通过流量导入,对接口请求的参数进行整体过滤防御,例如xss攻击,sql注入,恶意文件后门传输等可以做到有效防御,WAF可以采取流量复制也可以采取流量清洗的模式,只要前端WAF网络层的性能可观,原则上可以选择流量清洗的模式,因为流量复制的一个比较大的问题就是无法实施阻断,只能事后通知,及时性上面会稍显不足。
代理层
代理层主要是指类似nginx的代理层,这一层是流量进入系统的最后一个环节,所以nginx代理层的作用也非常重要,主要防护措施可以有:白名单限制,refer域名限制,以及流量控制等等。例如某个不法IP在一段时间之内访问频次过高,就直接将此ip下发到防火墙一层,直接通过网络层把非法IP封杀过滤掉,例如小米的秒杀系统就有此做法。
逻辑层
接入层之后就是逻辑层,逻辑层负责进行数据运算的,所以在这一层主要还是一点,就是数据的脱敏,以及加密算法的选择。例如密码,在逻辑层密码不应该显示打印,而且在对密码加密的算法选择上需要精细考量,为什么呢?加密算法是一个cpu耗损型运算,而密码又是一个极其敏感的数据,简单加密很有可能惨遭破解,那如何平衡之间的关系就显得很重要了。建议密码存储不能做简单的一次hash运行算,可以通过倒置,混淆,重复叠加多次hash运算来实现。另外对于逻辑层还需要主意逻辑漏洞的防护,对客户端传递的一切参数秉承不信任的做法,例如举一个简单的例子查询账户信息,首先就需要校验账户是否在session中存在,而不能传递什么账户就返回什么信息。
存储层
最后一层就是存储层了,存储层原则上是终极核心层,如果像出现携程数据库dba直接删除的情况出现,可能从技术层面上是回天无力的了,但是业务层面可以做防空,例如权限管控,这里所要说的其实是另外一个处理方式,就是在存储层做”蜜罐”处理,”蜜罐"是安全防御领域里面的一个象形词,它的基本做法是多复制几个表,在表的取名上近似相像,如果有人操作这些表,就通过监控机制直接告警,使得问题尽早的暴露出来,达到一个早期防御的功效。
以上是从技术层面上来阐述互联网环境下大纵深安全防御做法,其实还有业务层面也可借鉴这一点,例如一个账户有注册,登陆,登陆之后还有支付,论坛,商场等等业务,那我们可以这样处理,先在注册层面进行防护,之后进入登陆,登陆也做一层防护,如果还有不乏分子,那我们就可以在后端业务方再做防护,例如支付设置密码,或者其它重要业务设置二次验证查看等等。
「总之,理论提供的是一种指导思想,这种思想可以在不同层面精细化使用,终极达到防护的目的。」
这篇关于互联网安全防御之道的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!