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

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

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

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

3
задан 28 April 2017 в 17:05
1 ответ

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

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

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

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

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 и очень глубокое понимание этого, а также вам, вероятно, потребуется владеть политиками Многоуровневой безопасности .

4
ответ дан 3 December 2019 в 06:01

Теги

Похожие вопросы