Termux превращает Android‑устройство в полноценную Linux‑среду, однако по умолчанию большинство команд работает в контексте пользователя u0_aXXX с широкими правами доступа к файловой системе и сети. Для повышения безопасности необходимо задействовать механизмы контроля доступа, предоставляемые SELinux (Security‑Enhanced Linux) и AppArmor.
Почему SELinux и AppArmor важны в Termux
Android уже использует SELinux в режиме enforcing, но приложения часто работают в режиме permissive из‑за ограничений OEM. Это открывает путь для злоумышленников к эскалации привилегий через уязвимости терминального окружения. AppArmor, хотя и не включён в ядро Android по умолчанию, может быть добавлен через termux-modules и позволяет описывать профили доступа на уровне отдельного процесса.
Проверка текущего состояния SELinux
getenforce
Если вывод Permissive, система не будет блокировать нарушения политик, а лишь записывать их в журнал. Чтобы увидеть текущие контексты процессов Termux, выполните:
ps -Z | grep termux
Переключение в режим Enforcing (только для отлаженных устройств)
Для большинства пользователей рекомендуется оставить SELinux в режиме Permissive и использовать AppArmor для более гибкого контроля. Однако на отлаженных ROM можно переключить режим:
su -c "setenforce 1"
После переключения проверьте статус:
getenforce
Создание пользовательской политики SELinux для Termux
1. Установите необходимые инструменты:
pkg install -y selinux-tools sepolicy
2. Сгенерируйте базовый шаблон политики:
sepolicy generate -t u:object_r:app_data_file:s0 -n termux_app
3. Отредактируйте файл termux_app.te, добавив правила ограничения. Пример – запрет доступа к /sdcard:
deny termux_app self:file { read write execute };
4. Скомпилируйте и загрузите политику:
checkmodule -M -m -o termux_app.mod termux_app.te
semodule_package -o termux_app.pp -m termux_app.mod
su -c "semodule -i termux_app.pp"
После загрузки новых правил любые попытки доступа к запрещённым ресурсам будут фиксироваться в dmesg и logcat.
Включение AppArmor в Termux
AppArmor не входит в стандартный образ Android, но его можно добавить через модуль termux-modules:
pkg install -y termux-modules
termux-modules install apparmor
После установки создайте профиль для нужного скрипта или бинарника. Пример – ограничить доступ к сети:
# /data/data/com.termux/files/usr/etc/apparmor.d/termux_myapp
profile termux_myapp flags=(attach_disconnected) {
# Разрешаем только чтение файлов в домашней директории
file,
# Запрещаем любые сетевые соединения
network deny,
# Разрешаем только стандартные системные вызовы
capability,
}
Активируйте профиль:
aa-enforce /data/data/com.termux/files/usr/etc/apparmor.d/termux_myapp
Практический пример: ограничение доступа к камере и микрофону
Для скриптов, работающих с медиа‑данными, часто требуется строгий контроль. Добавьте в SELinux‑политику:
# Разрешаем только чтение из /dev/video0 и /dev/snd/*
allow termux_app self:chr_file { read };
И в AppArmor‑профиле:
profile termux_camera_app {
# Доступ к видеоустройству только для чтения
/dev/video0 r,
# Доступ к аудио‑устройствам только для чтения
/dev/snd/** r,
# Запрещаем любые сетевые запросы
network deny,
}
Отладка и мониторинг нарушений
Для SELinux используйте:
dmesg | grep avc
logcat | grep avc
Для AppArmor:
aa-logprof
journalctl -k | grep apparmor
Эти журналы помогут быстро определить, какие правила необходимо скорректировать.
Автозапуск пользовательских политик при старте Termux
Для постоянного применения политик рекомендуется добавить их в скрипт ~/.termux/boot.sh (пакет termux-boot):
# ~/.termux/boot.sh
#!/data/data/com.termux/files/usr/bin/sh
# Применяем SELinux‑политику
su -c "semodule -i /data/data/com.termux/files/usr/termux_app.pp"
# Включаем AppArmor‑профиль
aa-enforce /data/data/com.termux/files/usr/etc/apparmor.d/termux_myapp
Не забудьте сделать скрипт исполняемым:
chmod +x ~/.termux/boot.sh
Связанные команды «start» в контексте Termux
Для запуска фоновых сервисов в Termux часто используют команду termux-services start <service>. Слово start имеет широкое значение в английском языке – «начинать, запускать», как описано в словарях [dictionary.cambridge.org](https://dictionary.cambridge.org/us/dictionary/english/start) и [dictionary.com](https://www.dictionary.com/browse/start). Это подчёркивает важность правильного управления процессом start в безопасной среде.
Заключение
Тонкая настройка SELinux и AppArmor в Termux позволяет существенно повысить уровень защиты Android‑устройства, ограничивая привилегии приложений и предотвращая потенциальную эскалацию прав. При правильном использовании политик, мониторинге журналов и автоматическом применении правил вы получаете гибкую, но надёжную среду для разработки и эксплуатации.
Если вам требуется профессиональная аудит‑безопасности, разработка кастомных политик SELinux/AppArmor или настройка безопасного CI/CD пайплайна в Termux, команда RybinskLab готова помочь. Мы предоставляем услуги по консалтингу, обучению и внедрению лучших практик защиты мобильных Linux‑окружений.