Мобильные устройства становятся всё более ценными целями для злоумышленников. Обычные пользователи часто полагаются лишь на встроенные механизмы 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‑решений, разработка скриптов для автоматизации и обучение персонала. Свяжитесь с нами, чтобы вывести защиту вашего мобильного окружения на новый уровень.