白帽子兵法

发布时间 2023-11-11 13:41:52作者: 白牧羊人

三大原则:

Secure By Default原则

(1)黑名单、白名单思想

白名单解析

·只对需求进行放行

·即只对某一部分要使用的接口进行放行,其他端口封闭

·如,网站只提供web服务,那么正确的做法是只允许网站服务器的80和443端口对外提供服务,屏蔽除此之外的其他端口

黑名单解析

·只对威胁进行隔离

·即开放所有端口,只对会威胁服务器安全的部分端口进行隔离

·如:当不允许ssh端口对Internet开放,那么就要审计ssh默认端口“22号端口”是否开放了Internet。而不去对其他端口进行检测

 

在设计安全方案时,最基本也最重要的原则就是“Secure By Default原则”。

在做任何安全设计时,都要牢记这个原则。

一个方案的安不安全,与用不用这个原则有很大关系

其实,两种思想对比,白名单明显比黑名单要安全。

但记住,白名单的前提是对白名单内事物的信任基础。

当白名单内的事物不再可信,这将对安全策略造成毁灭性打击

即,当白名单内有人员造反,工程师将对其无任何招架之力,比黑名单被攻破更加无解

(2)最小权限原则

即要求系统只授予主体必要的权限,而不要过度授权,这样能有效的减少系统、网络、应用、数据库出错的可能

 

纵深防御原则

第一层含义:要在不同层面、不同方面实施安全方案,避免出现局部的疏漏,且不同方案之间要相互配合,构成一个整体

纵深防御不是同一个安全方案重复多次,而是从不同层面设计多个不同角度的方案,去对系统进行多方位、立体式的检测和加固,即“木桶理论”

比较常见的防御方向,有web应用安全、OS系统安全、数据库安全、网络环境安全等

将这几个方向各设立一个安全策略,然后进行组合,化作一个整体,才是一个完整的安全方案

第二层含义:要在正确的地方做正确的事:在解决根本问题的地方实施针对性的计划

即,深入理解威胁的本质,从而做出正确的应对措施

 

数据与代码分离原则

·程序在栈或者堆中,将用户数据当做代码来执行,混淆了代码与数据的边界,从而引发安全问题的发生

·此原则在实际应用中,即是将由用户提交的代码,采用过滤、编码等手段,把可能造成代码混淆的用户数据清除掉,再将过来过 的代码交给浏览器等应用处理,避免注入手段等引起的错误

·即使从漏洞成因上看问题

 

不可预测性原则

·从克服攻击方法的角度看问题

·当有一些已知的code,发现从当下的科技手段无法抹去时,让对方的攻击变得无效,那么也算是一种成功的防御

例如,一些基于地址的攻击手段,防御方如果将地址隐藏或者使地址不断发生改变,使攻击方无法获取地址,这也算一种防御的 成功

·而,将地址不断发生变化,对于攻击者来说,就是不可预测性

·而不可预测性的实现,常常要与加密算法、哈希算法、随机数算法相结合