Меню Рубрики

Tor роутер на базе raspberry

Делаем на основе Raspberry Pi и TOR анонимную точку доступа

От использования сети TOR меня удерживала необходимость каждый раз иметь дело с программными настройками, хотелось какого-то более общего решения, вынесенного за пределы используемого ПК. На днях я наткнулся на этот проект и понял, что он решил бы все мои затруднения. Но так как проект был заморожен, в целях эксперимента в голову пришла идея создать такую точку доступа самому.

Теперь вот этот Raspberry Pi (ну, красненький!) раздает анонимный интернет в рамках моей квартиры:

В этой статье я расскажу, как научил свою «малину» выполнять функции точки доступа с направлением всего TCP-трафика через сеть TOR. Прошу под кат.

Подготовка

Итак, что же нам потребуется:

  • 1 x Raspberry Pi
  • 1 x USB WiFi-адаптер

Свои Raspberry Pi я покупал здесь, однако в доставке в Российскую Федерацию было отказано с отсылкой на «too unpredictable post service», так что для многих удобней будет воспользоваться следующим магазином или найти что-то третье.

WiFi-адаптер был выбран вот такой — Nano WiFi Dongle.

Начнем настройку, исходя из того, что на «малину» уже установлена ОС Raspbian. Предустановленный актуальный образ всегда можно получить на официальном сайте устройства или же пройти весь процесс с нуля, скачав установщик.

Первым делом подключаем устройство к проводной сети и ставим необходимое ПО, прочие пакеты либо уже установлены в системе, либо будут установлены по зависимостям:

На этом подготовительная часть завершена.

Настройка точки доступа

Физически подключаем WiFi-адаптер и добавляем в файл /etc/network/interfaces строки:

Настраиваем hostapd — демон, превращающий наше устройство в точку доступа. Для начала указываем путь к конфигурационному файлу в /etc/default/hostapd:

Далее заполняем уже сам файл настроек, /etc/hostapd/hostapd.conf:

Немного нетривиально производится активация стандарта 802.11n, которую данный адаптер поддерживает:

Простое изменение параметра hw_mode в значение «n» привело к отрицательному результату, беспроводное соединение не поднялось после перезапуска:

Оказывается, hw_mode следует оставить в значении «g», но добавить строку «ieee80211n=1», что и делаем, попутно перезапуская демон:

Далее производим настройку DHCP, редактируя файл /etc/dhcp/dhcpd.conf:

Не забываем перезапустить сервис:

Настройка TOR

Весьма проста, т.к. мы не используем устройство в качестве точки выхода или relay-сервера, только осуществляем вход в сеть TOR. Для этого приведем файл /etc/tor/torrc к такому виду:

Настройка форвардинга пакетов

Быстро активируем форвардинг на уровне ядра:

Настраиваем iptables для направления всего клиентского tcp-трафика в сеть TOR, оставляя доступ по SSH и DNS-запросы:

Строго говоря, есть и иные варианты конфигурирования. Так, можно настроить точку доступа на простой форвардинг пакетов в «обычную» сеть при сохранении доступа к псевдо-доменам в зоне «.onion». Подробнее здесь.

Завершение и проверка

После чисто формальной перезагрузки наше устройство будет готово раздавать анонимный интернет:

Теперь попробуем подключиться с ноутбука, телефона или планшета, а визит на эту страницу позволит определить, все ли настроено корректно, вот пример сообщения об успехе:

Надо заметить, что в реальности сервис проверки TOR, скорее всего, дополнительно предложит Вам установить Tor Browser Bundle и это не случайно. Важно понимать, что само по себе использование сети TOR не даст полной гарантии анонимности и такие браузеры, как IE, Chrome и Safari вполне могут продолжать отправлять какие-либо сведения о пользователе.

Кроме того, подобный метод ни в коем случае не гарантирует полной защиты, для более надежной анонимизации следует изучить вот эту подборку статей.

Надеюсь, рецепт будет полезен, буду рад дополнениям!

Источник

TOR роутер на базе Raspberry с поддержкой VPN.

В этой статье будет рассказано об одном из вариантов получения переносного решения с Tor, VPN и обфускацией, к которому можно подключить свои мобильные устройства, ПК или ноутбук. Постановка задачи: получить одноплатный компьютер, который можно подключить к своему ноутбуку/ПК/мобильному устройству и который будет заворачивать трафик сначала в VPN, затем в Tor, обфусцировать с помощью obfs-proxy и отправлять на удаленный VPN-сервер.

Постановка задачи: получить одноплатный компьютер, который можно подключить к своему ноутбуку/ПК/мобильному устройству и который будет заворачивать трафик сначала в VPN, затем в Tor, обфусцировать с помощью obfs-proxy и отправлять на удаленный VPN-сервер.

1) Одноплатный компьютер. В моем случае это Raspberry Pi модель B+;
2) ОС Raspbian. Для данной статьи использовалась Raspbian Jessie, билд от 18-03-2016;
3) Карта памяти (Micro SD);
4) Картридер;
5) Беспроводной адаптер или переходник ethernet to usb;
6) Удаленный OpenVPN сервер.

1) eth-eth

2) wlan-eth

3) wlan-wlan

4) eth-wlan

1. SBC — одноплатный компьютер;
2. CR — устройство, через которое осуществляется доступ в Интернет. Устройство не обязательно может быть подключено напрямую в порт SBC;
3. PC — какой-либо компьютер (или мобильное устройство) подключаемое к SBC;
4. VPN-server — целевой VPN сервер;
5. Входной интерфейс — физический интерфейс, куда поступает клиентский трафик;
6. Выходной интерфейс — физический интерфейс, с которого трафик уходит в Интернет.

В статье рассматривается случай, когда параметры для линка в интернет приходят по DHCP или задаются статически. Для случаев с получением параметров для линка по L2TP, PPPoE или иных ситуаций настройка будет отличаться. Также будем считать, что для удобной работы VPN-сервер выступает как DNS-relay.

Установка системы и подключение

На официальном сайте Rasbian присутствуют очень подробные инструкции для записи образа для Linux, Mac OS и Windows, поэтому я не буду описывать процесс записи образа ОС на карту памяти, чтобы не загромождать статью. По своим наблюдением могу сказать, что лучше брать карту от 16 Гб, чтобы избежать в будущем проблем с нехваткой памяти.

С подключением к плате после записи образа и включения может быть несколько вариантов:

1) Если у вас есть специальный экран/монитор/телевизор c поддержкой hdmi, то достаточно его подключить по hdmi;
2) Если экрана нет, но параметры на физический интерфейс приходят по DHCP, то можно просканировать сеть nmap-ом с другого компьютера и подключиться по ssh. Пользователь pi, пароль raspberry;
3) Если нет DHCP, то можно отредактировать файл /etc/network/interfaces и прописать туда адреса вручную.

Форвардинг трафика

Для того, чтобы трафик пересылался с одного интерфейса на другой, необходимо, чтобы был включен соответствующий параметр ядра Linux. Это можно сделать с помощью команды:

Для проверки можно использовать команду:

Она должна вернуть «1».

iptables

Для того, чтобы упростить маршрутизацию трафика, включим маскардинг для туннельного интерфейса с помощью iptables:

Вместо этого можно было бы прописать статические маршруты и статический адрес для клиента. Или использовать ccd.

Установка пакетов

Обновить репозитории и получить обновления:

Установка из репозиториев:

Если вы хотите схему с точкой доступа, то помимо этого установим hostapd и DHCP-cервер:

Вместо isc-dhcp-server вполне может быть использован любой другой. В репозиториях часто содержаться не самые последние версии, поэтому можно собрать пакеты из исходников, но если вам нужно получить быстрое решение, то подойдет и установка из репозитория.

Настройка сетевого подключения

Данный вариант является самым простым. На физическом интерфейсе Raspberry Pi, к которому подключается ПК, достаточно настроить статический адрес. На ПК также задать параметры вручную. Также можно настроить isc-dhcp-server, чтобы он выдавал параметры. На клиентской машине на Linux для первоначальной настройки достаточно выполнить команды:

А в файл /etc/resolv.conf добавить запись:

В данной схеме входным интерфейсом будет беспроводной интерфейс, работающий в режиме точки доступа. Вместо режима полноценной точки доступа можно настроить режим Ad-hoc.

Для организации wi-fi точки доступа с DHCP я использовал связку hostapd и isc-dhcp-server, но не обязательно использовать именно эту связку. На хабре есть несколько очень подробных статей по настройке различных вариантов в Linux. Ссылки я привел в источниках.

Привожу пример своих настроек:

Сразу стоит оговориться, что у некоторых могут возникнуть проблемы с драйверами и работой беспроводной карточки в режиме точки доступа. Лучше поинтересоваться такими вещами заранее. У меня была такая проблема для одной из моих карт при работе вместе с hostapd из репозитория. Проблема решилась патчем hostapd.

Часть с настройкой входного интерфейса ничем не отличается от предыдущей схемы. Выходной интерфейс необходимо подключить к точке доступа. Пример подключения с использованием утилиты nmcli:

Настройка входного интерфейса происходит как в схеме eth-eth, выходного — как в wlan-wlan.

Tor + obfsproxy

Для маскировки Tor трафика будем использовать obfsproxy.

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

Данные для подключения к серверам obfsproxy можно взять здесь.

OpenVPN

Для организации VPN будем использовать OpenVPN через TCP и в режиме L3 (tap-интерфейс). Используется TCP, поскольку Tor работает только TCP-трафиком. В сам же VPN-туннель можно пускать любой трафик. Для того, чтобы направить VPN трафик в Tor, будем «проксировать» весь VPN-трафик через Tor. OpenVPN поддерживает такую возможность.

Привожу пример настройки клиентской части OpenVPN с подробными комментариями:

По настройке сервера есть достаточно много инструкцией в интернете. Ссылки я привел в «источниках» в конце статьи. Ключевым в настройке является совпадение параметров и наличие в конфиге сервера строчки «push «redirect-gateway def»». Она необходима, чтобы на клиенте установился маршрут по-умолчанию для проходящего трафика, который указывает на VPN сервер.

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

Для теста правильности работы пустим ping от подключенного ПК до tun-интерфейса VPN-сервера, будем снимать трафик с помощью tcpdump и анализировать в Wireshark для наглядности.

1) ICMP-запрос приходит на входной интерфейс Raspberry Pi.

Стоит обратить внимание на идентификаторы BE, LE и временную метку. Далее они нужны будут для того, чтобы опознать ICMP-запрос на стороне сервера.

2) ICMP-пакет прошёл процедуру обработки в OpenVPN и направился на порт 9050, который «слушается» Tor. Снимок трафика происходит на loopback интерфейсе Raspberry Pi.

3) Пакет выходит из Raspberry Pi и направляется на один из узлов сети Tor с серверной частью obfsproxy:

4) И снимок трафика уже на туннельном интерфейсе VPN-сервера. Тут же можно заметить, что сервер послал ответ.

Идентификаторы BE, LE и временная метка совпадают с теми, которые были в отправленном пакете.

5) На этом скриншоте представлен пакет, выходящий с VPN-сервера, в котором содержиться ICMP-reply.

Также я произвел тестирование пропускной способности этого решения с помощью iperf для TCP и UDP трафика до сервера. Тестирование проводилось с использованием Raspberry Pi model B+ и ОС Raspbian в домашней сети, так что цифры для других одноплатных компьютеров с другими ОС или другой сетевой средой могут отличаться.

— связка Tor + VPN+ obfsproxy
— только VPN
— чистый канал


Заключение

Потенциальные подводные камни:

1) Синхронизация времени. Поскольку tor выполняет криптооперации с проверкой временных меток, то время должно быть синхронизировано. К сожалению, время нужно будет синхронизировать каждый раз после выключения платы.

2) Размер mtu. DF-бит в отправляемых пакетах может привести к тому, что трафик будет «резаться», если где-то по пути запрещена фрагментация пакетов, а значение mtu меньше вашего.

3) Использование VPN throught Tor и obfsproxy не панацея от всего.

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

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

  • Ярлык на рабочий стол linux
  • Яндекс строка для linux
  • Яндекс программы для linux
  • Яндекс навигатор для linux
  • Яндекс диск монтирование linux