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

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

Безопасность и hardening Termux‑установки: SELinux, AppArmor и пользовательские политики seccomp

Termux — удобная среда для разработки и администрирования прямо на Android-устройствах. Однако любая среда, где выполняются оболочка и сетевые инструменты, становится объектом внимания: от вредоносных скриптов до ошибочного запуска с повышенными правами.

Цель hardening — не «полностью запретить всё», а снизить поверхность атаки и упростить контроль: какие системные действия разрешены, какие системные вызовы допустимы, какие пути доступны, и насколько строго ограничены процессы.

В этой статье рассматриваются три направления: SELinux, AppArmor (как концепция и подход для сценариев с LSM/контейнеризацией) и пользовательские политики seccomp. Фокус — на практиках, которые применимы к типичным Android-сценариям и при этом не противоречат законодательству РФ.

Принципы безопасности, которые стоит заложить до SELinux/AppArmor/seccomp

Прежде чем углубляться в LSM и seccomp, важно выстроить базовые меры защиты, иначе «жёсткие» политики могут лишь усложнить диагностику.

  • Минимизация прав: не выдавайте доступы, в которых нет необходимости (например, системные разрешения приложению Termux).
  • Разделение привилегий: запускать опасные инструменты (парсеры, компиляторы, скачивание/распаковка архивов) лучше в изолированных сценариях.
  • Проверка источников: не устанавливать пакеты/скрипты из ненадёжных репозиториев без проверки.
  • Контроль файлов: храните чувствительные данные (ключи, токены) вне общедоступных каталогов, ограничивайте права на уровне файловой системы.

Далее — как это связано с SELinux/AppArmor и seccomp.

SELinux на Android: что реально можно контролировать

SELinux (Security-Enhanced Linux) на Android обычно включён на уровне ОС и задаёт правила для процессов. В большинстве «обычных» сценариев пользователь не может свободно менять SELinux-политики без root-доступа и соответствующей подготовки.

Тем не менее, есть практические подходы:

  • Используйте типовые контексты и не пытайтесь «ломать» метки, если нет строго контролируемой необходимости.
  • Проверяйте состояние SELinux, чтобы понимать, включён ли enforcing.
  • Ориентируйтесь на изоляцию через механизмы ОС (песочницы приложений Android), а уже затем — на seccomp для процессов внутри Termux (там, где это возможно).

Проверка режима SELinux (если устройство позволяет):

getenforce

Если команда недоступна, можно смотреть системные интерфейсы (при наличии прав и разрешений):

cat /sys/fs/selinux/enforce

Интерпретация:

  • Enforcing: политики применяются, правила SELinux активны.
  • Permissive: нарушения логируются, но не блокируются.

Важно: самостоятельные изменения SELinux-политик без понимания последствий могут привести к нестабильности и снижению безопасности. Для большинства пользователей правильный путь — не «переписать SELinux», а обеспечить безопасную конфигурацию Termux и процессы + использовать изоляцию приложений Android и секконфигурацию там, где уместно.

AppArmor: концептуальный подход и сценарии применения

AppArmor — другой механизм LSM, распространённый в Linux. На Android он встречается реже; однако концепция полезна: профили доступа и ограничения на набор ресурсов/операций для конкретных приложений или групп процессов.

В контексте Termux это чаще всего означает одно из двух:

  • Контейнеризация/виртуализация с отдельной Linux-средой, где AppArmor может быть доступен.
  • Инструментальные сценарии: перенос части задач в окружение, где LSM-профили реально применимы.

Пример того, как выглядит логика профиля в AppArmor (иллюстративно, без привязки к конкретной ОС Android):

# Пример-псевдоконфигурации (не применяйте без проверки наличия AppArmor)
# profile termux-secure /data/data/com.termux/files/usr/bin/bash {
#   network,
#   capability ipc_lock,
#   deny /data/ r,
#   deny /system/ r,
#   deny /proc/*/mem rw,
# }

Даже если AppArmor не доступен на вашем Android-устройстве, можно перенести принцип на практику: строго определить, какие пути и операции нужны, а какие — запрещены на уровне процесса (что и делает seccomp).

Seccomp user-space: ограничение системных вызовов для процессов

Seccomp (secure computing mode) позволяет фильтровать системные вызовы процесса. Для hardening это один из самых эффективных слоёв: даже при ошибке/компрометации внутри процесса вы ограничиваете набор действий, которые ему доступны на уровне ядра.

Ключевая идея: разрешить ровно то, что нужно, и запретить остальное. На практике это требует тестирования и аккуратной итерации.

Важно про ограничения:

  • Применимость зависит от доступности механизма и прав. На Android возможности могут отличаться в зависимости от ядра/версии/конфигурации.
  • Некорректные профили могут привести к падению программ. Поэтому внедряйте последовательно и с логированием/проверкой.

Базовая проверка поддержки seccomp (если доступна):

uname -a

Далее — практический подход: использовать обёртку/утилиту, которая применяет seccomp к конкретной команде. В Termux это обычно означает запуск инструмента через небольшой лаунчер в рамках политики, которую вы заранее подготовили.

Типовой сценарий внедрения:

  1. Выберите задачу, которую хотите ограничить (например, обработку локального файла, запуск сборщика без лишнего доступа к сети).
  2. Определите минимальные требования по системным вызовам (fs, сеть, память, процессы).
  3. Соберите профиль и проверьте в «тренировочном» режиме.
  4. Постепенно ужесточайте и закрепляйте результат.

Иллюстративный пример: запуск команды с профилем seccomp (схематично, адаптируйте под вашу реализацию и доступность на устройстве):

# Псевдокоманда-обёртка для примера логики:
# seccomp-run --profile hardened.json -- /data/data/com.termux/files/usr/bin/python -c "print('ok')"

Поскольку конкретные утилиты и формат профилей зависят от среды, безопасная рекомендация — поднимать профиль итеративно: сначала в режиме «наблюдение», затем в режиме блокировок. Если ваша среда позволяет, полезно собирать трассы системных вызовов и исключать лишнее.

Hardening Termux: практический чек-лист

Ниже — набор действий, которые можно выполнить на практике и которые хорошо дополняют SELinux и seccomp.

1) Ограничение файлов и чувствительных данных

Храните ключи/токены в приватной директории и задавайте права, чтобы другие процессы не могли читать лишнее.

mkdir -p $HOME/.secure
chmod 700 $HOME/.secure

Пример установки прав на файл:

chmod 600 $HOME/.secure/secret.key

2) Контроль источников пакетов и зависимостей

Ограничьте обновления и устанавливайте только необходимые пакеты. Это сокращает риск уязвимостей в сторонних компонентах.

apt update
apt upgrade

С точки зрения hardening, принцип простой: меньше пакетов — меньше поверхности атаки.

3) Снижение риска через «изолированные» рабочие сессии

Для работы с архивами/скриптами из внешних источников используйте отдельные рабочие директории и очищайте следы.

mkdir -p $HOME/work-isolated
cd $HOME/work-isolated

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

4) План внедрения seccomp без поломок

Начинайте с ограничений для конкретных команд, а не для всей оболочки. Это уменьшает риск «сломать» интерактивный uso (например, shell, менеджер пакетов, текстовые редакторы).

Рекомендуемая последовательность:

  • Сначала профилируйте задачу «в наблюдении».
  • Затем применяйте seccomp только к дочерним процессам (например, к интерпретатору, который выполняет потенциально опасный код).
  • После стабилизации расширяйте профиль на соседние команды.

5) Логирование и контроль инцидентов

Важный элемент hardening — видимость. Даже идеальная политика не защитит от всех ошибок, но позволит быстрее локализовать проблему.

Для SELinux ориентируйтесь на журнал ОС (доступность зависит от прошивки/прав). Для seccomp — используйте режимы отчётности вашей обёртки/раннера (если реализованы).

Типовые ошибки при hardening

  • Слишком агрессивный профиль без итераций: ломает сетевые/файловые операции, мешает работе и провоцирует «обход» ограничений.
  • Запрет на всё подряд: seccomp должен соответствовать бизнес-требованиям конкретной задачи.
  • Смешение доверенных и недоверенных задач в одном процессе: лучше изолировать контуры.

Заключение

Безопасность Termux достигается не одним «магическим» механизмом, а сочетанием уровней: доверенные практики работы, правильная файловая дисциплина, активность SELinux как системного барьера, концептуальные идеи AppArmor (через профили ресурсов) и, в наиболее перспективной части — пользовательские политики seccomp, ограничивающие системные вызовы ровно по потребности.

Если вы хотите быстро и безопасно внедрить hardening под ваши сценарии (разработка, администрирование, работа с архивами/скриптами, локальные сети и ограничения процессов), команда РыбинскЛАБ поможет подобрать оптимальную схему SELinux/seccomp и составить план внедрения без потери стабильности.

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

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

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

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