AltHa

Материал из ALT Linux Wiki


Введение

AltHa — это модуль (расширение) безопасности Linux, который в настоящее время имеет три варианта защиты пользовательского пространства:

  • игнорировать биты SUID в двоичных файлах (возможны исключения);
  • запретить запуск выбранных интерпретаторов в интерактивном режиме;
  • отключить возможность создания ссылок на открытый файл в выбранных каталогах.

Список активных модулей безопасности можно найти в файле /sys/kernel/security/lsm.

Включение модуля

Для включения модуля AltHa необходимо:

  1. Передать ядру параметр altha=1. Для этого в файле /etc/sysconfig/grub2 в строке GRUB_CMDLINE_LINUX_DEFAULT следует добавить опцию: altha=1. Например:
    # vim /etc/sysconfig/grub2
    ...
    GRUB_CMDLINE_LINUX_DEFAULT='vga=0x314  quiet resume=/dev/disk/by-uuid/187504b7-7f78-486d-b383-1b638370d3eb panic=30 splash altha=1'
    
  2. Обновить загрузчик, выполнив команду:
    # update-grub
    
  3. Перезагрузить систему.

Переменные модуля AltHa

Переменные модуля AltHa со значениями по умолчанию:

# sysctl -a | grep altha
kernel.altha.nosuid.enabled = 0
kernel.altha.nosuid.exceptions = 
kernel.altha.olock.dirs = 
kernel.altha.olock.enabled = 0
kernel.altha.rstrscript.enabled = 0
kernel.altha.rstrscript.interpreters =

При необходимости устанавливать эти переменные автоматически при каждой загрузке ОС, необходимо добавить их в файл /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

Результат выполнения команды:

  • 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

Результат выполнения команды:

  • 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"