我经常看到有人说 Windows 提供了 DEP(数据执行保护)和 ASLR(地址空间布局随机化)等功能。在 Windows 上,您可以控制是否为 32 位程序启用 DEP。
- 这些功能在 Ubuntu 中可用吗
- 我们需要做什么才能启用这些功能?
答案1
是的,两者都是。它们默认启用;您无需执行任何操作即可启用它。详细答案如下...
Ubuntu 默认使用 DEP。如果 CPU 支持,则通过 NX 位完成;如果 CPU 不支持,则通过内存分段模拟。有关更多详细信息,请参阅非可执行内存特征项。
Ubuntu 默认在任何可重定位的内存段(堆栈、库、堆、mmap)上使用 ASLR。默认情况下,程序中唯一不可重定位的部分是主代码区域(“文本”段)。程序需要专门编译为 PIE(位置独立可执行文件)才能启用此功能。许多敏感程序已经以这种方式构建。有关更多详细信息,请参阅列表
Ubuntu 还默认提供许多其他安全功能。请参阅Ubuntu 安全功能文档了解完整列表。
答案2
Linux 内核默认使用类似的技术,但它们与 Windows 版本不同。如果您的处理器能够设置 NX 位(大多数现代 CPU),则内核将使用它。内核中的 ASLR 也有一个较弱的实现,可以安装更强大的实现,但在 Ubuntu 上默认情况下不会安装。
答案3
一般来说,您需要一个 PAE 版本的内核来实现这一点。有关此主题的详细信息,请参阅本摘要。