Настройки для систем лимитирования и изоляции

Расположение файлов и директорий LimitedFS

Конфигурационные файлы LimitedFS находятся в директории /etc/limitedfs. Файловая система и точки монтирования для пользователей находятся в директории /srv/limitedfs.

Настройка MIN_UID для систем лимитирования и изоляции

LimitedFS, а также система лимитирования, работают с пользователями, UID которых больше или равен MIN_UID. По умолчанию значение MIN_UID равно 1000.

Просмотреть или изменить MIN_UID можно с помощью следующих команд.

  • Команда задаёт MIN UID пользователей для LimitedFS.

    $ sudo lfsctl  --set-min-uid
    
  • Команда отображает текущий установленный MIN UID.

    $ sudo lfsctl  --get-min-uid
    

Настройка MIN_UID используется, чтобы разграничить пользователей, которые должны быть ограничены при помощи систем лимитирования и изоляции, и пользователей, к которым не должны применяться эти ограничения.

Пользователи, UID которых меньше чем MIN_UID, не будут ограничиваться системами лимитирования и изоляции. Настройка MIN_UID хранится в бинарном (двоичном) формате в файле /etc/limitedfs/ls.min.uid. При этом, если значение MIN_UID равно значению по умолчанию (1000), то файл /etc/limitedfs/ls.min.uid удаляется (не существует).

Изоляция процессов пользователей (PID namespace)

При выключенной изоляции процессов, пользователь может видеть все процессы в системе (работающие как внутри LimitedFS, так и вне её). Параметр монтирования директории /proc, называемый hidepid, позволяет скрыть от пользователя процессы других пользователей. Параметр hidepid используется при монтировании /proc внутри LimitedFS, чтобы пользователь внутри LimitedFS видел только свои процессы. Но если от имени пользователя работают процессы вне LimitedFS, то такие процессы тоже будут видны этому пользователю, если выполнить команду ps aux внутри LimitedFS.

Функция изоляции процессов пользователей (PID namespace) предоставляет улучшенную изоляцию (ограничение видимости) процессов пользователя внутри LimitedFS. При включённой изоляции процессов, пользователь внутри LimitedFS видит только те свои процессы, которые работают внутри LimitedFS этого пользователя.

Для включения изоляции процессов выполните следующие команды:

$ sudo touch /etc/limitedfs/pid.ns.enable

$ sudo lfsctl  --mount-lfs

Для выключения изоляции процессов выполните следующие команды:

$ sudo rm -f /etc/limitedfs/pid.ns.enable

$ sudo lfsctl  --mount-lfs

На текущий момент изоляция процессов пользователей поддерживается в LimitedFS для сервисов su, ssh, cron.

Конфигурационный файл /etc/limitedfs/limitedfs.json

Конфигурационный файл /etc/limitedfs/limitedfs.json хранит некоторые настройки LimitedFS и имеет следующий вид (ниже показаны значения по умолчанию):

$ sudo cat /etc/limitedfs/limitedfs.json
{
  "TmpwatchCmd": "/usr/sbin/tmpwatch -umlq 30d",
  "TmpwatchDirs": [],
  "TmpwatchDisable": false,
  "CleanTmpfs": false,
  "UseLdap": false,
  "MountOptions": "",
  "UseLS": true,
  "BlackFilePath": "/usr/bin/false"
}

Описание параметров:

  • Параметр TmpwatchCmd задаёт команду, которая выполняется для очистки временных файлов.

  • Параметр TmpwatchDirs хранит список дополнительных директорий для очистки временных файлов. По умолчанию (если указанный список пуст) очищаются директории /tmp, /var/tmp, /var/cache/php-eaccelerator.

  • Параметр TmpwatchDisable отключает очистку временных файлов внутри LimitedFS (true = отключено, false = включено).

  • Параметр CleanTmpfs: Если включён режим создания изолированных директорий пользователей /tmp внутри директории /tmp реальной файловой системы (чтобы персональные директории /tmp пользователей создавались не в домашней директории пользователя, как по умолчанию, а в tmpfs), то очистка таких директорий /tmp отключена по умолчанию. Чтобы включить очистку директорий /tmp на tmpfs, нужно прописать параметр "CleanTmpfs" : true.

  • Параметр UseLdap не используется и зарезервирован для будущих разработок.

  • Параметр MountOptions задаёт опции монтирования директорий внутри LimitedFS. По умолчанию внутри LimitedFS разрешено выполнение suid программ (например, exim). Однако, это можно изменить, запретив выполнение всех suid программ внутри LimitedFS при помощи опции монтирования nosuid. Для этого используется опция MountOptions в конфигурационном файле /etc/limitedfs/limitedfs.json. В значении этого параметра через запятую перечисляются опции монтирования, которые должны использоваться внутри LimitedFS. Например, для отключения возможности выполнения suid программ внутри LimitedFS для опции MountOptions нужно указать значение nosuid, а затем выполнить команду lfsctl --mount-lfs для применения изменений. При этом монтирования выполняются с опцией nosuid, чтобы исключить повышение прав пользователя и повысить безопасность. Повышение прав с помощью бита setuid на исполняемых файлах, а также с помощью привилегий Linux (Linux capabilities) внутри LimitedFS в этом случае будет отключено.

  • Параметр UseLS определяет, будет ли выполняться пересоздание лимитированного окружения (LS) при пересоздании контейнера LimitedFS. По умолчанию, значение этого параметра равно true, то есть выполняется пересоздание LS. Значение параметра false отключает пересоздание LS при пересоздании LimitedFS. Использовать значение false рекомендуется только при наличии проблем в работе LS или LimitedFS. При обычном использовании этот параметр должен иметь значение true.

  • Параметр BlackFilePath задаёт путь к файлу, который будет монтироваться поверх файлов из чёрного списка (при использовании режима моннтирования custom).

Для управления параметрами очистки временных файлов рекомендуется использовать соответствующие команды утилиты lfsctl, а не редактировать конфигурационный файл /etc/limitedfs/limitedfs.json напрямую.