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

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

Защита мобильного устройства: использование firewall‑правил в Termux

Мобильные устройства становятся всё более ценными целями для злоумышленников. Обычные пользователи часто полагаются лишь на встроенные механизмы Android, но они не дают гибкого контроля над сетевым трафиком. В Termux можно установить полноценный iptables (или nftables) и создать собственный firewall, который будет работать в режиме пользователя, без необходимости рутировать устройство.

Зачем нужен firewall на Android?

  • Блокировка нежелательного входящего трафика (например, попыток сканирования портов).
  • Ограничение исходящих соединений приложений, которые могут передавать личные данные.
  • Защита от рекламных и трекер‑скриптов, которые используют скрытые порты.
  • Уменьшение риска эксплуатации уязвимостей в сетевых сервисах, включённых по умолчанию.

Termux и возможности firewall

Termux предоставляет полноценную Linux‑среду, где доступны пакеты iptables, iptables‑persist и nftables. Выбирая между ними, следует учитывать:

  • iptables — более привычный синтаксис, широкая поддержка в учебных материалах.
  • nftables — современный заменитель, поддерживает более гибкие правила и один‑единственный набор таблиц.

В этой статье мы покажем примеры с iptables, но переход на nftables выполняется аналогично.

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

pkg update && pkg upgrade -y
pkg install iptables iptables-utils termux-services -y

При необходимости можно установить nftables:

pkg install nftables -y

Базовые правила firewall

Ниже представлен набор базовых правил, который подходит для большинства пользователей. Он позволяет:

  • Разрешать локальный (loopback) трафик.
  • Блокировать все входящие соединения, кроме необходимых (DNS, HTTP/HTTPS).
  • Разрешать исходящие соединения из приложений, запущенных в Termux.
# Сбросить все текущие правила
iptables -F
iptables -X
iptables -t nat -F
iptables -t mangle -F

# Установить политику "DROP" для входящего и пересылаемого трафика
iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT ACCEPT

# Разрешить трафик на интерфейсе loopback
iptables -A INPUT -i lo -j ACCEPT
iptables -A OUTPUT -o lo -j ACCEPT

# Разрешить ответы на исходящие запросы (ESTABLISHED,RELATED)
iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT

# Разрешить DNS (UDP/53 и TCP/53) – важно для работы приложений Termux
iptables -A OUTPUT -p udp --dport 53 -j ACCEPT
iptables -A OUTPUT -p tcp --dport 53 -j ACCEPT

# Разрешить HTTP/HTTPS (TCP/80,443) для обычного веб‑трафика
iptables -A OUTPUT -p tcp --dport 80 -j ACCEPT
iptables -A OUTPUT -p tcp --dport 443 -j ACCEPT

# При необходимости открыть порт для собственного сервера (пример: 8080)
# iptables -A INPUT -p tcp --dport 8080 -j ACCEPT

# Сохранить правила (для iptables‑persist)
iptables-save > $PREFIX/etc/iptables.rules

Эти правила можно адаптировать под свои нужды, добавляя или убирая отдельные -A INPUT и -A OUTPUT правила.

Сохранение и восстановление правил

Чтобы правила не исчезали после перезапуска Termux, используем пакет iptables-utils:

# Сохранить текущие правила
iptables-save > $PREFIX/etc/iptables.rules

# Восстановить правила при старте Termux (например, в ~/.bashrc)
iptables-restore < $PREFIX/etc/iptables.rules

Можно также создать отдельный скрипт ~/.termux/boot/start-firewall.sh и включить его в termux-services:

# Создаём скрипт
cat > $HOME/.termux/boot/start-firewall.sh <<'EOF'
#!/data/data/com.termux/files/usr/bin/bash
iptables-restore < $PREFIX/etc/iptables.rules
EOF
chmod +x $HOME/.termux/boot/start-firewall.sh

# Добавляем сервис
termux-service enable start-firewall
termux-service start start-firewall

Теперь firewall будет автоматически загружаться после каждой перезагрузки устройства.

Тестирование правил

Для проверки корректности работы firewall удобно использовать утилиты curl, nc (netcat) и iptables -L -v -n:

# Проверяем открытый порт (пример: 8080)
c -zv 127.0.0.1 8080

# Пытаемся выполнить запрос к запрещённому порту (например, 22)
c -zv example.com 22 || echo "Port 22 blocked"

# Показать статистику по правилам
iptables -L -v -n

Если правило блокирует соединение, то вы получите сообщение об ошибке соединения, а счётчики в iptables -L покажут, какие правила отработали.

Лучшие практики безопасности

  • Минимальное открытие портов. Открывайте только те, которые действительно нужны.
  • Регулярно проверяйте правила. Используйте iptables -L -v -n для мониторинга.
  • Обновляйте пакеты. Команды pkg update && pkg upgrade помогут своевременно получать исправления.
  • Логирование. При необходимости добавьте правило с -j LOG перед -j DROP для записи подозрительных пакетов в logcat.
  • Изоляция приложений. Запускайте сетевые сервисы внутри Termux, а не в системных приложениях Android.

Заключение

Настройка собственного firewall в Termux позволяет получить контроль над сетевым трафиком мобильного устройства, который недоступен в стандартных настройках Android. С помощью простых правил iptables можно блокировать нежелательные соединения, ограничивать исходящий трафик и защищать личные данные от утечек.

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

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

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

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

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

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