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‑систем на новый уровень.