Пользователь
0,0
рейтинг
22 октября 2014 в 17:48

Разработка → Делаем на основе 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 вполне могут продолжать отправлять какие-либо сведения о пользователе.

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

Надеюсь, рецепт будет полезен, буду рад дополнениям!
@agrrh
карма
6,0
рейтинг 0,0
Реклама помогает поддерживать и развивать наши сервисы

Подробнее
Реклама

Самое читаемое Разработка

Комментарии (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 задействовать.

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