SELinux
Отключение и изменение режимов работы
SELinux имеет конфигурационный файл /etc/sysconfig/selinux, в котором можно отключить SELinux или задать режим его работы при старте системы
# SELINUX= возможны только следующие значения: # enforcing - SELinux включен и блокирует все что не разрешено. # permissive - SELinux включен, но ничего не блокирует, только пишет в лог то что должен блокировать. # disabled - SELinux полностью выключен SELINUX=enforcing
Определение текущего режима работы SELinux
getenforce
Временное изменение режима работы, действует до следующей перезагрузки (если SELinux выключен, то изменить режим работы нельзя)
setenforce Permissive setenforce Enforcing
Анализ причин блокировки
cat /var/log/audit/audit.log | grep <имя_блокируемого_процесса_или_его_часть>
Контексты
# для работы с semanage установите пакет dnf install policycoreutils-python-utils # список каталогов с контекстом openvpn_etc_t semanage fcontext -l | grep openvpn_etc_t # добавление контекста openvpn_etc_t на каталог semanage fcontext --add -t openvpn_etc_t '<path>(/.*)?' # удаление контекста openvpn_etc_t с каталога semanage fcontext --delete -t openvpn_etc_t '<path>(/.*)?' # применение заданных контекстов к каталогу, всем подкаталогам и файлам restorecon -R -v <path> # проверка текущих контекстов ls -lZ <path>
Переключатели
Вывод списка всех переключателей и их значений
getsebool -a
Изменение состояния переключателя
setsebool -P param_name {on | off}
Работа с политиками
Вывод списка действующих политик
semodule -l | grep openvpn
Пример генерации собственной политики для openvpn по текущему логу блокировок
cd /tmp cat /var/log/audit/audit.log | grep openvpn | audit2allow -M openvpn-my # будут созданы два файла # openvpn-my.te — текстовое представление политики # openvpn-my.pp — скомпилированная политика, готовая к импорту
Импорт файла скомпилированной политики
semodule -i file.pp
Security
параметры безопасности SELinux
# отключение selinux grubby --update-kernel ALL --args selinux=0 reboot now # отменяем выключения selinux grubby --update-kernel ALL --remove-args selinux # запрет загрузки политик (фиксирует текущие политики и не позволяет их менять) # чтобы выключить этот параметр, придется отключить SELinux и перегрузить сервер setsebool -P secure_mode_policyload on # проверка значения параметра в текущей конфигурации getsebool -a | grep policyload secure_mode_policyload --> on
Lockdown
lockdown - механизм ядра, позволяющий ограничивать действия root, защита памяти ядра и процессов, запрет ручной загрузки модулей ядра, запрет ручной загрузки политик, запрет изменения важных параметров безопасности.
Для работы lockdown необходимо использовать UEFI SecureBoot. По умолчанию, в режиме UEFI при включенном SecureBoot, ядро загружается с параметром lockdown=integrity.
lockdown может находиться в трех состояниях:
- none - SecureBoot выключен, lockdown не работает
- integrity - запрещает изменять память процессов, ...
- confidentiality - запрещает изменять и читать память процессов, ...
lockdown запрещает загрузать политики SELinux на уровне вызовов ядра, в режиме confidentiality действуют более жесткие ограничения
# временное повышение уровня lockdown без перезагрузки # понижение уровня требует перезагрузки echo confidentiality > /sys/kernel/security/lockdown # переключение lockdown в режим confidentiality на этапе загрузки ОС grubby --update-kernel=ALL --args="lockdown=confidentiality" # проверка параметров загрузки ядра в текущей конфигурации grubby --info=DEFAULT | grep args # проверка, с какими параметрами загружено текущее ядро cat /proc/cmdline # проверка текущего режима lockdown, выделяется скобками [] cat /sys/kernel/security/lockdown none integrity [confidentiality]