Подробный гайд по настройке SELinux в ALT Linux

Гайд по настройке SELinux в ALT Linux: установка, политики, контексты файлов, аудит и защита системы.

2026.04.16                  


Подробный гайд по настройке SELinux в ALT LinuxПодробный гайд по настройке 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:

  1. Убедитесь, что CUPS собран с патчем cups-1.6.1-rh-lspp.patch

2. В /etc/cups/cupsd.conf добавьте:

   ClassifyOverride No
   Classification selinux
  1. Закомментируйте Listen *:631 для работы через локальный сокет
  2. Создайте баннеры в /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 и система не загружается корректно:

  1. Нажмите Ctrl+Alt+F2 для перехода в консоль
  2. Войдите как root

3. Отредактируйте файл:

   nano /etc/selinux/config

4. Измените строку:

   SELINUX=disabled

5. Сохраните файл и перезагрузитесь:

   reboot

Рекомендация:

  • Начинайте работу с SELinux в режиме permissive, чтобы собрать статистику нарушений и настроить политики без риска блокировки легитимных операций. После тщательного тестирования переключайтесь в режим enforcing.

Данный гайд актуален для ALT Linux Platform 10/11. Для сертифицированных версий (СП, ФСТЭК) могут быть доступны дополнительные политики и инструменты управления.