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 для ограничения привилегий приложений и предотвращения эскалации прав

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

Termux предоставляет полноценную Linux‑среду на Android‑устройствах, но по умолчанию работает в контексте SELinux в режиме permissive. Это открывает возможности для приложений выполнять действия, которые могут привести к эскалации привилегий. Точная настройка SELinux‑политик позволяет ограничить доступ приложений к системным ресурсам и снизить риск эксплуатации.

Почему важно start (запускать) политику правильно

Понимание термина start в контексте «начало действия» помогает осознать, что каждый запуск процесса в Termux сопровождается проверкой SELinux‑правил. По определению, start – «to begin or come into being, activity, or operation»[merriam-webster.com](https://www.merriam-webster.com/dictionary/start). Точно так же, когда мы start‑им SELinux‑модуль, мы инициируем новую политику, которая будет контролировать дальнейшие действия приложений.

Проверка текущего режима SELinux в Termux

getenforce

Если вывод Permissive, значит политика не ограничивает действия. Для начала работы переключимся в Enforcing (только после создания тестовой политики).

Установка необходимых пакетов

pkg install root-repo
pkg install selinux policycoreutils checkpolicy

Пакет selinux содержит утилиты semodule, audit2allow и другие, а checkpolicy позволяет компилировать модули.

Создание собственного SELinux‑модуля

1. Создайте рабочий каталог:

mkdir -p ~/selinux/myapp
cd ~/selinux/myapp

2. Напишите файл политики myapp.te:

module myapp 1.0;

require {
    type untrusted_app;
    type termux_app;
    class file { read open };
    class process { execmem };
}

# Разрешаем только чтение конфигурационных файлов из /data/data/com.myapp/files
allow termux_app untrusted_app:file { read open };

# Запрещаем выполнение памяти (execmem) для приложений Termux
neverallow termux_app self:process execmem;

3. Скомпилируйте модуль:

checkpolicy -M -o myapp.pp myapp.te

4. Установите модуль в SELinux:

semodule -i myapp.pp

После установки SELinux будет проверять, что процессы Termux не могут использовать execmem, а доступ к файлам ограничен указанными правилами.

Отладка и аудит

Для анализа отклонённых запросов используйте журнал аудита:

audit2allow -w -a

Команда выводит рекомендации, какие разрешения можно добавить, если они действительно нужны. Важно не «разрешать всё», а тщательно оценить каждый запрос.

Автоматический запуск политики при старте Termux

Чтобы модуль загружался каждый раз при запуске Termux, добавьте команду в .bashrc:

if [ "$(getenforce)" = "Permissive" ]; then
    setenforce 1
    semodule -i ~/selinux/myapp/myapp.pp
fi

Это гарантирует, что политика будет активна даже после перезагрузки устройства.

Практические рекомендации

  • Всегда тестируйте новые модули в режиме Permissive перед переходом в Enforcing.
  • Регулярно проверяйте журнал /var/log/audit/audit.log на предмет новых отклонённых запросов.
  • Не используйте allow без чёткой причины – предпочтительно использовать neverallow для запрещения опасных действий.
  • Обновляйте пакеты selinux и policycoreutils после каждой версии Android, так как набор доступных классов может измениться.

Заключение

Точная настройка SELinux‑политик в Termux позволяет ограничить привилегии приложений, предотвратить эскалацию прав и повысить общую безопасность мобильного Linux‑окружения. Используя описанные выше шаги – проверку режима, создание собственного модуля, отладку через audit2allow и автоматический запуск – вы получаете надёжный контроль над тем, что может и чего не может делать каждый процесс.

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

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

Нужна помощь с настройкой Termux, Linux и серверов?

Я оказываю ИТ-услуги: настройка серверов, автоматизация, безопасность, помощь с Linux и инфраструктурой. Материалы сайта — только в ознакомительных и образовательных целях.

Связаться со мной
Поддержать проект