Я бы хотел разрешить httpd
для исполняемых файлов из домашнего каталога пользователя. Из audit2allow
Я понимаю, что это подразумевает следующую политику:
allow httpd_t user_home_t:file execute;
Как мне превратить это в сценарий, который активирует эту политику на моих серверах CentOS? Я уже включил логические значения для httpd_read_user_content
и httpd_enable_homedirs
но это не помогло.
Общая политика безопасности SELinux для веб-серверов предоставляет набор типов, которые могут использоваться обычными пользователями, чтобы сообщить SELinux, как веб-сервер может работать с указанными файлами. Пользователи могут использовать команду chcon, чтобы связать эти типы с указанными файлами и каталогами.
Каждый из этих типов имеет определенные свойства, предназначенные для определенных целей.
Тип httpd_user_script_exec_t - это тип, который вашему веб-серверу разрешено выполнять. Кроме того, с этим типом связаны правила, которые предписывают SELinux запускать процесс сценария с так называемым «автоматическим переходом типа процесса» от типа процесса веб-сервера к типу процесса, специально разработанному для обычных пользовательских процессов сценария cgi. Этот тип связан с определенным набором разрешений, общих для большинства процессов cgi-скриптов.
Тип httpd_user_rw_content_t - это тип, который вашему веб-серверу разрешено читать и писать. (пример ~ / public_content / myblog / wp_content)
Тип httpd_user_content_t - это тип, который вашему веб-серверу разрешено читать (пример ~ / public_content)
Тип httpd_user_content_ra_t - это тип, который вашему веб-серверу разрешено читать и добавлять (пример ~ / public_content / myblog / logs)
Эти типы обычно могут быть полезны, когда вы включаете логическое значение httpd_enable_homedirs. Это логическое значение связано с правилами, которые позволяют вашему веб-серверу проходить через $ HOME, чтобы он мог, например, достичь ~ / public_content.
Использование приведенных выше типов и логических значений должно обеспечить довольно приличную целостность. Например, ваш веб-сервер не сможет читать ваши ~ / .ssh или ~ / документы, но сможет читать ваш сайт.
Процесс пользовательского сценария cgi также будет ограничен, так что, если он будет скомпрометирован, ущерб, который он может нанести, будет в разумной степени ограничен.
Использование chcon работает, но вы теряете метку selinux при перезагрузке сервера, более понятный способ - использовать semange и restorecon
пример:
semanage fcontext -a -t httpd_user_script_exec_t '/home/pippo/file.bash'
restorecon -v /home/pippo/file.bash
restorecon reset /home/pippo/file.bash context unconfined_u:object_r:user_home_t:s0->unconfined_u:object_r:httpd_user_script_exec_t:s0
-rwxr-xr-x. root root unconfined_u:object_r:httpd_user_script_exec_t:s0 /home/pippo/file.bash