
Содержание
- 1 Зачем нужна точка доступа с Tor?
- 2 Настройка точки доступа
- 3 Перенаправление трафика точки доступа в Tor
- 4 Практическое применение точки доступа с Tor
- 5 Заключение
Вся информация предоставлена исключительно в ознакомительных целях. Ни редакция, ни автор не несут ответственности за любой возможный вред, причиненный материалами данной статьи.
Зачем нужна точка доступа с Tor?
В последнее время на фоне массовых блокировок IP-адресов все меньше людей продолжает сомневаться, нужны ли механизмы проксирования и анонимизации в их повседневной жизни. Бесплатных VPN-клиентов появляется все больше, но, как показывает практика, далеко не всем из них безопасно полностью доверять: то качество реализации хромает, то разработчики не слишком добросовестны.Как известно, Tor «из коробки» предоставляет как механизм проксирования (обхода блокировок), так и продвинутый механизм анонимности. Вся связь между узлами в сети Tor шифруется, а соединение с целевым узлом устанавливается посредством как минимум трех случайно выбранных узлов. Взяв за основу Tor и автоматизировав все процессы, происходящие при подключении к точке доступа (AP — Access Point), в результате мы получим весьма интересный инструмент, польза от которого отнюдь не исчерпывается обходом блокировок.
Настройка точки доступа
Для создания точки нам понадобится какое-нибудь устройство, на котором можно запустить операционую систему (виртуальная машина тоже вполне сгодится). В качестве операционной системы, управляющей точкой, подойдет любой Linux-дистрибутив. Конкретно я буду использовать Debian-based. Для превращения всего этого в точку доступа понадобится WiFi-адаптер.Если все это выполнено, можно приступать к первичной настройке. Итак, в первую очередь подключаем WiFi-адаптер. Вывод ip addr show wlan0 (wlan0 — имя интерфейса адаптера, может быть другим) должен быть такой, как на скрине.

На данный момент сетевой интерфейс не сконфигурирован. Первым делом активируем WiFi, освободив его от влияния вездесущего Network Manager’а:
1 2 | $ sudo nmcli radio wifi off $ sudo rfkill unblock wlan |
1 | # ip addr add 10.0.0.1/24 dev wlan0 |
1 | $ sudo apt-get install hostapd |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | ## Имя интерфейса адаптера interface=wlan0 ## SSID AP ssid=TorNet ## Автоматический выбор канала channel=1 ## Разрешить подключение со всех MAC-адресов, которые не запрещены macaddr_acl=0 ## Файл с запрещенными для подключения MAC-адресами deny_mac_file=./denied_macs ## Логировать все модули (IEEE, WPA, IAPP и так далее) logger_syslog=-1 ## Логировать с модулей только informational messages logger_syslog_level=2 ## Режим: IEEE 802.11g hw_mode=g ## Включить аутентификацию WPA/2 wpa=2 ## Пароль WPA для доступа к точке wpa_passphrase=xxxxxxxx ## Принимаемые алгоритмы управления ключами wpa_key_mgmt=WPA-PSK WPA-EAP WPA-PSK-SHA256 WPA-EAP-SHA256 |
1 | # hostapd ./hostapd.conf |
Hostapd и Network Manager
В некоторых версиях hostapd присутствует баг, связанный с блокировкой интерфейса Network Manager’ом и не позволяющий запускать беспроводную точку доступа. В результате запуска hostapd возникает следующая ошибка:
1 | Interface wlan0 wasn't started |
Однако по понятным причинам подключиться к точке привычным образом пока будет невозможно.

Для устранения этих причин нам понадобится другая утилита — dnsmasq, которая позволит развернуть службы DHCP и DNS. DHCP сейчас представляет больший интерес. Ставим dnsmasq из стандартного репозитория:
1 | $ sudo apt-get install dnsmasq |
1 2 3 4 5 6 7 8 9 10 11 12 13 | ## Интерфейс для прослушки DHCP-запросов interface=wlan0 ## Диапазон выдаваемых клиентам адресов и срок действия ## (должны подходить под маску сетевого шлюза адаптера!) dhcp-range=10.0.0.10,10.0.0.250,8h ## Шлюз по умолчанию dhcp-option=3,10.0.0.1 ## DNS-шлюз dhcp-option=6,10.0.0.1 ## Логировать DNS-запросы log-queries ## Логировать DHCP-запросы log-dhcp |
1 | # dnsmasq -C ./dnsmasq.conf |

Как видно из рисунка, для доступа в интернет понадобится еще один сетевой интерфейс. Это может быть как Ethernet-подключение (eth0), так и второй Wi-Fi-модуль (wlan1). Например, при создании точки доступа из виртуальной машины такой интерфейс создается автоматически (eth0).
Сейчас у нас готово все, за исключением связи между интерфейсами (обозначенной красной линией). Эта связь представляет собой пересылку пакетов с одного интерфейса на другой. Для тестирования работоспособности нашей AP (точки доступа) пока сгодится и обычный механизм NAT:
1 2 3 | $ sudo sysctl -w net.ipv4.ip_forward=1 $ sudo iptables -P FORWARD ACCEPT $ sudo iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE |
Перенаправление трафика точки доступа в Tor
Перед перенаправлением всего трафика AP в Tor необходимо установить сам Tor:1 | $ sudo apt-get install tor |
1 2 3 4 5 6 7 | ## Включаем доступ к onion-ресурсам VirtualAddrNetwork 192.168.100.0/10 AutomapHostsOnResolve 1 ## Порт для прозрачного проксирования в рамках нашей сети TransPort 10.0.0.1:9040 ## Порт для анонимного резолвинга имен хостов DNSPort 10.0.0.1:53 |
1 | $ sudo service tor start |

Если сейчас подключиться к точке доступа, то мы по-прежнему будем выходить в интернет с домашнего IP, поэтому осталось всего-навсего включить проксирование через Tor с помощью iptables:
1 2 3 4 | # Перенаправление всего TCP-трафика $ sudo iptables -t nat -A PREROUTING -i wlan0 -p tcp -j DNAT --to-destination 10.0.0.1:9040 # ...и DNS-трафика в отдельности $ sudo iptables -t nat -A PREROUTING -i wlan0 -p udp --dport 53 -j DNAT --to-destination 10.0.0.1:53 |
1 | $ sudo iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE |
Теперь можно убедиться в работоспособности настроенной Tor на точке доступа, посетив с любого подключенного к ней устройства какой-нибудь сервис проверки IP. В моем случае 2ip.ru.

Raspberry Pi как точка доступа с Tor
Raspberry Pi отлично подходит в качестве управляющего устройства точки доступа: всего несколько дополнительных действий с автоматической разверткой конфигурации при старте системы (systemd, initV), и останется всего лишь воткнуть USB-кабель в «розетку» для включения точки в любой нужный момент.Практическое применение точки доступа с Tor
Имея собственную AP, с которой соединяются клиентские устройства, мы по умолчанию получаем возможность наблюдения за всем трафиком своей сети, как пассивного, так и активного. Перенаправление в Tor — это лишь один из вариантов применения AP в прикладных задачах.Анализ трафика клиентских устройств
Пожалуй, самый очевидный вариант, который сразу же приходит в голову. Никто не запрещает запустить на AP Wireshark или tcpdump и захватывать трафик конкретного клиента либо всех клиентских устройств сразу до момента перенаправления трафика в Tor. Возможности для захвата здесь ограничены лишь уровнем защищенности конечного устройства, пользователя и приложения. Тема достаточно известная, поэтому подробно на ней останавливаться не будем.
Анализ сетевой активности приложений
В информационной безопасности часто возникает задача проанализировать сетевую активность определенного приложения. Например, у нас имеется мобильное приложение, которое при работе использует несколько известных нам хостов. Мы хотим методом черного ящика проверить, не ведет ли приложение какие-либо скрытые передачи на дополнительные удаленные хосты. Причем на самом устройстве мы это сделать не можем — нет соответствующих прав на уровне ОС. Зато у нас есть точка доступа, находящаяся полностью под контролем и с максимальными правами! Ее использование будет практически аналогично анализу трафика на целевом устройстве. Для этой цели сгодится и tcpdump установленный на Android.Попробуем исследовать работоспособность приложения без скрытого доступа к каким-либо дополнительным ресурсам. Заранее мы отключили все остальные источники побочного трафика, генерируемого из других приложений.
Скрытые передачи в данном случае не обязательно должны быть вредоносными — это могут быть механизмы антиспама (контроль того, что API приложения действительно используется с мобильного устройства), рекламы и так далее. Мы можем пропускать трафик методом белого ящика — запрещено все, что не разрешено:
1 2 3 4 | $ sudo iptables -t nat -F $ sudo iptables -t nat -A PREROUTING -i wlan0 -p tcp -d <APP_HOST1> -m mac --mac-source <DEVICE_MAC> --dport 443 -j DNAT --to-destination 10.0.0.1:9040 $ sudo iptables -t nat -A PREROUTING -i wlan0 -p tcp -d <APP_HOST2> -m mac --mac-source <DEVICE_MAC> --dport 443 -j DNAT --to-destination 10.0.0.1:9040 $ sudo iptables -t nat -A PREROUTING -i wlan0 -p tcp -d <APP_HOST3> -m mac --mac-source <DEVICE_MAC> --dport 443 -j DNAT --to-destination 10.0.0.1:9040 |
Блокировка определенных хостов
В данном случае неплохим решением было бы выдавать сообщение о том, что хост заблокирован в нашей сети. Для этого можно поднять веб-сервер и переадресовывать клиентов с заблокированного ресурса на страницу с сообщением. Для блокировки ресурсов по HTTPS понадобится как минимум сгенерировать самоподписанный сертификат и настроить веб-сервер на работу по протоколу HTTPS.Блокировку можно произвести прямо в таблице NAT:
1 2 | $ sudo iptables -t nat -I PREROUTING 1 -i wlan0 -p tcp -d m.vk.com --dport 80 -j DNAT --to-destination 192.168.1.82:80 $ sudo iptables -t nat -I PREROUTING 1 -i wlan0 -p tcp -d m.vk.com --dport 443 -j DNAT --to-destination 192.168.1.82:443 |

Блокировка рекламных сетей с целью повышения анонимности
Уже давно известно, что скрипты рекламных сетей стараются скрытно собрать максимум возможной информации о посетителях сайтов, представляя таким образом дополнительную угрозу анонимности. К счастью, на собственной Access Point мы можем по умолчанию заблокировать для клиентов связь рекламных скриптов с рекламными сетями.Для этого предлагаю вернуться к утилите dnsmasq: в качестве одной из опций своего конфига утилита предлагает дополнительный источник DNS-информации (наравне с /etc/hosts). Изменим файл с конфигом Dnsmasq (./dnsmasq.conf):
1 2 3 | ... ## Дополнительный источник DNS-информации, содержащий рекламные сети addn-hosts=/full/path/to/my_dns_hosts.txt |
Заключение
Вот таким незамысловатым способом мы создали точку доступа WiFi с автоматической анонимизацией трафика через Tor, а в качестве приятного бонуса мы получили возможность управлять всем проходящим через нее трафиком в собственных целях.Источник