Назад | Перейти на главную страницу

Политика Selinux для CAP_SYS_PTRACE путем вызова имени процесса

У меня есть система, в которой установлен GDB, и целевой двоичный файл, который нужно отлаживать на предмет ошибок. Мы не хотим, чтобы пользователь мог отлаживать какой-либо другой процесс, кроме целевого двоичного файла.

Есть ли способ использовать Selinux для создания политики, ограничивающей CAP_SYS_PTRACE целевым процессом? и не удается выполнить отладку любого другого процесса?

Режим "Классические разрешения ptrace" уже позволяет отслеживать процессы, запущенные под вашим uid, но не имеет никаких привилегий. Поместите это в /etc/sysctl.d/program.conf

kernel.yama.ptrace_scope = 0 

Если программа работает от имени другого пользователя, разрешите переключение на этого пользователя для запуска gdb. Например, с правилом sudo.

Тогда gdb можно вызвать с помощью gdb program или gdb -p PID синтаксис.


По-настоящему ограничить его отслеживанием только одной программы, даже не других, запущенных под вашим пользователем, сложнее. В настоящее время в CentOS 7 нет целевой политики SELinux для gdb. Запуск без ограничений означает, что SELinux не применяется, и разрешит тот же пользователь или CAP_SYS_PTRACE.

Вы можете определить политику как для вашей программы, так и для GDB, и позволить ей делать то, что вы хотите.

allow gdb_t program_t:process { ptrace } ;

Проблема в том, что ни одного из этих типов пока не существует. Вам также нужно будет выяснить все переходы между доменами, необходимые для ограничения gdb, но все еще работающего.

Уже существует логическое значение, которое глобально отключит ptrace. Не очень полезно, поскольку нет исключений, но вы можете запретить root отслеживать процессы.

setsebool -P deny_ptrace on