Red Hat Training

A Red Hat training course is available for Red Hat Enterprise Linux

4.15. 禁用 ptrace()

ptrace() 系统调用允许一个进程观察和控制另一个进程的执行并更改其内存和寄存器。此调用主要供开发人员在调试期间使用,例如在使用 strace 实用程序时。不需要 ptrace() 时,可以禁用它来提高系统安全性。这可以通过启用 deny_ptrace 布尔值(拒绝在 unconfined_t 域中运行的进程)对其他进程使用 ptrace() 来完成。
deny_ptrace 布尔值默认为禁用。要启用它,以 root 用户身份在命令 中运行 setsebool -P deny_ptrace:
~]# 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()的 域,请输入以下命令。请注意,setools-console 软件包提供了 sesearch 实用程序,并且默认情况下未安装该软件包。
~]# sesearch -A -p ptrace,sys_ptrace -C | grep -v deny_ptrace | cut -d ' ' -f 5