Answers:
两者都可以。它们默认是打开的;您无需执行任何操作即可启用它。答案更长……
在Ubuntu中默认使用DEP。如果CPU支持,则通过NX位完成;如果CPU不支持,则通过内存分段进行仿真。有关更多详细信息,请参见不可执行的内存功能项。
在Ubuntu中,默认情况下,可在任何可重定位的内存段(堆栈,库,堆,mmap)上使用ASLR。默认情况下,程序不可重定位的唯一部分是主代码区(“文本”段)。程序需要专门编译为PIE(与位置无关的可执行文件)才能实现。已经以这种方式构建了许多敏感程序。有关更多详细信息,请参见列表
Ubuntu中默认还提供许多其他安全功能。有关完整列表,请参见Ubuntu安全功能文档。
默认情况下,Linux内核确实使用类似的技术,但是它们与Windows版本不同。如果您的处理器能够设置NX位(大多数现代CPU),那么内核将使用它。内核中的ASLR中也有一个较弱的实现,可以安装更强的实现,但默认情况下不会在Ubuntu上安装。
一般来说,简单来说,您需要一个PAE版本的内核。有关此主题的详细信息,请参阅此摘要。
dmesg
说NX (Execute Disable) protection cannot be enabled: non-PAE kernel
。另一方面,当我从bazaar.launchpad.net/~ubuntu-bugcontrol/qa-regression-testing/…运行测试时,似乎强制执行了nx,但对-pie
and -rie
测试却没有执行。所以这让我有些困惑。