攻击面最小化
攻击面是指程序任何能被用户或者其它程序所访问到的部分,这些暴露给用户的地方往往也是最可能被恶意攻击者攻击的地方。
攻击面最小化即是指尽量减少暴露恶意用户可能发现并试图利用的攻击面数量。软件产品的受攻击面是一个混合体,不仅包括代码、接口、服务,也包括对所有用户提供服务的协议。尤其是那些未被验证或者远程的用户都可以访问到的协议,安全人员在攻击面最小化时首先要对攻击面进行分析,攻击面分析就是枚举所有访问入库、接口、协议一剂可执行代码的过程,从高层次来说,攻击面分析着重于:
1.降低默认执行的代码量
2.限制可访问到代码的人员范围
3.限定可访问到代码的人员身份
4.降低代码执行所需权限
常见的攻击面分析技巧如下表:
Higher Attack Surface | Lower Attack Surface |
---|---|
On by default | Off by default |
Open socket | Close socket |
UDP | TCP |
Anonymous access | Authenticated user access |
Constantly on | On as needed |
Internet accessible | Local subnet accessible |
攻击面最小化在微软的应用实践示例:
Windows | RPC需要认证、防火墙默认打开 |
---|---|
iis6.0、7.0 | 使用Network service权限运行,默认关闭. |
Sql server 2005/2008 | xp_cmdshell存储过程默认关闭,默认不开放远程链接 |
VS2005/2008 | Web server和sql server默认仅本地访问 |