Могу ли я предотвратить выполнение скриптов на файловой системе, не устанавливая флаг 'noexec'?

Я прохожу курс “от 0 до Linux админа” вот здесь Learn Programming Online | Courses for Developers | YODO и столкнулся с проблемой: возможно ли предотвратить выполнение скриптов в файловой системе без установки флага ‘noexec’? Мы используем RHEL, и в целях соблюдения стандартов CIS у нас установлен флаг ‘noexec’ для /tmp на всех серверах. Одна из наших команд пытается внедрить программное обеспечение для автоматизации обновления сертификатов, которое, по крайней мере частично, создаёт несколько скриптов в /tmp и запускает их.

Очевидно, это не работает с установленным ‘noexec’. Нам сообщили, что изменить программу на использование другого расположения, кроме /tmp, “пока невозможно”. Для ограничения разрешений безопасности нам дали временное разрешение монтировать /tmp без ‘noexec’, пока поставщик программного обеспечения не изменит процесс. Однако нашим задачей является настройка системы так, чтобы только сервисный аккаунт, под которым работает приложение, мог выполнять файлы, и только те, которые необходимы для работы приложения.

Я рассматривал использование ACL для этого, но не думаю, что это реализуемо, если только мы не захотим по сути полностью запретить доступ всем остальным к /tmp. Если мы запретим пользователям выполнять файлы в /tmp, они не могут получить доступ к директории или её содержимому. Если запретим выполнение в /tmp/*, они могут получить доступ к /tmp, но не смогут выполнить ни один файл в нём, и нам постоянно придётся запускать команду setfacl, чтобы охватить новые файлы, в результате чего это станет бесполезным занятием.

Я готов сказать “простите, это невозможно; либо ‘включено’, либо ‘выключено’…”, но подумал, что лучше сначала спросить у более опытных коллег — может быть, я упускаю что-то очевидное.

Привет!

Ну что, вопрос был: как предотвратить выполнение скриптов на файловой системе, но без флага noexec. Я решил попробовать разные фишки, но, увы, ничего путного не вышло.

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

Дальше пробовал разные комбинации в конфигурациях веб-сервера, вроде nginx или Apache. Мол, может, можно настроить его так, чтобы он вообще игнорировал выполнения этих файлов. Но нет, никакие хитрости с правилами не сработали. Скрипты всё равно находили способ продраться.

Потом зашел в дебри системы и начал ковыряться с SELinux и AppArmor. Надеялись, что смогу чего-нибудь придумать с этими системами безопасности. Но, честно говоря, знаний не хватает, и в итоге стал только запутываться.

Хотел бы сказать, что бессилие — это чувство мне знакомо, но не хочу сдаваться! На пути к успеху нашел кучу полезных курсов на сайте yodo.im, они реально могут помочь раскладывать все по полочкам. Возможно, там наконец-то узнаю, как обойти такие проблемы.

В общем, сейчас в поисках нового подхода. Если будут идеи или опыт, делитесь, буду рад!