Подробный гайд по настройке SELinux в ALT Linux
Важное примечание:
- В стандартных серверных Starter Kits ALT Linux SELinux по умолчанию не включён. Готовые политики SELinux доступны преимущественно в сертифицированных дистрибутивах Альт.
1. Проверка текущего состояния SELinux
# Проверка статуса SELinux
sestatus
# Просмотр текущего контекста безопасности пользователя
id -Z
# Просмотр активных политик
seinfo -r
2. Установка необходимых пакетов
# Установка базовых компонентов SELinux
sudo apt-get install selinux-policy-alt policycoreutils setools-console
# Дополнительные инструменты для анализа политик (опционально)
sudo apt-get install setools-gui checkpolicy libselinux-utils
Пакеты доступны в репозиториях ALT Linux Platform 10/11.
3. Первоначальная настройка SELinux
3.1. Редактирование конфигурационного файла
Откройте файл /etc/selinux/config:
sudo nano /etc/selinux/config
Установите параметры:
SELINUX=permissive # Режим обучения (рекомендуется для начала)
# SELINUX=enforcing # Строгий режим (после тестирования)
# SELINUX=disabled # Отключение
SELINUXTYPE=alt # Тип политики для ALT Linux
3.2. Настройка загрузчика GRUB
Отредактируйте /etc/sysconfig/grub2:
GRUB_CMDLINE_LINUX_DEFAULT='panic=30 quiet splash security=selinux selinux=1 enforcing=1'
Примените изменения:
sudo grub-mkconfig > /boot/grub/grub.cfg
3.3. Настройка PAM для SELinux
Добавьте в /etc/pam.d/newrole перед pam_namespace.so:
session required pam_exec.so debug /etc/security/alt.newrole/helper /etc/security/alt.newrole/config
В /etc/pam.d/common-login добавьте:
# Первый session-модуль
session required pam_selinux.so close
# Последний session-модуль
session required pam_selinux.so open verbose
3.4. Принудительная перемаркировка файлов
Создайте маркер для автоматической перемаркировки при следующей загрузке:
sudo touch /.autorelabel
3.5. Перезагрузка системы
sudo reboot
4. Управление пользователями и контекстами
4.1. Просмотр и настройка маппинга пользователей
# Просмотр текущих правил маппинга
semanage login -l
# Пример вывода:
# Имя входа Пользователь SELinux Диапазон MLS/MCS Служба
# __default__ generic_u s0 *
# root officer_u s0-s5:c0.c15 *
# Добавление правила для пользователя
semanage login -a -s generic_u -r s0-s3:c2.c14 username
# Изменение существующего правила
semanage login -m username -r s0-s4
4.2. Работа с контекстами файлов
# Просмотр контекста файла
ls -Z /path/to/file
# Временное изменение контекста
chcon -t httpd_sys_content_t /var/www/html/index.html
# Постоянное изменение контекста (через политику)
semanage fcontext -a -t httpd_sys_content_t "/var/www/html(/.*)?"
restorecon -Rv /var/www/html
# Восстановление контекстов по умолчанию
restorecon -Rv /
4.3. Запуск команд с определённым контекстом
ALT Linux предоставляет утилиту slrun для запуска команд в нужном контексте:
# Запуск команды с уровнем безопасности s1
slrun -l s1 -c sh -- -c '/usr/bin/id -Z > /tmp/output'
# Результат: generic_u:generic_r:generic_t:s1-s3
Важно:
slrunподготавливает окружение, но не позволяет командам работать с текущим терминалом, так как терминал сохраняет исходный контекст.
5. Режимы работы SELinux
| Режим | Описание | Команда переключения |
|---|---|---|
| enforcing | Блокировка нарушений политик | setenforce 1 |
| permissive | Логирование без блокировки | setenforce 0 |
| disabled | Полное отключение | Редактирование /etc/selinux/config |
# Проверка текущего режима
getenforce
# Временное изменение режима (до перезагрузки)
sudo setenforce 0 # permissive
sudo setenforce 1 # enforcing
6. Мониторинг и отладка
6.1. Просмотр логов нарушений
# Просмотр аудита нарушений
sudo ausearch -m avc -ts recent
# Анализ логов с помощью audit2allow
sudo ausearch -m avc -ts recent | audit2allow -w
# Генерация правил для добавления в политику
sudo ausearch -m avc -ts recent | audit2allow -M mypolicy
sudo semodule -i mypolicy.pp
6.2. Анализ политик с помощью SETools
# Поиск разрешений для типа
sesearch -A -s httpd_t -t httpd_sys_content_t -c file -p read
# Просмотр типов файлов
seinfo -t
# Анализ переходов между доменами
sesearch -T -s init_t
7. Сетевая маркировка (CIPSOv4)
ALT Linux поддерживает маркировку сетевых пакетов через CIPSOv4.
Настройка netlabel:
# Установка правил маркировки
cat > /etc/netlabel.rules << 'EOF'
cipsov4 add pass doi:1 tags:1
map del default
map add default protocol:cipsov4,1
map s0 off
EOF
# Активация правил при загрузке
sudo systemctl enable netlabel
sudo systemctl start netlabel
Особенности:
- IPv6 не поддерживается в текущей реализации политик ALT Linux
- Для
sshdможет потребоваться патчopenssh-5.2p1-allow-ip-opts.patchдля работы с IP-опциями CIPSO - ICMP-пакеты могут генерировать сообщения
unknown option 86(это ожидаемое поведение)
8. Интеграция с CUPS (печать)
Для работы SELinux с системой печати CUPS:
- Убедитесь, что CUPS собран с патчем
cups-1.6.1-rh-lspp.patch
2. В /etc/cups/cupsd.conf добавьте:
ClassifyOverride No
Classification selinux
- Закомментируйте
Listen *:631для работы через локальный сокет - Создайте баннеры в
/usr/share/cups/banners/с поддержкой переменнойsecurity-context
9. Обновление политик SELinux
При обновлении системы через apt-get dist-upgrade:
# 1. Проверьте текущий контекст (должен быть officer_u)
id -Z
# 2. Временно отключите строгий режим
sudo setenforce 0
# 3. Выполните обновление
sudo apt-get dist-upgrade
# 4. При необходимости перемаркируйте файлы
sudo touch /.autorelabel
# 5. Перезагрузите систему
sudo reboot
# 6. Верните режим enforcing (после проверки)
sudo setenforce 1
Важно:
- Начиная с Platform 10, пакеты с готовыми политиками
selinux-policy-altне собираются автоматически — их необходимо компилировать из Reference Policy.
10. Как отключить SELinux (если необходимо)
Если вы случайно включили SELinux и система не загружается корректно:
- Нажмите
Ctrl+Alt+F2для перехода в консоль - Войдите как
root
3. Отредактируйте файл:
nano /etc/selinux/config
4. Измените строку:
SELINUX=disabled
5. Сохраните файл и перезагрузитесь:
reboot
Рекомендация:
- Начинайте работу с SELinux в режиме
permissive, чтобы собрать статистику нарушений и настроить политики без риска блокировки легитимных операций. После тщательного тестирования переключайтесь в режимenforcing.
Данный гайд актуален для ALT Linux Platform 10/11. Для сертифицированных версий (СП, ФСТЭК) могут быть доступны дополнительные политики и инструменты управления.