Делаем на основе 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. Предустановленный актуальный образ всегда можно получить на официальном сайте устройства или же пройти весь процесс с нуля, скачав установщик.

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

apt-get update
# При желании - актуализируем ОС
#apt-get upgrade -y
apt-get install -y tor isc-dhcp-server hostapd iptables-persistent

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

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


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

auto wlan0
iface wlan0 inet static
  address 192.168.55.1
  netmask 255.255.255.0

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

DAEMON_CONF="/etc/hostapd/hostapd.conf"

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

interface=wlan0
# имя нашей беспроводной сети
ssid=anonymous_ap
hw_mode=g
# Предварительно рекомендуется выявить минимально загруженный канал
channel=11
# Фильтрация по MAC-адресам в данном примере отключена
macaddr_acl=0
# Для организации закрытой сети следует выставить эту опцию в значение 1 и раскомментировать нижеследующие строки
wpa=0
#wpa_key_mgmt=WPA-PSK
#wpa_pairwise=TKIP CCMP
#wpa_ptk_rekey=600
# Собственно, задаем пароль
#wpa_passphrase=hidemyass

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

# iwgetid --protocol wlan0
wlan0     Protocol Name:"IEEE 802.11bgn"

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

# /etc/init.d/hostapd restart
[ ok ] Stopping advanced IEEE 802.11 management: hostapd.
[FAIL] Starting advanced IEEE 802.11 management: hostapd failed!
# tail /var/log/syslog | grep 'anonymous-ap'
Oct 21 09:31:37 anonymous-ap ifplugd(mon.wlan0)[7490]: Link beat lost.
Oct 21 09:31:38 anonymous-ap ifplugd(mon.wlan0)[7490]: Exiting.
Oct 21 09:31:38 anonymous-ap ifplugd(wlan0)[1684]: Link beat lost.
Oct 21 09:31:48 anonymous-ap ifplugd(wlan0)[1684]: Executing '/etc/ifplugd/ifplugd.action wlan0 down'.
Oct 21 09:31:49 anonymous-ap ifplugd(wlan0)[1684]: Program executed successfully.

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

\echo -e "\nieee80211n=1" >> /etc/hostapd/hostapd.conf

service hostapd restart

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

# Домен нашей сети
option domain-name "anonymous-ap.local";

# Параметры подсети
subnet 192.168.55.0 netmask 255.255.255.0 {
  range 192.168.55.10 192.168.55.100;
  option domain-name-servers 8.8.4.4, 8.8.4.4;
  option routers 192.168.55.1;
  interface wlan0;
}

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

/etc/init.d/isc-dhcp-server restart


Настройка TOR


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

VirtualAddrNetwork 172.16.0.0/12
AutomapHostsSuffixes .onion,.exit
AutomapHostsOnResolve 1
TransPort 9040
TransListenAddress 192.168.55.1
DNSPort 53
DNSListenAddress 192.168.55.1


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


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

echo 'net.ipv4.ip_forward=1' >> /etc/sysctl.conf
sysctl -p

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

iptables -t nat -A PREROUTING -i wlan0 -p tcp --dport 22 -j REDIRECT --to-ports 22
iptables -t nat -A PREROUTING -i wlan0 -p udp --dport 53 -j REDIRECT --to-ports 53
iptables -t nat -A PREROUTING -i wlan0 -p tcp --syn -j REDIRECT --to-ports 9040
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

# Сохраняем правила в ранее установленный iptables-persistent, который сохранит их после перезагрузки
iptables-save > /etc/iptables/rules.v4

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

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


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

shutdown -r now

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



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

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

Надеюсь, рецепт будет полезен, буду рад дополнениям!
Поделиться публикацией
AdBlock похитил этот баннер, но баннеры не зубы — отрастут

Подробнее
Реклама
Комментарии 16
  • +5
    Спасибо за статью. Как раз хотел написать такую же, когда бы получил свои коробочки: эту и эту. Но вы меня опередили :)
    P.S. Хотя, если будет кому-то интересно, то могу и написать, что у меня вышло…
    • 0
      Спасибо. Вопрос. Можно ли на заворачивать трафик на .onion на виртуальную машину, которая будет его перенаправлять в Tor?
      • 0
        В общем случае можно, но конкретная реализация зависит от Вашего типа подключения к сети интернет.

        В случае, если Вы подключаетесь к интернету не напрямую, а через роутер схема примерно такая. Виртуальная машина должна быть подключена в режиме моста. Она получает от роутера адрес через DHCP. Машина, которую нужно анонимизировать (хостовая, например) в качестве шлюза по умолчанию должна будет использовать адрес виртуальной машины. А все остальные настройки на виртуальной машине аналогичны приведённым в статье.
        • 0
          У меня MikroTik. Только обязательно ли весь трафик направлять на виртуальную машину? Нельзя ли браузер заставлять i2p на одну, а onion на другую? Плагин возможно? Я не хочу дополнительные задержки вносить там, где это не нужно. Плюс торрент-трафик. Я не хочу гнать его через тор.
      • 0
        А со скоростью как?

        • 0
          Плохо. Ну, или «не очень хорошо». Зависит от маршрута, который будет использоваться. Пакеты по пути к конечному адресату могут облететь половину земного шара, так что замедление работы не было сюрпризом. Увы, такие издержки присущи любому TOR-подключению.
          • 0
            Как гостевой выход в интернет — пойдёт :)
            Чтобы без пароля, чтобы не забивали весь канал, и чтобы не пришлось за них отвечать, если вдруг запостят или скачают что-нибудь не совпадающее с линией партии :)
            Можно ещё физический выключатель интернета к нему прикрутить.
        • 0
          И как работает WiFi Dongle — Nano USB? В смысле, если отойти метров на 10 + стенка кирпичная — сигнал сильно падает?
          • +1
            WiFi Explorer показывает -50 dBm в метре и -70 dBm через 3 стены (но дом серии 1-Лг602У, не кирпич). Телефон и планшет считают это за «без одной полоски». В общем — вполне устраивает.
          • 0
            Надо заметить, что в реальности сервис проверки TOR, скорее всего, дополнительно предложит Вам установить Tor Browser Bundle и это не случайно. Важно понимать, что само по себе использование сети TOR не даст полной гарантии анонимности и такие браузеры, как IE, Chrome и Safari вполне могут продолжать отправлять какие-либо сведения о пользователе.

            Но если пользоваться данным «железным» решением, то можно ведь об этом не беспокоиться? тк весь трафик перенаправляется через TOR
            • 0
              Ну не совсем. Личность напрямую может и не узнать (если, конечно, браузер не залогинен в учётку гугла с реальными данными), но можно понять, что посетители разных сайтов в разное время с разных выходных нод на самом деле один и тот же человек (засчёт некоторых функций некоторых браузеров). А это уже даст почву для размышлений при необходимости. К тому же, если потом через этот же браузер зайти без тора, то и реальное имя легко получится узнать.
              • 0
                Да гугл вам сам всю плешь проест, как только вы примерно в третий раз за несколько часов стукнитесь из очередной страны.
            • +2
              Есть проект «onion pi» learn.adafruit.com/onion-pi/overview Там тоже установка несложная и все работает с пол-пинка. Только, к сожалению, жить с этим нельзя :( Дело даже не в том, что это медленно (а оно действительно медленно) но в том, что весь мир начинает вас банить в самых неожиданных местах.
              • 0
                Большое спасибо за линк, увидев его чуть раньше, не изобретал бы велосипед.

                Да, для постоянного использования эти решения едва ли годятся, я через какое-то время стал наблюдать буквально «бан в гугле». Приходится чередовать подключения, что неудобно. Возможно, кому-то подойдет выводить в TOR только onion-трафик, как предложено здесь.
              • 0
                Забыли про логи :)
                Во-первых, их наличие для тора само по себе выглядит несекурно.
                Во-вторых, они просто забьют рано или поздно всю флешку.
                (не обязательно для этого непосредственно выходить в сеть через тор. Он и сам по себе достаточно много гадит, будучи запущенным).

                Ну а вообще — на вкус и цвет.
                Мне вот показалось, что задействовать целый девайс (для которого нужно выделять шнурок ethernet и отдельную розетку, а потом ещё и искать место, где физически расположить так, чтобы не путался в проводах и не собирал пыль) — излишне.
                tor на роутере. + там же дополнительная анонимная сеть.
                • 0
                  Было бы ещё неплохо OpenDNS задействовать.

                  Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.