Вопрос или проблема
Я работаю с очень ограниченным клиентом (основанным на Poky из проекта Yocto), на который я хочу перенаправить все http/https запросы на свою другую машину в той же сети. У меня есть nftables
на целевом устройстве, и я проверил это, успешно сбросив все пакеты, направленные на порт 80.
sysctl net.ipv4.ip_forward
показывает 1
.
Я пробовал использовать следующий скрипт/список команд nft:
nft flush ruleset
nft add table ip nat
nft add chain ip nat prerouting { type nat hook prerouting priority 0 \; }
nft add chain ip nat postrouting { type nat hook postrouting priority 100 \; }
nft add rule ip nat prerouting tcp dport 80 dnat to 10.0.0.2:8080
nft add rule ip nat prerouting tcp dport 443 dnat to 10.0.0.2:8080
nft add rule ip nat postrouting masquerade
nft list ruleset
Чтобы протестировать настройку, я установил домен test.test
на 10.0.0.2 (через /etc/hosts
) на клиенте. На моей второй машине у меня есть Burp, который слушает на всех интерфейсах на порту 8080, и простой веб-сервер на порту 80 (python3 -m http.server 80
).
Затем я запускаю curl http://test.test
на клиенте. Я получаю список каталогов с моей машины Burp, но перенаправление через burp не происходит.
Что еще я мог бы попробовать, чтобы заставить все исходящие пакеты на порты 80 или 443 проходить через мой Burp. Проблемы с сертификатами можно игнорировать для базовой настройки.
В моем очень специфическом случае мне кажется, что я должен обратить внимание на выходную цепочку, а не на цепочку предварительной маршрутизации. Следующая настройка работает для меня:
nft flush ruleset
nft add table nat
nft add chain ip nat output { type nat hook output priority 0 \;}
nft add rule ip nat output tcp dport 80 dnat to 10.0.0.2:8080
nft add rule ip nat output tcp dport 443 dnat to 10.0.0.2:8080
nft list ruleset
Ответ или решение
Для перенаправления всех исходящих HTTP и HTTPS запросов на машину с Burp, используя nftables
, в вашем случае правильней всего использовать цепочку output
вместо prerouting
. Это связано с тем, что при использовании prerouting
нельзя корректно перехватывать соединения, инициируемые локальным приложением. Рассмотрим более подробно настройку и реализацию.
Шаги по перенаправлению HTTP/HTTPS запросов
-
Очистка существующего набора правил: Начнем с очистки текущего набора правил
nftables
, чтобы исключить конфликты.nft flush ruleset
-
Создание таблицы и цепочки для NAT: Создаем таблицу
nat
и цепочкуoutput
, которая будет перехватывать исходящие запросы.nft add table nat nft add chain ip nat output { type nat hook output priority 0; }
-
Добавление правил для перенаправления: Добавляем правила для перенаправления всех запросов на порты 80 (HTTP) и 443 (HTTPS) к Burp, который работает на IP-адресе
10.0.0.2
и порту8080
.nft add rule ip nat output tcp dport 80 dnat to 10.0.0.2:8080 nft add rule ip nat output tcp dport 443 dnat to 10.0.0.2:8080
-
Просмотр текущего набора правил: Чтобы убедиться, что все правила добавлены корректно, вы можете вывести текущий набор правил.
nft list ruleset
Объяснение процесса
-
Цепочка output: Использование цепочки
output
позволяет перехватывать и модифицировать пакеты, исходящие от вашего компьютера. Это особенно важно, если приложения инициируют соединения напрямую. -
dnat: В данном случае правило
dnat
(Destination Network Address Translation) меняет адрес назначения пакетов, таким образом, все запросы на порты 80 и 443 будут перенаправлены на Burp, который слушает на порту 8080.
Тестирование конфигурации
Для тестирования настроенной конфигурации вы можете использовать команды curl
или браузер. Например, выполните команду:
curl http://test.test
Это должно вернуть ответ от вашего сервера, который обрабатывается Burp.
Возможные проблемы и их решения
-
Firewall: Убедитесь, что на вашей системе не работают другие файерволы или фильтры, которые могут блокировать или изменять ваши правила.
-
SSL/TLS: Хотя в вашем случае вы игнорируете проблемы с сертификатами, учтите, что при работе с HTTPS соединениями могут возникнуть сложности. Важно установить необходимый серверный сертификат на Burp для корректной работы. Для этого вам необходимо установить в системе ваш Burp CA сертификат.
Заключение
Использование nftables
в качестве инструмента для перенаправления трафика на локальный тестовый сервер весьма эффективно. При надлежащей настройке вы сможете направлять весь исходящий HTTP и HTTPS трафик через Burp для дальнейшего анализа и отладки. Убедитесь, что ваша конфигурация проверена и протестирована, чтобы избежать возможных проблем при тестировании.
Если у вас возникнут дополнительные вопросы или потребуется помощь в настройке, не стесняйтесь обращаться за поддержкой.