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

Есть ли способ контролировать доступ к файловой системе с помощью systemd?

Итак, я погружаюсь в тонкости systemd и его способности измерять ресурсы с помощью контрольных групп, таких как cpu, io и memory.

Есть ли способ контролировать каталоги, к которым процесс имеет доступ с помощью systemd? Например, /usr/bin обычно отмечается o+rX, и я бы хотел, чтобы процесс веб-сервера был заблокирован вне этого каталога. Было довольно много программных эксплойтов, с помощью которых вы можете читать произвольные файлы с диска, это улучшило бы многоуровневый подход к безопасности.

Я уверен, что это можно было бы сделать с некоторыми действительно причудливыми разрешениями файловой системы, но мне было интересно, есть ли лучший способ. Спасибо за ошибку сервера!

На самом деле у вас есть несколько параметров, которые вы можете определить в файле (файлах) модуля для ваших услуг. Все они работают по одному и тому же принципу, используя привязку монтирования в пространстве имен, которое systemd настраивает для службы. Некоторые части файловой системы монтируются только для чтения или становятся полностью невидимыми / недоступными при монтировании пустого каталога.

PrivateTmp возможно, самый распространенный.
Включение PrivateTmp устанавливает новое пространство имен файловой системы для выполняемых процессов и монтирует частные /tmp и /var/tmp каталоги внутри него, которые не используются процессами за пределами пространства имен.

ProtectSystem
Если true, монтирует /usr и /boot каталоги только для чтения для процессов, запускаемых этим модулем.
Если установлено на full, то /etc каталог также монтируется только для чтения. Если установлено значение "strict", вся иерархия файловой системы монтируется только для чтения, за исключением поддеревьев файловой системы API / dev, / proc и / sys.

ProtectHome
Принимает логический аргумент или «только для чтения». Если true, каталоги /home, /root и /run/user делаются недоступными и пустыми для процессов, вызываемых этим модулем. Если установлено значение "read-only", вместо этого три каталога будут доступны только для чтения

ProtectKernelTunables
Если true, переменные ядра доступны через /proc/sys, /sys, /proc/sysrq-trigger, /proc/latency_stats, /proc/acpi, /proc/timer_stats, /proc/fs и /proc/irq будет доступен только для чтения.

ReadOnlyPaths
Пути, указанные в ReadOnlyPaths= доступны только для чтения, запись будет отклонена, даже если обычные средства управления доступом к файлам позволят это.

InaccessiblePaths
Пути, указанные в InaccessiblePaths= будут недоступны для процессов внутри пространства имен (вместе со всем, что находится ниже них в иерархии файловой системы).

Хотя может быть и больше вариантов.

Для более многоуровневой политики доступа, вероятно, потребуется SELinux и очень глубокое понимание этого, а также вам, вероятно, потребуется Многоуровневая безопасность политики.