- Точка доступа WiFi с анонимизацией через Tor
- Зачем нужна точка доступа с Tor?
- Настройка точки доступа
- Перенаправление трафика точки доступа в Tor
- Raspberry Pi как точка доступа с Tor
- Практическое применение точки доступа с Tor
- Анализ трафика клиентских устройств
- Анализ сетевой активности приложений
- Настройка TOR на OpenWRT
- Подготовка и установка TOR
- Перед настройкой
- Настройка TOR
- Запуск TOR
- Использование прозрачного прокси TOR
- Настройка iptables
Точка доступа WiFi с анонимизацией через Tor
Сегодня я покажу, как сконфигурировать точку доступа Wi-Fi с автоматической анонимизацией всего исходящего трафика через сеть Tor, а также покажу некоторые полезные примеры применения такой точки доступа как для простого пользователя, так и для специалиста информационной безопасности.
Вся информация предоставлена исключительно в ознакомительных целях. Ни редакция, ни автор не несут ответственности за любой возможный вред, причиненный материалами данной статьи.
Зачем нужна точка доступа с Tor?
В последнее время на фоне массовых блокировок IP-адресов все меньше людей продолжает сомневаться, нужны ли механизмы проксирования и анонимизации в их повседневной жизни. Бесплатных VPN-клиентов появляется все больше, но, как показывает практика, далеко не всем из них безопасно полностью доверять: то качество реализации хромает, то разработчики не слишком добросовестны.
Как известно, Tor «из коробки» предоставляет как механизм проксирования (обхода блокировок), так и продвинутый механизм анонимности. Вся связь между узлами в сети Tor шифруется, а соединение с целевым узлом устанавливается посредством как минимум трех случайно выбранных узлов. Взяв за основу Tor и автоматизировав все процессы, происходящие при подключении к точке доступа (AP — Access Point), в результате мы получим весьма интересный инструмент, польза от которого отнюдь не исчерпывается обходом блокировок.
Настройка точки доступа
Для создания точки нам понадобится какое-нибудь устройство, на котором можно запустить операционую систему (виртуальная машина тоже вполне сгодится). В качестве операционной системы, управляющей точкой, подойдет любой Linux-дистрибутив. Конкретно я буду использовать Debian-based. Для превращения всего этого в точку доступа понадобится WiFi-адаптер.
Если все это выполнено, можно приступать к первичной настройке. Итак, в первую очередь подключаем WiFi-адаптер. Вывод ip addr show wlan0 (wlan0 — имя интерфейса адаптера, может быть другим) должен быть такой, как на скрине.
На данный момент сетевой интерфейс не сконфигурирован. Первым делом активируем WiFi, освободив его от влияния вездесущего Network Manager’а:
Теперь выберем и назначим интерфейсу адаптера IP-адрес, все адреса из маски которого будут назначаться в дальнейшем клиентским устройствам:
Третьим пунктом мы переведем адаптер в режим точки доступа: делать это мы будем одним из наиболее распространенных способов — с помощью утилиты hostapd, позволяющей сконфигурировать программную точку доступа. Hostapd присутствует в большинстве штатных репозиториев.
Далее нужно создать конфиг для hostapd (./hostapd.conf):
После этого уже можно будет запустить hostapd для перевода WiFi-адаптера в режим AP с описанной конфигурацией:
В некоторых версиях hostapd присутствует баг, связанный с блокировкой интерфейса Network Manager’ом и не позволяющий запускать беспроводную точку доступа. В результате запуска hostapd возникает следующая ошибка:
Подробно баг и возможный воркэраунд описан здесь.
Однако по понятным причинам подключиться к точке привычным образом пока будет невозможно.
Для устранения этих причин нам понадобится другая утилита — dnsmasq, которая позволит развернуть службы DHCP и DNS. DHCP сейчас представляет больший интерес. Ставим dnsmasq из стандартного репозитория:
Dnsmasq также нуждается в предварительной настройке (./dnsmasq.conf):
Запускаем DHCP-сервер в составе dnsmasq:
Теперь подключение к WiFi точке доступа становится возможным с любых устройств. Чтобы наша точка наконец заработала в обычном режиме, осталось ответить на главный вопрос: откуда точка будет брать доступ в интернет. Для получения ответа предлагаю взглянуть на скрин ниже. Большинство наших посетителей, так или иначе соприкасавшихся с настройкой сетей, заметят на нем достаточно привычную схему связывания сетей. Именно этот способ мы и будем использовать.
Как видно из рисунка, для доступа в интернет понадобится еще один сетевой интерфейс. Это может быть как Ethernet-подключение (eth0), так и второй Wi-Fi-модуль (wlan1). Например, при создании точки доступа из виртуальной машины такой интерфейс создается автоматически (eth0).
Сейчас у нас готово все, за исключением связи между интерфейсами (обозначенной красной линией). Эта связь представляет собой пересылку пакетов с одного интерфейса на другой. Для тестирования работоспособности нашей AP (точки доступа) пока сгодится и обычный механизм NAT:
На данном этапе AP заработала в обычном режиме: принимает клиентов и предоставляет им доступ в интернет с IP-адреса, выданного нам нашим провайдером. Это, конечно же, замечательно, но для наших целей недостаточно. Поэтому теперь настало время перенаправления всего клиентского трафика в Tor.
Перенаправление трафика точки доступа в Tor
Перед перенаправлением всего трафика AP в Tor необходимо установить сам Tor:
И настроить его как Transparent Proxy с помощью конфигурационного файла (расположенного здесь: /etc/tor/torrc):
Этих настроек для наших нужд вполне достаточно, поэтому можем запускать Tor как сервис:
На текущий момент вывод netstat -tunapl должен быть примерно таким, как на скрине ниже. Мы видим все запущенные нами сервисы на текущий момент.
Если сейчас подключиться к точке доступа, то мы по-прежнему будем выходить в интернет с домашнего IP, поэтому осталось всего-навсего включить проксирование через Tor с помощью iptables:
$ sudo iptables — t nat — A PREROUTING — i wlan0 — p tcp — j DNAT — to — destination 10.0.0.1 : 9040
$ sudo iptables — t nat — A PREROUTING — i wlan0 — p udp — dport 53 — j DNAT — to — destination 10.0.0.1 : 53
Также нужно удалить предыдущее правило, включающее маскарад между сетевыми интерфейсами (NAT):
Двумя новыми правилами мы добились следующего: подмены пункта назначения всего TCP-трафика в момент появления пакетов на сетевом интерфейсе Wi-Fi-адаптера и редиректа DNS-запросов (протокол UDP). Подмененный пункт назначения — запущенный сервис Tor с Transparent Proxy. Стоит обратить внимание, что на этих двух правилах настройка iptables завершается.
Теперь можно убедиться в работоспособности настроенной Tor на точке доступа, посетив с любого подключенного к ней устройства какой-нибудь сервис проверки IP. В моем случае 2ip.ru.
Raspberry Pi как точка доступа с Tor
Raspberry Pi отлично подходит в качестве управляющего устройства точки доступа: всего несколько дополнительных действий с автоматической разверткой конфигурации при старте системы (systemd, initV), и останется всего лишь воткнуть USB-кабель в «розетку» для включения точки в любой нужный момент.
Практическое применение точки доступа с Tor
Имея собственную AP, с которой соединяются клиентские устройства, мы по умолчанию получаем возможность наблюдения за всем трафиком своей сети, как пассивного, так и активного. Перенаправление в Tor — это лишь один из вариантов применения AP в прикладных задачах.
Анализ трафика клиентских устройств
Пожалуй, самый очевидный вариант, который сразу же приходит в голову. Никто не запрещает запустить на AP Wireshark или tcpdump и захватывать трафик конкретного клиента либо всех клиентских устройств сразу до момента перенаправления трафика в Tor. Возможности для захвата здесь ограничены лишь уровнем защищенности конечного устройства, пользователя и приложения. Тема достаточно известная, поэтому подробно на ней останавливаться не будем.
Анализ сетевой активности приложений
В информационной безопасности часто возникает задача проанализировать сетевую активность определенного приложения. Например, у нас имеется мобильное приложение, которое при работе использует несколько известных нам хостов. Мы хотим методом черного ящика проверить, не ведет ли приложение какие-либо скрытые передачи на дополнительные удаленные хосты. Причем на самом устройстве мы это сделать не можем — нет соответствующих прав на уровне ОС. Зато у нас есть точка доступа, находящаяся полностью под контролем и с максимальными правами! Ее использование будет практически аналогично анализу трафика на целевом устройстве. Для этой цели сгодится и tcpdump установленный на Android.
Попробуем исследовать работоспособность приложения без скрытого доступа к каким-либо дополнительным ресурсам. Заранее мы отключили все остальные источники побочного трафика, генерируемого из других приложений.
Скрытые передачи в данном случае не обязательно должны быть вредоносными — это могут быть механизмы антиспама (контроль того, что API приложения действительно используется с мобильного устройства), рекламы и так далее. Мы можем пропускать трафик методом белого ящика — запрещено все, что не разрешено:
Настройка TOR на OpenWRT
OpenWRT — встроенная операционная система, основанная на ядре Linux, и предназначенная, в первую очередь, для домашних маршрутизаторов. Является альтернативой проприетарных прошивок, поддерживает ограниченный список устройств число которых постоянно растёт. Ознакомиться со списком можно тут.
Подготовка и установка TOR
Поменяем пароль root через telnet:
$ telnet 192.168.1.1 $ passwd новый_пароль
Далее обновим пакеты введя команду:
Если у вас менее 4МБ места на ПЗУ роутера, то вам понадобится флеш-карта (для этого в маршруторизаторе должен быть USB-порт!).
Монтируем флешку с помощью block-mount. Устанавливаем TOR:
Перед настройкой
Обязательные шаги после установки пакета TOR:
- Настройте и синхронизируйте время чеpез ntp. Неправильная дата может привести к проблемам при старте tor или к его некорректной работе.
- При установке пакета tor система должна создать пользователя и группу tor, но при создании группы инсталлятор может допустить ошибку и в файле /etc/group не поставить перенос строки для группы tor, поэтому есть смысл лишний раз это перепроверить
- Проверьте все права на файлы необходимые tor они должны иметь маску 755 и принадлежать tor:tor
Настройка TOR
Открываем конфигурационный файл /etc/tor/torrc и правим его.
Если необходимо чтобы все компьютеры подключенные к роутеру (неважно по кабелю или wifi) имели возможность получить доступ к TOR через SOCKS-proxy необходимо раскоментировать строчку:
SocksListenAddress 192.168.120.1:9100 # listen on this IP:port also
Где 192.168.120.1 – ip адрес вашего роутера для локальной сети, а 9100 – порт на котором будет socks-сервер с tor.
Опциями SocksPolicy можно явно указать какие ip адреса будут иметь (или не иметь) доступ к socks серверу. В файле конфигурации эти опции закомментированы – рекомендуется их раскомментировать и настроить под себя.
Если по каким то причинам tor не стартует — воспользуйтесь опцией Log для выяснения проблемы.
Запуск TOR
Запускаем тор следующей командой:
Если tor уже запущен либо при старте возникают ошибки вида:
[warn] Could not bind to 127.0.0.1:9050: Address already in use. Is Tor already running?
необходимо остановить его:
и запустить заново как написано выше.
Если лог включен, то признаком успешного запуска и подключения к сети tor будет строка:
Feb 21 19:12:17.034 [notice] Tor has successfully opened a circuit. Looks like client functionality is working. Feb 21 19:12:17.035 [notice] Bootstrapped 100%: Done.
Далее достаточно прописать адрес и порт указанный опцией SocksListenAddress как-socks сервер в браузере или любой другой программе на вашем ПК.
Однако есть ряд программ которые не умеют работать с socks протоколом. Эту проблему можно решить средствами tor+iptables. Для этого необходимо включить в TOR режим прозрачного проксирования. В таком случае на подключенных к роутеру машинах вообще не нужно будет ничего настраивать, весь трафик будет идти через сеть TOR.
Использование прозрачного прокси TOR
Для этого в конфигурационный файл /etc/tor/torrc добавляем:
AutomapHostsOnResolve 1 TransPort 9040 DNSPort 53
тем самым прозрачный прокси будет слушать порт 9040.
$ killall -9 tor $ /etc/init.d/tor start
Настройка iptables
Далее необходимо весь трафик завернуть на порт 9040. Для этого необходимо использовать iptables с опцией REDIRECT –to-port. Для использования этой опции необходимо дополнительно собрать и установить пакет iptables-mod-nat-extra. В противном случае вы получите ошибку вида:
iptables v1.4.6: unknown option `--to-ports'
$ opkg install kmod-ipt-nat-extra
А можно собрать в своем репозитории или включить этот пакет сразу в прошивку. В конфигураторе OpenWrt этот пакет находится в
-> Network -> iptables iptables-mod-nat-extra
После установки пакета необходимо “завернуть” трафик на прозрачный прокси сервер:
$ iptables -t nat -A PREROUTING -p tcp -d ! 192.168.120.1 --dport 80 -j REDIRECT --to-ports 9040
Что означает – перебрасывать весь трафик идущий с 80-го порта (и не адресованый для 192.168.120.1) на порт 9040, на котором как раз и находится прозрачный прокси.
Тоже самое делаем и для dns запросов:
$ iptables -t nat -A PREROUTING -p udp --dport 53 -j REDIRECT --to-ports 53
Остальной udp трафик прийдётся либо пропускать без анонимизации, либо резать.
Собственно всё. Весь трафик приходящий на роутер будет перенаправлен в сеть TOR без каких-либо настроек на компьютерах в вашей локальной сети и все действия в сети будут анонимны (при правильном использовании!).