Операционная система должна предоставлять возможность запрета запуска выбранных интерпретаторов в интерактивном режиме, отключения возможности удаления открытых файлов, а также установки запрета бита исполнения (SUID), распространяемого на дочерние процессы.
https://www.altlinux.org/AltHa
AltHa — это модуль безопасности Linux, который в настоящее время имеет три варианта защиты пользовательского пространства:
- игнорировать биты SUID в двоичных файлах (возможны исключения);
- запретить запуск выбранных интерпретаторов в интерактивном режиме;
- отключить возможность удаления открытых файлов в выбранных каталогах.
Для включения модуля AltHa необходимо передать ядру параметр altha=1
. Для этого в файле /etc/sysconfig/grub2
в строке GRUB_CMDLINE_LINUX_DEFAULT
следует добавить опцию: altha=1
.
Обновить загрузчик, выполнив команду:
update-grub
Перезагрузить систему.
Модуль альтератора:
alterator-secsetup
После перезагрузки модуль будет доступен через Центр управления системой - Система - Настройки безопасности
Отключение влияния бита SUID на привилегии порождаемого процесса в графическом интерфейсе
В открывшемся окне следует отметить пункт Отключить влияние suid бита на привилегии порождаемого процесса и нажать кнопку Применить Исключения это список включенных двоичных файлов SUID, разделённых двоеточиями.
Переменные модуля AltHa
Переменные модуля AltHa со значениями по умолчанию:
sysctl -a | grep altha
![[sysctl altha.png]]
При необходимости устанавливать эти переменные автоматически при каждой загрузке ОС, необходимо добавить их в файл /etc/sysctl.conf
.
После редактирования sysctl.conf
применить изменения, без перезагрузки ОС, можно выполнив команду:
sysctl -p
Примечание: Для изменения значений переменных модуля AltHa можно также воспользоваться модулем ЦУС Настройки безопасности.
Запрет бита исполнения (SUID)

При включенном подмодуле altha.nosuid
, биты SUID во всех двоичных файлах, кроме явно перечисленных, игнорируются в масштабе всей системы.
Для включения запрета бита исполнения следует установить параметр kernel.altha.nosuid.enabled
в 1
:
sysctl -w kernel.altha.nosuid.enabled=1
И добавить, если это необходимо, исключения (список включенных двоичных файлов SUID, разделенных двоеточиями), например:
sysctl -w kernel.altha.nosuid.exceptions="/bin/su:/usr/libexec/hasher-priv/hasher-priv"
Проверка состояния режима запрета бита исполнения выполняется командой:
sysctl -n kernel.altha.nosuid.enabled
Результат выполнения команды:
- 1 — режим включен;
- 0 — режим выключен.
Блокировка интерпретаторов (запрет запуска скриптов)
При включении блокировки интерпретаторов блокируется несанкционированное использование интерпретатора для выполнения кода напрямую из командной строки.
Для включения режима блокировки интерпретаторов следует установить значение переменной kernel.altha.rstrscript.enabled
равным 1
:
sysctl -w kernel.altha.rstrscript.enabled=1
Переменная kernel.altha.rstrscript.interpreters
должна содержать разделенный двоеточиями список ограниченных интерпретаторов. Для изменения значения переменной kernel.altha.rstrscript.interpreters
выполнить команду:
sysctl -w kernel.altha.rstrscript.interpreters="/lib64/ld-linux-x86-64.so.2:/usr/bin/python:/usr/bin/python3:/usr/bin/perl:/usr/bin/tclsh"
Примечание: В этой конфигурации все скрипты, начинающиеся с
#!/usr/bin/env python
, будут заблокированы.
Предлагается вносить ld-linux
в этот список, чтобы через него нельзя было запустить заблокированный интерпретатор, тем самым обойдя блокировку.
Проверка состояния режима запрета бита исполнения выполняется командой:
sysctl -n kernel.altha.rstrscript.enabled
Результат выполнения команды:
- 1 — режим включен;
- 0 — режим выключен.
Список заблокированных интерпретаторов:
sysctl -n kernel.altha.rstrscript.interpreters
/usr/bin/python:/usr/bin/python3:/usr/bin/perl:/usr/bin/tclsh
Отключение возможности удаления открытых файлов
Примечание: Использовать этот механизм не рекомендуется.
Для отключения возможности удаления открытых файлов следует установить значение переменной kernel.altha.olock.enabled
равным 1
:
sysctl -w kernel.altha.olock.enabled=1
Переменная kernel.altha.olock.dirs
должна содержать разделенный двоеточиями список каталогов, например: /var/lib/something:/tmp/something
. Для изменения значения переменной kernel.altha.olock.dirs
следует выполнить команду:
sysctl -w kernel.altha.olock.dirs="/var/lib/something:/tmp/something"