Сравнение версий

Ключ

  • Эта строка добавлена.
  • Эта строка удалена.
  • Изменено форматирование.

Оглавление

Информация
titleДанная статья применима к:


Общая информация

Начиная с обновления Astra Linux Special Edition 1.8.2 в состав репозитория включен пакет kernel-profiles-manager, предоставляющий инструмент командной строки для управления параметрами ядра — kernel-profiles-manager. Инструмент предоставляет администратору системы, не обладающему специальными техническими знаниями:

  • возможность настроить конфигурацию ядра под потребности отдельно взятой системы на местах эксплуатации;
  • возможность обеспечивать соответствие ОС требованиям по аттестации рабочих мест используя только один вариант ядра - ядро общего назначения generic.

Инструмент поддерживает работу с наборами параметров — шаблонами и наборами шаблонов — профилями.

Термины



Параметр ядраАтрибут настройки ядра, значение которого определяет какой-либо аспект поведения ядра
ПрофильНабор шаблонов и параметров с указанием их значений. Предназначены для упрощения настройки. Предустановлены два профиля:
ШаблонНабор параметров ядра с указанием их значений, логически сгруппированный по тематикам. Шаблоны группируются в профили. Предназначены для упрощения настройки
Непривилегированный пользовательПользователь, по умолчанию не имеющий всех полномочий администратора ОС. Может иметь отдельные явно предоставленыне предоставленные полномочия — привилегии PARSEC – разрешающие такому пользователю выполнять определенные действия
Инструмент поддерживает работу с наборами параметров — шаблонами и наборами шаблонов — профилями.

Установка пакета

Пакет kernel-profiles-manager может быть установлен с помощью графического менеджера пакетов или из командной строки командой:

Command
sudo apt install kernel-profiles-manager

Использование инструмента

Общий синтаксис использования инструмента:

Command
kernel_profiles_manager [<действие>] <опция>...

Действия

ДействиеОписание действия
-l, --profiles-listВывести список названий всех профилей
-t, --templates-list <имя_профиля>Вывести список названий всех шаблонов, содержащихся в указанном профиле
-n, --profile-name <имя_профиля>Вывести список параметров ядра, содержащихся в указанном профиля
-c, --currentВывести название активного профиля
-m, --template <имя_шаблона>Вывести список параметров ядра, содержащихся в указанном шаблоне
-p, --change-profile <имя_профиля>Сменить активный профиль ядра на указанный
-d, --default-profileСменить активный профиль ядра на профиль, принятый по умолчанию (generic)
-v, --verify <имя_профиля>Проверить, совпадают ли параметры ядра активного профиля с указанным профилем

Профили и их влияние на работу ОС

Параметр ядра

Профиль Generic

Профиль Hardened

kernel.kptr_restrict

kernel.kptr_restrict=0

  • разрешается
Возможно
  • использование инструментов отладки:
    • профилирование и трассировка perf;
    • трассировка c использованием инструментов BPF;
  • отладчик gdb;
  • инструмент crash.

Непривилегированные пользователи с привилегией PARSEC_PERF_OWNER и администратор с высоким уровнем целостности могут использовать:

  • точки трассировки ядра;
  • BPF программы;
  • perf

Для всех непривилегированных пользователей разрешается hardening JIT компиляция BPF.
Непривилегированные пользователи с привилегией PARSEC_CAP_BPF_OWNER или администратор с высокой целостностью могут запускать BPF программы

kernel.kptr_restrict=2

  • ограничивается использование инструментов отладки.

Влияние на работу ПОИспользование инструментов отладки невозможно:

  • адреса ядра полностью скрыты, что делает perf бесполезным для анализа ядра;
  • инструменты зависящие от символов ядра (например, декодирование трассировок) не могут интерпретировать данные;
  • невозможно использование perf annotate для функций ядра;
  • загрузка символов ядра (vmlinux) заблокирована (ограничивает работу gdb и /proc/kcore);
  • инструменты BPF trace и funccount не могут работать (ограничивает работу eBPF (bpftrace));
  • инструмент crash не может разрешать адреса

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

  • не работают инструменты perf stat, perf record;
  • нельзя использовать kprobes;
  • не работают инструменты htop, systemtap;
  • контейнеры docker не могут собирать метрики производительности
kernel.kexec_load_disabled

kernel.kexec_load_disabled=0

  • разрешается использование инструментов kexec-tools и kdump-tools, в том числе

Защита оперативной памяти:

  • включается рандомизация памяти (адреса машинного кода JIT-компилированных программ случайным образом изменяются для усложнения эксплуатации уязвимостей);
  • неиспользуемая память заполняется, чтобы избежать утечек информации;
  • разрешается использование kexec-tools — прямое использование kexec в пространстве пользователя, позволяющее переключиться на другое ядро без перезагрузки;

kernel.kexec_load_disabled=1

  • запрещается использование инструментов kexec-tools и разрешается использование kdump-tools
Запрещает
  • .

Влияние на работу ПО:

  • запрещает загрузку нового ядра через kexec_load();
Блокирует
  • блокирует инициализацию механизма kexec на уровне ядра:
  • перестанет работать:
    • kdump
    ,
    • ;
    • Makedumpfile
    ,
    • ;
    • kexectools;
    перестанут работать
    • инструменты для восстановления системы (например, crash);
    перестанет работать
    • live-патчинг ядра
user.max_user_namespaces

user.max_user_namespaces=<ненулевое значение, установленное по умолчанию при установке системы>

  • разрешена Разрешена работа с контейнерами и песочницами (sandbox).
  • Разрешен доступ к /proc/<pid>/mem — интерфейсу доступа к правам отображения памяти (memory mapping) процесса.
    Используется именно этот вариант, а не более безопасный, так как могут перестать работать инструменты мониторинга

user.max_user_namespaces=0

  • ограничена работа с контейнерами.
  • запрещается создание новых пространств имен (namespaces);

Влияние на работу ПО:

  • уменьшает поверхность потенциальных атак за счет невозможности создания изолированного пространстсва;
  • может нарушаться работа:

Влияние на приложения:

  • может нарушаться работа
      • контейнерной виртуализации и песочниц (sandboxing-инструментов), в том числе работа docker;
      может нарушаться работа
      • служб systemd с включенным DynamicUser;
    • для непривилегированных пользователей может нарушаться работа сетевых инструментов, использующих сетевые пространства имен (network namespaces);
    • старые версии bpftrace и bcc-tools, BPF программы, зависящие от фиксированных адресов, перестают работать.

kernel.yama.ptrace_scope

kernel.yama.ptrace_scope=1

  • ограниченные возможности трассировки, по умолчанию трассировка разрешена только дочерним процессам.

kernel.yama.ptrace_scope=3

  • трассировка полностью запрещена.

Влияние на работу ПО:

  • может нарушаться работа приложения tuned;
  • запрещается работа:
    • приложений, использующих vm.dirty_ratio для управления кешем;
    запрещается работа
    • приложений
    ,
    • использующих любое принудительное изменение параметров памяти;
  • запрещается создание новых пространств имен (namespaces);
  • для непривилегированных пользователей может нарушаться работа сетевых инструментов, использующих сетевые пространства имен (network namespaces);
  • для непривилегированных пользователей может нарушаться работа сетевых инструментов, использующих сетевые пространства имен (network namespaces);
  • старые версии bpftrace и bcc-tools, BPF программы, зависящие от фиксированных адресов, перестают работать.
    • полностью запрещается работа ptrace, блокируются атаки, связанные с внедрением в процессы;
  • перестает работать отладчик gdb;
  • блокируются инструменты strace, ltrace, perf;
  • нарушается работа инструментов мониторинга, использующих ptrace

proc_mem.force_override

proc_mem.force_override=always

  • разрешается доступ к /proc/<pid>/mem — интерфейсу доступа к правам отображения памяти (memory mapping) процесса

proc_mem.force_override=never

  • запрещается доступ к /proc/<pid>/mem — интерфейсу доступа к правам отображения памяти (memory mapping) процесса.

Влияние на работу ПО

 

Влияние на производительность:

  • BPF программы работают медленнее;
  • приложений, использующие BPF, требуют больше процессорных ресурсов;
  • могут замедлиться операции ввода-вывода;
  • в высоконагруженных средах виртуализации может в возникать нехватка оперативной памяти из-за невозможности настройки выделения виртуальных ресурсов (overcommit)