4.15. 禁用 ptrace()
ptrace ()
系统调用允许一个进程观察和控制另一个进程的执行,并更改其内存和寄存器。此调用主要供开发人员在调试期间使用,例如使用 strace
工具时。当不需要 ptrace ()
时,可以禁用它来提高系统安全性。这可以通过启用 deny_ptrace
布尔值(拒绝所有在 unconfined_t
域中运行的进程)来达到这个目的,无法在其他进程中使用 ptrace ()
。
deny_ptrace
布尔值默认为禁用。要启用它,以 root 用户身份运行 setsebool -P deny_ptrace on 命令:
~]#
setsebool -P deny_ptrace on
要验证是否启用了这个布尔值,请使用以下命令:
~]$
getsebool deny_ptrace
deny_ptrace --> on
要禁用此布尔值,请以 root 用户身份运行 setsebool -P deny_ptrace off 命令:
~]#
setsebool -P deny_ptrace off
注意
setsebool -P 命令进行永久更改。如果您不想在重新启动后保留更改,则不要使用
-P
选项。
这个布尔值只会影响作为 Red Hat Enterprise Linux 一部分的软件包。因此,第三方软件包仍然可以使用
ptrace ()
系统调用。要列出允许使用 ptrace ()
的所有域,请输入以下命令。请注意,se setools-console 软件包提供 sesearch
工具,且默认情况下不安装该软件包。
~]#
sesearch -A -p ptrace,sys_ptrace -C | grep -v deny_ptrace | cut -d ' ' -f 5