安全强化
在电脑安全领域中的安全强化(hardening)也称为安全固化,是指减少系统的攻击表面,提升系统安全性的作法。若系统的功能越多,攻击表面就越大。理论上单一功能的系统会比多功能的系统要安全。减少攻击可能性的方式一般包括有更换预设密码、移除不必要的软件、不必要的用户或是登入、关闭或是移除不必要的服务。
依照NIST的定义,安全强化是指:“利用增加漏洞的修补程式,关闭不必要的服务来消除攻击表面的作法。”[1]
有许多对Unix及Linux系统安全强化的方式。这些包括有在内核增加像是Exec Shield或是PaX的修补程式,关闭通讯埠、架设入侵检测系统(IDS)、防火墙及入侵预防系统(IPS)。不过也有来源认为防火墙、入侵检测系统及入侵预防系统不算是安全强化。
也有用来安全强化的脚本语言和工具,像是Lynis、 Bastille Linux、Solaris系统的JASS以及Apache/PHP Hardener,这些工具可以在组态档案中关闭不必要的功能,或是进行其他保护性的措施。
目的
[编辑]实务上,安全强化的目的有以下几点:
- 减少漏洞被利用的可能性
- 减少可能的攻击方式
- 在骇客攻击成功后,减少其可用的工具
- 在骇客攻击成功后,减少其可取得的权限
- 增加系统侦测骇客攻击的能力
安全强化也可能会降低系统的复杂度以及维护时需要花的心力,这也可以看成安全强化的另一个目的,可以增加系统受控的程度,减少管理错误的可能性。
二进制强化
[编辑]二进制强化(Binary hardening)是一种分析并且修改二进制文件以避免常见暴露的安全技术。二进制强化和编译器无关,和工具链(toolchain)有关。例如,有一种二进制强化技术是侦测潜在的缓冲区溢位,将已有的程式改为较安全的程式。处理二进制档的优点是可以直接处理既有程式码的漏洞,不需要其源代码(源代码可能已无法取得或是不完整。再者,相同的技术可以应用在由多个编译器产生的二进制档中,其中可能有些是比较不安全的。
二进制强化常伴随着非确定性的,对控制流及指令位置的修改,其目的是避免骇客可以复用程式码来进行攻击。常见的强化技术有:
- 缓冲区溢位保护
- 堆叠溢位保护
- 地址无关执行档及位址空间配置随机载入
- Binary stirring(乱数化基础区块的地址)
- Pointer masking(避免代码注入)
- 控制流乱数化(避免control flow diversion)
相关条目
[编辑]参考资料
[编辑]外部链接
[编辑]- Hardening Your Computing Assets (PDF). [2023-12-13]. (原始内容存档 (PDF)于2023-12-13). at globalsecurity.org