Системные ограничения ulimits astra linux

Обновлено: 02.07.2024

Прежде всего, как выяснить процессы каких пользователей потребляют больше всего ресурсов CPU оперативной памяти.

Для текущего момента посмотреть процессы можно при помощи утилиты ps

Команды выведут сортированные списки процессов в одной из колонок каждого списка будет указано имя пользователя. Процессы, запущенные от имени root показываться не будут и выведутся только 35 самых активных процессов.

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

Ограничения нужны на нагруженных серверах, они существует у каждого хостинг провайдера.

Изменять /etc/security/limits.conf может только пользователь root или другой пользователь работающий из под sudo.

Файл хорошо задокументирован, вся необходимая информация находится в нем в комментариях

В общем виде любое правило выглядит так:

ulimit в Linux и ограничение ресурсов для пользователя

Soft лимиты пользователь может переопределить используя ulimit

Выполнение команды с аргументом -a выведет актуальные ограничения

ulimit -as 1500000
core file size (blocks, -c) 0
data seg size (kbytes, -d) unlimited
scheduling priority (-e) 0
file size (blocks, -f) unlimited
pending signals (-i) 14685
max locked memory (kbytes, -l) 64
max memory size (kbytes, -m) unlimited
open files (-n) 1024
pipe size (512 bytes, -p) 8
POSIX message queues (bytes, -q) 819200
real-time priority (-r) 0
stack size (kbytes, -s) 8192
cpu time (seconds, -t) unlimited
max user processes (-u) 14685
virtual memory (kbytes, -v) unlimited
file locks (-x) unlimited

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

Дополнительно следует указывать тип ограничения:

Если не указывать ничего лимиты будут заданы жестко. hard здесь можно задать для текущего пользователя даже без прав root, но изменения не сохранятся после перезагрузки и чтобы ограничения были установлены постоянно нужно редактировать файл, который был рассмотрен ранее.

Создадим ограничение по оперативной памяти в 1500 Мб для пользователя

Выполнив ulimit -Hm сейчас можно увидеть, что ограничение установлено. Получить ту же информацию можно просмотрев лимиты для процесса

Можно указывать идентификатор любого процесса, запущенного от имени пользователя, для которого задали ограничение по памяти

По умолчанию в системе мандатного контроля доступа ОС Astra Linux Special Edition РУСБ.10015-01 (очередное обновление 1.6) настроено 4 уровня конфиденциальности:

Номер
уровня
Название
по умолчанию
0Уровень_0
1 Уровень_1
2 Уровень_2
3 Уровень_3

При необходимости, количество уровней конфиденциальности может быть увеличено до 255.

Для того, чтобы определить уровни конфиденциальности выше созданных по умолчанию,
и назначать их пользователям, необходимо:

    в файле конфигурации мандатных атрибутов файловой системы /usr/sbin/pdp-init-fs
    задать параметру sysmaclev значение, равное максимальному созданному уровню конфиденциальности

Управление в графическом режиме с помощью графического инструмента fly-admin-smc:

Панель Управления ->
Безопасность ->
Политика безопасности ->
Мандатные атрибуты ->
Уровни целостности

Управление в консольном режиме:

userlev
0 Уровень_0
1 Уровень_1
2 Уровень_2
3 Уровень_3

Управление в графическом режиме с помощью графического инструмента fly-admin-smc :

Панель Управления ->
Безопасность ->
Политика безопасности ->
Мандатный контроль целостности

Управление в консольном режиме:

cat /proc/cmdline | grep "parsec.max_ilev"

Управление в графическом режиме с помощью графического инструмента fly-admin-smc:

Панель Управления -> Безопасность -> Политика безопасности -> Мандатный контроль целостности

Управление в консольном режиме

Управление в графическом режиме с помощью графического инструмента fly-admin-smc:

Панель Управления -> Безопасность -> Политика безопасности -> Замкнутая программная среда

Управление в графическом режиме с помощью графического инструмента fly-admin-smc:

Панель Управления -> Безопасность -> Политика безопасности -> Настройки безопасности

Управление в консольном режиме

systemctl is-enabled astra-console-lock
enabled включен
disabled выключен
Failed to get unit file state . сервис не активирован

Управление в графическом режиме с помощью графического инструмента fly-admin-smc:

Панель Управления -> Безопасность -> Политика безопасности -> Настройки безопасности

Управление в консольном режиме

systemctl is-enabled astra-interpreters-lock
enabled включен
disabled выключен
Failed to get unit file state . сервис не активирован

Управление в графическом режиме с помощью графического инструмента fly-admin-smc:

Панель Управления -> Безопасность -> Политика безопасности -> Настройки безопасности

Управление в консольном режиме

cat /parsecfs/nochmodx
1 включен
0 выключен

Управление в графическом режиме с помощью графического инструмента fly-admin-smc:

Панель Управления -> Безопасность -> Политика безопасности -> Настройки безопасности

Управление в консольном режиме

systemctl is-enabled astra-macros-lock
enabled включен
disabled выключен
Failed to get unit file state . сервис не активирован

Управление в графическом режиме с помощью графического инструмента fly-admin-smc:

Панель Управления -> Безопасность -> Политика безопасности -> Настройки безопасности -> Параметры ядра

Управление в консольном режиме

systemctl is-enabled astra-ptrace-lock
enabled включен
disabled выключен
Failed to get unit file state . сервис не активирован

Управление в графическом режиме с помощью графического инструмента fly-admin-smc:

Панель Управления -> Безопасность -> Политика безопасности -> Настройки безопасности -> Политика очистки памяти

Управление в консольном режиме

Добавить опцию монтирования secdel в файле /etc/fstab

Управление в графическом режиме

Управление в консольном режиме

ufw status
Status: active включен
Status: inactive выключен

Управление в графическом режиме с помощью графического инструмента fly-admin-smc:

Панель Управления -> Безопасность -> Политика безопасности -> Настройки безопасности

Управление в консольном режиме

systemctl is-enabled astra-ulimits-control
enabled включен
disabled выключен
Failed to get unit file state . сервис не активирован

Управление в графическом режиме с помощью графического инструмента fly-admin-smc:

Панель Управления -> Безопасность -> Политика безопасности -> Настройки безопасности -> Параметры ядра

Управление в консольном режиме

sysctl -w kernel.sysrq=0
sysctl -w kernel.sysrq=1

cat /proc/sys/kernel/sysrq
0 включен
1 выключен

Управление в графическом режиме с помощью графического инструмента fly-admin-smc:

Панель Управления -> Безопасность -> Политика безопасности -> Замкнутая программная среда

Управление в графическом режиме с помощью графического инструмента fly-admin-smc:

Панель Управления -> Безопасность -> Политика безопасности

Управление в графическом режиме с помощью графического инструмента fly-admin-kiosk:


ulimit - ограничения текущего процесса, например количество одновременно открытых файлов. Справка man limits.conf. Конфигурационный файл находится /etc/security/limits.conf.

Установка лимитов с помощью ulimit может предотвратить катастрофу в ваших системах Linux, но вам нужно предвидеть, где ограничения будут иметь смысл, а где они вызовут проблемы.

Чтобы увидеть ограничения, связанные с вашим логином, используйте команду ulimit -a. Если вы используете учетную запись обычного пользователя, вы, скорее всего, увидите что-то вроде этого:

Сразу бросается в глаза, что вы не можете создавать дампы ядра, потому что ваш максимальный размер файла ядра (core file size ) равен 0. Пока размер файла ядра равен нулю, дампы ядра не допускаются. Это имеет смысл для большинства пользователей, поскольку они, вероятно, не будут ничего делать с дампом ядра, кроме его удаления, но если вам нужен дамп ядра для отладки проблем вашего приложения, вы можете настроить свой основной файл размер до неограниченного.

Изменять лимиты вы можете в конфигурационном файле, обычно /etc/security/limits.conf, или при помощи командной строки. Помните что при изменении лимитов через командную строку, ваши изменения не сохранятся после перезагрузки ОС. Например для изменения максимального количества пользовательских процессов (max user processes) используйте ключ u (из листинга вывода команды ulimit -a):

В limits.conf для каждого пользователя или группы можно задать ограничения. Каждое ограничение задается в отдельной строке. Например для группы developers настроим ограничения пределов открытия файлов, где hard жестко задали количество, а при достижении нижнего предела значения soft пользователи будут получать предупреждения):

Too many open files

Asterisk rtp.c: Unable to allocate RTP socket: Too many open files res_timing_timerfd.c: Read error: Bad file descriptor

Нужно увеличить ограничение на количество одновременно открытых файлов в файле limits.conf.

ulimit размеры файлов

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

Некоторые параметры "зашиты" в ядро системы при ее генерации. Одним из таких значений является максимальный размер файла. Он определяет наибольшее число блоков, которые может занимать файл. Этот параметр тесно связан с принятым в UNIX методом использования индексных дескрипторов файла (inodes). Это наборы указателей, среди которых первые десять указывают на блоки данных, следующий указывает на другую таблицу, следующий - на таблицу, указывающую на таблицу и т.д.

Побочным эффектом уменьшения значения ulimit является то, что вы не можете снова увеличить его до регистрационного значения. Значение ulimit остается таким же на все время работы вашего shell, поэтому для восстановления регистрационного значения вам необходимо выйти из системы, а затем снова зарегистрироваться.

Еще одним интересным моментом является то, что если вы установите ваше значение ulimit равным 0, вы не сможете создать никакие файлы! Максимально допустимым размером файла в данном случае является нулевой, поэтому никакой файл не может быть создан. Это представляется достаточно резонным, однако существуют такие ситуации, когда файл нулевого размера МОЖЕТ существовать. Опять же, для восстановления вашего обычного значения ulimit необходимо выйти из системы, а затем снова зарегистрироваться.

Как отмечалось ранее, увеличить значение ulimit может только суперпользователь. Эта процедура довольно проста. Сначала нужно увеличить значение ulimit командой ulimit, а затем запустить shell. Этот новый shell имеет новое значение ulimit. Если мы хотим, чтобы система загружалась с shell, имеющим большее значение ulimit, мы можем установить программу в inittab (таблице инициализации системы), чтобы эта операция выполнялась автоматически.

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

Зачем суживать количество открытых файлов

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

  • Soft Limit Свойство, которое может быть изменено процессом в любое время.
  • Hard Limit обозначает наибольшее значение, которое не может быть превышено путем установки мягкого ограничения

Бригада ulimit

Команду ulimit можно использовать для увеличения количества файлов, которые можно раскрыть в оболочке. Эта команда является встроенной командой bash, поэтому она влияет только на bash и програмки, запускаемые из него. Синтаксис ulimit следующий:
Ulimit [options [limit]]
Параметры определяют, что довольствуется. Вы можете увидеть некоторые варианты, как показано ниже

  • -a (Передача текущих настроек): заставляет ulimit извещать о своих текущих настройках.
  • -f (Ограничения файлов) ограничивает размер файлов, которые могут быть сделаны оболочкой.
  • -n Ограничивает количество открытых файловых дескрипторов.
  • -H и -S (Жесткие и мягкие ограничения) параметры меняют другие параметры, в результате чего они устанавливаются как жесткие или мягкие ограничения соответственно. Жесткие ограничения смогут впоследствии не увеличиваться, но мягкие ограничения могут быть. Если ни один из вариантов не предусмотрен, ulimit ставит как жесткие, так и мягкие ограничения для указанной функции.

Модуль подключаемых модулей аутентификации (PAM)

Устанавливать такие ограничения лучше всего с помощью Включаемых модулей аутентификации (PAM), называемых Pam_limits. Большинство основных дистрибутивов Linux используют этот часть как часть своей стандартной конфигурации PAM, поэтому он уже присутствует в некоторых системах Linux, но вам нужно станет настроить его, отредактировав /etc/security/limits. conf файл. Этот файл содержит четыре главных поля:

Вы можете увидать, например, содержимое этого файла, как показано ниже:

Дабы отредактировать максимальное количество открытых файлов для всех пользователей, вы можете добавить, например, приплюсовать в конец файла строки ниже:

После данного вам необходимо отредактировать файл /etc/pam. d/login

Затем сохраните файл. Вы сможете проверить результат, как показано ниже:

Общесистемный предел

В системе Linux у нас есть Файл-макс, какой является максимальным дескриптором файлов (FD), и настройки по умолчанию для ulimit и file-max предполагают, что несколько юзеров будут совместно использовать систему. Вот почему эти настройки ограничивают количество ресурсов, используемых любым пользователем. Вы можете увеличить количество открытых файлов в Linux, отредактировав /etc/sysctl. conf или путем редактирования директивы Fs. file-max

Вы сможете увидеть текущее значение для открытых файлов с помощью команды

И вы можете менять значение по умолчанию, как показано ниже:

Вы можете проверить итог, как показано ниже

С помощью Sysctl command, изменения применяются до следующей повторная загрузки. Чтобы сделать конфигурацию постоянной, вы можете напрямую отредактировать /etc/sysctl. conf файл, как представлено ниже:

Читайте также: