Общая информация
Начиная с обновления Astra Linux Special Edition 1.8.2 в состав репозитория включен пакет kernel-profiles-manager, предоставляющий инструмент командной строки для управления параметрами ядра — kernel-profiles-manager. Инструмент предоставляет администратору системы, не обладающему специальными техническими знаниями:
- возможность настроить конфигурацию ядра под потребности отдельно взятой системы на местах эксплуатации;
- возможность обеспечивать соответствие ОС требованиям по аттестации рабочих мест используя только один вариант ядра - ядро общего назначения generic.
Инструмент поддерживает работу с наборами параметров — шаблонами и наборами шаблонов — профилями.
Термины
|
|
|---|
| Параметр ядра | Атрибут настройки ядра, значение которого определяет какой-либо аспект поведения ядра |
| Профиль | Набор шаблонов и параметров с указанием их значений. Предназначены для упрощения настройки. Предустановлены два профиля: |
| Шаблон | Набор параметров ядра с указанием их значений, логически сгруппированный по тематикам. Шаблоны группируются в профили. Предназначены для упрощения настройки |
| Непривилегированный пользователь | Пользователь, по умолчанию не имеющий всех полномочий администратора ОС. Может иметь отдельные явно предоставленные полномочия — привилегии PARSEC – разрешающие такому пользователю выполнять определенные действия |
Установка пакета
Пакет kernel-profiles-manager может быть установлен с помощью графического менеджера пакетов или из командной строки командой:
sudo apt install kernel-profiles-manager
Использование инструмента
Общий синтаксис использования инструмента:
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;
| kernel.kptr_restrict=2 - ограничивается использование инструментов отладки.
Влияние на работу ПО: - адреса ядра полностью скрыты, что делает perf бесполезным для анализа ядра;
- инструменты зависящие от символов ядра (например, декодирование трассировок) не могут интерпретировать данные;
- невозможно использование perf annotate для функций ядра;
- загрузка символов ядра (vmlinux) заблокирована (ограничивает работу gdb и /proc/kcore);
- инструменты BPF trace и funccount не могут работать (ограничивает работу eBPF (bpftrace));
- инструмент crash не может разрешать адреса
|
kernel.perf_event_paranoid | kernel.perf_event_paranoid=2 - все пользователи могут использовать:
- точки трассировки ядра (tracepoint);
- BPF программы;
- perf
| kernel.perf_event_paranoid=3 - использование инструментов отладки непривилегированными пользователями ограничено:
- не работают инструменты perf stat, perf record;
- нельзя использовать kprobes;
- не работают инструменты htop, systemtap;
- контейнеры docker не могут собирать метрики производительности
|
| Для всех непривилегированных пользователей hardening JIT компиляция BPF. JIT компиляция включает в себя: - сокрытие адресов памяти JIT-компилированных программ;
- страницы памяти, содержащие JIT-скомпилированный код, помечаются как доступные только для чтени
| kernel.bpf_jit_harden=2 - включается рандомизация памяти (адреса машинного кода JIT-компилированных программ случайным образом изменяются для усложнения эксплуатации уязвимостей);
- неиспользуемая память , чтобы избежать утечек информации;
- может нарушаться работа следующих программ:
- BPF интерпретатор;
- отладка через BPF из-за рандомизации памяти;
- старых версий bpftrace и bcc-tools, BPF программы, зависящих от фиксированных адресов;
- возможно замедление работы и увеличение нагрузки на процессор при работе BPF-программ
|
| kernel.kexec_load_disabled | kernel.kexec_load_disabled=0 - разрешается использование инструментов kexec-tools и kdump-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).
| user.max_user_namespaces=0 - ограничена работа с контейнерами.
- запрещается создание новых пространств имен (namespaces);
Влияние на работу ПО: - уменьшает поверхность потенциальных атак за счет невозможности создания изолированного пространстсва;
- может нарушаться работа:
- контейнерной виртуализации и песочниц (sandboxing-инструментов), в том числе работа docker;
- служб systemd с включенным DynamicUser;
- для непривилегированных пользователей может нарушаться работа сетевых инструментов, использующих сетевые пространства имен (network namespaces);
- старые версии bpftrace и bcc-tools, BPF программы, зависящие от фиксированных адресов, перестают работать.
|
| kernel.yama.ptrace_scope=1 - ограниченные возможности трассировки, по умолчанию трассировка разрешена только дочерним процессам.
| kernel.yama.ptrace_scope=3 - трассировка полностью запрещена.
Влияние на работу ПО: - может нарушаться работа приложения tuned;
- запрещается работа:
- приложений, использующих vm.dirty_ratio для управления кешем;
- приложений использующих любое принудительное изменение параметров памяти;
- полностью запрещается работа ptrace, блокируются атаки, связанные с внедрением в процессы;
- перестает работать отладчик gdb;
- блокируются инструменты strace, ltrace, perf;
- нарушается работа инструментов мониторинга, использующих ptrace
|
| proc_mem.force_override=always - разрешается доступ к /proc/<pid>/mem — интерфейсу доступа к правам отображения памяти (memory mapping) процесса
| proc_mem.force_override=never - запрещается доступ к /proc/<pid>/mem — интерфейсу доступа к правам отображения памяти (memory mapping) процесса.
Влияние на работу ПО: - BPF программы работают медленнее;
- приложений, использующие BPF, требуют больше процессорных ресурсов;
- могут замедлиться операции ввода-вывода;
- в высоконагруженных средах виртуализации может в возникать нехватка оперативной памяти из-за невозможности настройки выделения виртуальных ресурсов (overcommit)
|