白帽子兵法
三大原则:
Secure By Default原则
(1)黑名单、白名单思想
白名单解析
·只对需求进行放行
·即只对某一部分要使用的接口进行放行,其他端口封闭
·如,网站只提供web服务,那么正确的做法是只允许网站服务器的80和443端口对外提供服务,屏蔽除此之外的其他端口
黑名单解析
·只对威胁进行隔离
·即开放所有端口,只对会威胁服务器安全的部分端口进行隔离
·如:当不允许ssh端口对Internet开放,那么就要审计ssh默认端口“22号端口”是否开放了Internet。而不去对其他端口进行检测
在设计安全方案时,最基本也最重要的原则就是“Secure By Default原则”。
在做任何安全设计时,都要牢记这个原则。
一个方案的安不安全,与用不用这个原则有很大关系
其实,两种思想对比,白名单明显比黑名单要安全。
但记住,白名单的前提是对白名单内事物的信任基础。
当白名单内的事物不再可信,这将对安全策略造成毁灭性打击
即,当白名单内有人员造反,工程师将对其无任何招架之力,比黑名单被攻破更加无解
(2)最小权限原则
即要求系统只授予主体必要的权限,而不要过度授权,这样能有效的减少系统、网络、应用、数据库出错的可能
纵深防御原则
第一层含义:要在不同层面、不同方面实施安全方案,避免出现局部的疏漏,且不同方案之间要相互配合,构成一个整体
纵深防御不是同一个安全方案重复多次,而是从不同层面设计多个不同角度的方案,去对系统进行多方位、立体式的检测和加固,即“木桶理论”
比较常见的防御方向,有web应用安全、OS系统安全、数据库安全、网络环境安全等
将这几个方向各设立一个安全策略,然后进行组合,化作一个整体,才是一个完整的安全方案
第二层含义:要在正确的地方做正确的事:在解决根本问题的地方实施针对性的计划
即,深入理解威胁的本质,从而做出正确的应对措施
数据与代码分离原则
·程序在栈或者堆中,将用户数据当做代码来执行,混淆了代码与数据的边界,从而引发安全问题的发生
·此原则在实际应用中,即是将由用户提交的代码,采用过滤、编码等手段,把可能造成代码混淆的用户数据清除掉,再将过来过 的代码交给浏览器等应用处理,避免注入手段等引起的错误
·即使从漏洞成因上看问题
不可预测性原则
·从克服攻击方法的角度看问题
·当有一些已知的code,发现从当下的科技手段无法抹去时,让对方的攻击变得无效,那么也算是一种成功的防御
例如,一些基于地址的攻击手段,防御方如果将地址隐藏或者使地址不断发生改变,使攻击方无法获取地址,这也算一种防御的 成功
·而,将地址不断发生变化,对于攻击者来说,就是不可预测性
·而不可预测性的实现,常常要与加密算法、哈希算法、随机数算法相结合