AltHa
Введение
AltHa — это модуль (расширение) безопасности Linux, который в настоящее время имеет три варианта защиты пользовательского пространства:
- игнорировать биты SUID в двоичных файлах (возможны исключения);
- запретить запуск выбранных интерпретаторов в интерактивном режиме;
- отключить возможность создания ссылок на открытый файл в выбранных каталогах.
Список активных модулей безопасности можно найти в файле /sys/kernel/security/lsm.
Включение модуля
Для включения модуля AltHa необходимо:
- Передать ядру параметр 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'
- Обновить загрузчик, выполнив команду:
# update-grub
- Перезагрузить систему.
Переменные модуля 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
Запрет бита исполнения (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"
Предлагается вносить 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"