We detected you are likely not from a Russian-speaking region. Would you like to switch to the international version of the site?

  Назад к списку статей

Практические рекомендации по использованию SELinux в Termux

Termux предоставляет полноценную Linux‑окружение на Android‑устройствах. Несмотря на ограниченный доступ к системе, безопасность остаётся критически важной задачей. SELinux (Security‑Enhanced Linux) — механизм мандатного контроля доступа, который уже встроен в Android и, соответственно, в Termux. В этой статье мы рассмотрим практические шаги по включению, настройке и использованию SELinux для защиты ваших скриптов и пакетов в Termux.

1. Что такое SELinux в контексте Termux

SELinux реализует политику доступа, основанную на контекстах безопасности. Каждый процесс и каждый объект файловой системы получает метку (security context), а набор правил определяет, какие операции разрешены. На Android SELinux работает в режиме enforcing по умолчанию, однако в Termux пользователь может переключаться между режимами и управлять политиками, не нарушая целостность системы.

2. Проверка текущего состояния SELinux

Перед началом работы важно убедиться, что SELinux активен и находится в нужном режиме. Выполните следующие команды:

getenforce

Результат будет Enforcing (режим принудительного применения) или Permissive (режим только логирования). Чтобы увидеть полные сведения о контексте текущего процесса:

ps -Z

Для получения информации о контекстах файлов в каталоге используйте:

ls -Z /data/data/com.termux/files/home

3. Переключение режима SELinux

В Termux переключение режима обычно требуется только в процессе отладки. Сделать это можно только под root‑доступом (например, через Magisk). Команда:

su -c "setenforce 0"   # Permissive

И вернуть в строгий режим:

su -c "setenforce 1"   # Enforcing

Помните, что постоянное использование режима Permissive снижает уровень защиты и не рекомендуется в продакшн‑окружении.

4. Управление контекстами файлов

Контекст задаётся атрибутом security context. Для изменения контекста используйте утилиту chcon:

# Пример: установить тип data_file_t для скрипта backup.sh
chcon -t data_file_t /data/data/com.termux/files/home/backup.sh

Если требуется изменить контекст рекурсивно в каталоге:

chcon -R -t bin_t /data/data/com.termux/files/usr/bin

Для восстановления контекстов согласно политике можно воспользоваться:

restorecon -R /data/data/com.termux/files/home

5. Создание и настройка пользовательских политик

В большинстве случаев базовой политики Android достаточно, однако иногда требуется разрешить специфические действия (например, доступ к сокетам или к определённым устройствам). Для этого:

  • Установите пакет policycoreutils в Termux:
pkg install policycoreutils
  • Создайте файл политики, например mytermux.te:
# mytermux.te
module mytermux 1.0;
require {
    type unconfined_t;
    type bin_t;
    class file { read execute };
    class process { transition };
}

# Разрешаем процессу unconfined_t выполнять файлы bin_t
allow unconfined_t bin_t:file { read execute };

Скомпилируйте и загрузите модуль:

checkmodule -M -m -o mytermux.mod mytermux.te
semodule_package -o mytermux.pp -m mytermux.mod
su -c "semodule -i mytermux.pp"

После загрузки проверьте, что новые правила применились, используя sesearch или audit2allow.

6. Аудит и анализ логов SELinux

Все отклонённые операции записываются в журнал audit. В Termux их можно просмотреть через logcat:

logcat | grep avc

Для более удобного анализа используйте утилиту audit2allow:

logcat | grep avc | audit2allow -w -a

Команда выведет человеческо‑читаемый список рекомендаций, какие правила добавить в политику.

7. Лучшие практики и рекомендации

  • Всегда работайте в режиме Enforcing в продакшн‑среде. Переключайте в Permissive лишь для отладки.
  • Минимизируйте привилегии процессов. Запускайте скрипты под отдельным типом (например, user_t) и задавайте им строгие контексты.
  • Регулярно проверяйте логи. Автоматизируйте сбор avc‑сообщений и их анализ.
  • Не изменяйте контексты системных файлов без необходимости. Используйте restorecon после тестов.
  • Документируйте пользовательские политики. Храните .te файлы в репозитории проекта.

8. Заключение

SELinux — мощный инструмент, позволяющий повысить уровень безопасности даже в ограниченной среде Termux. Правильная настройка контекстов, использование пользовательских политик и постоянный аудит позволяют минимизировать риск эксплуатации уязвимостей. Применяя описанные рекомендации, вы получаете надёжный контроль над доступом к файлам и процессам, сохраняя гибкость работы в мобильной Linux‑среде.

Если вы хотите внедрить SELinux в свои проекты, получить консультацию по построению безопасных политик или настроить автоматизированный аудит, команда RybinskLab готова помочь. Мы предоставляем услуги по аудиту безопасности, разработке кастомных SELinux‑модулей и обучению персонала. Свяжитесь с нами, чтобы вывести безопасность ваших Linux‑систем на новый уровень.

* Текст статьи подготовлен и структурирован с использованием технологий искусственного интеллекта. Проверен экспертом RybinskLab.

Поделиться знанием:

Нужна профессиональная помощь?

Меня зовут Усачёв Денис Евгеньевич. Я оказываю IT-услуги в Рыбинске и Ярославской области: настройка серверов, безопасность, автоматизация бизнеса.

Связаться со мной