- Направляем весь трафик через Tor в Linux.
- Что такое Tor ?
- Установка и настройка Tor.
- Перенаправление трафика.
- ПОВОРАЧИВАЕТ ТРАФИК НА ПК(OC LINUX).
- Утечка DNS и Windows 10.
- Да здравствует Exit node!
- Анонимизация всего траффика через VPN + TOR/I2P. Собираем миддлбокс с нуля
- Постановка задачи
- Дисклеймер
- Хостинг
- Установка пакетов
- Настройка VPN
- Настройка интернета
- Настройка TOR
- Настройка I2P
- Что дальше?
Направляем весь трафик через Tor в Linux.
Проснулся я с утра и решил. Направлю весь трафик на своем VDS сервере через сеть Tor.
Что такое Tor ?
Сеть Tor-это группа добровольцев-серверов, которая позволяет людям улучшить свою приватность и безопасность в Интернете. Пользователи Tor используют эта сеть путем подключения через серию виртуальных туннелей, а не создание прямого подключения, что позволяет обеим организациям и индивидами, обмениваться информацией через публичные сети, не раскрывая их конфиденциальности. По сути это большая сеть VPN туннелей . В основе лежит распределенная система узлов — так называемых нод , между которыми в зашифрованном виде передаются данные. Для соединения обычно используется три сервера, которые образуют временную цепочку. Каждый сервер выбирается случайным образом, при этом он знает только то, от какого звена
получил данные и кому они предназначаются. Мало этого — цепочки постоянно меняются. Даже в случае перехвата данных на одном из серверов отследить полный маршрут пакетов (в том числе и их отправителя) не представляется возможным. Перед отправлением пакет последовательно шифруется тремя ключами: сначала для третьей ноды, потом для второй и, в конце концов, для первой. Когда первая нода получает пакет, она расшифровывает «верхний» слой шифра и узнает, куда отправить пакет дальше. Второй и третий сервер поступают аналогичным образом.
Как серьезно бы ни защищались данные, как изощренно не выбирался и запутывался маршрут, где-то на выходе данные все равно нужно расшифровывать. Ведь только так их можно доставить до места назначения. Эта операция осуществляется на последней ноде в цепочке — так называемой выходной нодой (Exit Node) . Если на таком узле установить снифер , то данным ничего больше не останется, как прямиком попасть в логи :). ВАЖНО, не забывайте Tor не панацея и не обеспечивает вам 100% анонимность !
Установка и настройка Tor.
В Debian установить Tor очень просто, он уже есть с пакете .deb .
apt-get install tor
Для настройки используются два файла torcc и torsocks.conf .
По умолчанию Tor используется как SOCKS прокси, но мы не пойдем этим путем. Не будем использовать программы типа Proxifier и т.п. В нашем случае у нас есть VDS сервер с установленным OpenVPN к которому мы подключаемся по VPN и вот на нем то мы весь трафик и направим в сеть Tor. Для начала в файле etc/tor/torcc добавим строчки :
VirtualAddrNetworkIPv4 10.192.0.0/10 #Когда Tor необходимо назначить виртуальный (неиспользуемый) адрес из-за MAPADDRESS команда от контроллера или функции AutomapHostsOnResolve,
Tor выбирает неназначенный адрес из этого диапазона. (По умолчанию: 127.192.0.0 /10)
AutomapHostsOnResolve 1 # Разрешаем резольвит через тор.
TransPort 9040 #Транзитный порт для трафика.
TransListenAddress 10.0.1.1 # Адресу для прослушивания прозрачных прокси соединений. В моем случае адрес туннеля.
DNSPort 5353 #DNS порт, суда будет направлять dns запросы в сеть тор.
DNSListenAddress 10.0.1.1 # Привязка к этому адресу для прослушивания DNS-подключений.
Так же можно использовать только определены страны в качестве ExitNodes :
ExitNodes
StrictExitNodes 1
Или наоборот запретить определены страны :
В файле torsocks.conf может закомментировать строчки, что бы не открывать лишних портов и т.д:
# Default Tor address and port. By default, Tor will listen on localhost for
# any SOCKS connection and relay the traffic on the Tor network.
#TorAddress 127.0.0.1
#TorPort 9050
Перенаправление трафика.
Первым делом не забудьте разрешить форвардинг в ядре в файле /etc/sysctl.conf раскомментируем строчку:
net.ipv4.ip_forward=1
Чтобы не перезагружаться сообщаем ядру о включении форвардинга:
echo 1 > /proc/sys/net/ipv4/conf/all/forwarding
Так же нам надо удалить правила в iptables по MASQUERADE или тому подобные правила POSTROUTING , если они у вас есть.
iptables -t nat -D POSTROUTING -s 10.0.1.0/24 -o eth0 -j MASQUERADE
Ну а теперь самое интересное, заворачиваем весь трафик из туннеля в Tor :
iptables -t nat -A PREROUTING -i tun0 -p tcp —syn -j REDIRECT —to-ports 9040
iptables -t nat -A PREROUTING -i tun0 -p udp —dport 53 -j REDIRECT —to-ports 5353
Вариант номер два:
iptables -t nat -A PREROUTING -i tun0 -p tcp -j DNAT —to-destination 10.0.1.1:9040
# …и DNS-трафика в отдельности
$ sudo iptables -t nat -A PREROUTING -i tun0 -p udp —dport 53 -j DNAT —to-destination 10.0.1.1:53
ПОВОРАЧИВАЕТ ТРАФИК НА ПК(OC LINUX).
VDS и т.д. это хорошо. Но что делать если мы хотим просто на компьютере завернуть трафик в Тор.
Для начала нам потребуются немного другие настройки :
VirtualAddrNetworkIPv4 10.192.0.0/10 #Когда Tor необходимо назначить виртуальный (неиспользуемый) адрес из-за MAPADDRESS команда от контроллера или функции AutomapHostsOnResolve,
Tor выбирает неназначенный адрес из этого диапазона. (По умолчанию: 127.192.0.0 /10)
AutomapHostsOnResolve 1 # Разрешаем резольвит через тор.
TransPort 9040 #Транзитный порт для трафика.
DNSPort 5353 #DNS порт, суда будет направлять dns запросы в сеть тор.
Сохраняем, перезапускаем Tor:
service tor restart
Настройте системный DNS-резольвер для использования DNSPort Tor в интерфейсе loopback /etc/resolv.cofig :
Ну а теперь сделаем REDIRECT пакетов на порты Тора :
iptables -t nat -A OUTPUT -p udp -m udp —dport 53 -j REDIRECT —to-ports 5353
iptables -t nat -A OUTPUT -p tcp -m tcp —tcp-flags FIN,SYN,RST,ACK SYN -j REDIRECT —to-ports 9040
Хотел бы обратить внимание что с начало надо запустить Tor, а потом выставлять правила iptables. Иначе просто Tor не установит соединение.
Не плохая инструкция по транспорт-прокси : https://trac.torproject.org/projects/tor/wiki/doc/TransparentProxy
Для ленивых :
TorIptables2 — cкрипт Tor Iptables который настраивает iptables и tor для перенаправления всех служб и трафика, включая DNS, через сеть Tor.
Домашняя страница: https://github.com/ruped24/toriptables2
Автор: Rupert Edwards
использование:
toriptables2.py [-h] [-l] [-f]
опциональные аргументы:
-h , —help показать справку и выйти.
-l , —load Эта опция загрузит правила tor iptables.
-f , —flush Эта опция сбросит правила iptables за стандартные.
Утечка DNS и Windows 10.
К сожалению в Windos 10 сделали очень плохую штуку, dns запросы отправляются на все доступные интерфейсы в не зависимости от таблиц маршрутизации. От какова ответ приходит быстрей, тот dns сервер и используется. По этому в настройках сетевого соединения приходиться в ручную писать DNS сервер, например вашего туннеля 10.0.1.1 . Можно бороться и другими методами, исполосовать свой dns сервер который находятся где нибудь за бугришем ))).
Да здравствует Exit node!
Если вам вдруг захотелось присоединиться к данному проекту и стать Exit node ,то дальше будут статья для вас. Сам я не пробовал и взял этот кусок полностью с сайта Xaker.ru без изменений :
Для Tor’а важно, чтобы часы были установлены точно. В противном случае —
синхронизируем с публичными серверами времени. Забегая вперед скажу, что для
запуска Tor лучше создать отдельного пользователя — делается это командой
adduser. Я создал себе пользователя toruser: uid=111(toruser) gid=10(wheel)
groups=0(wheel),10(wheel). Теперь нужно создать файл конфигурации. Tor
использует для хранения своих данных папку .tor в домашней директории
пользователя (/home/toruser). Создаем папку .tor, создаем в ней файл torrc и
открываем его в текстовом редакторе.
Нас интересует несколько параметров :
ControlPort – на этом порту Tor будет принимать подключения для
управления Tor-сервером (т.е. можно подключиться удаленно для конфигурации Tor’а,
опция важна для тех, кто использует графические оболочки типа Vidalia или Tork).
Устанавливаем его в 9051.
DirPort – на этом порту Tor будет принимать данные от сервера
директорий. Устанавливаем в 9030.
ControlPort 9051
DirPort 9030
ExitPolicy – определяет, какой трафик мы будем принимать и форвардить.
Имеет формат «ExitPolicy Accept | reject address:port». По умолчанию политика
следующая:
reject *:25
reject *:119
reject *:135-139
reject *:445
reject *:563
reject *:1214
reject *:4661-4666
reject *:6346-6429
reject *:6699
reject *:6881-6999
accept *:*
Означает, что мы будем резать трафик, направленный на вышеперечисленные
порты, а весь остальной будем пропускать. В принципе можно ее и не
переопределять и оставить дефолтной, ну это уж на твой выбор. Я использовал
следующую:
ExitPolicy accept *:80, accept *:443, accept *:110, accept *:143,
accept *:993, accept *:995, reject *:*
HashedControlPassword – хеш пароля для доступа и конфигурации
Tor-сервера (чтобы никакой злобный хакер не смог переконфигурировать наш
сервер), создается при помощи команды: tor —hash-password.
Nickname – имя нашего сервера.
ORPort – порт, ожидающий подключения от других нодов.
SocksListenAddress — адрес, по которому Tor будет ждать подключений от
приложений, работающих через SOCKS. Формат: SocksListenAddress IP[:PORT]
Установим IP в 127.0.0.1, а порт оставим дефолтным (9050). Это понадобится нам,
если мы захотим использовать Tor в связке с Privoxy или другими прокси.
HashedControlPassword
16:91495A0B7CBC41C76073E1EC00A5CF1510D41462884391CCB24BF489F1
Log notice stdout – выводить сообщения в консоль
Nickname HelloXakep
ORPort 9001
SocksListenAddress 127.0.0.1
Сохраняем изменения и закрываем файл. Можно приступать к запуску. Открываем
консоль, логинимся под toruser и запускаем Tor, передав в качестве параметра
путь до конфиг-файла:
$ tor -f /home/toruser/.tor/torrc
И смотрим выдаваемые сообщения. Как только сервер сможет подсоединиться к
сети, он попытается определить доступность своих портов снаружи. Это может
занять до 20 минут. В логах появятся сообщения вида «Self-testing indicates your
ORPort is reachable from the outside. Excellent». Если таковых нет, это значит,
что сервер недоступен из Сети — тогда следует перепроверить файрволл.
Как только сервер определит доступность, он загрузит на сервер директорий
(базу нод) свой дескриптор. Это позволит клиентам узнать адрес, порты, ключи и
другую информацию о нашем сервере. Можно зайти на
http://moria.seul.org:9032/tor/status/authority и найти там nickname своего
сервера, чтобы убедиться, что он будет использоваться клиентами. Правда,
обновляется он не моментально — иногда может потребоваться некоторая время,
чтобы эта информация в базе обновилась.
Вот и появился наш сервер в списке. Посмотрим на строчку ниже HelloHacker.
Что мы видим: s Exit Fast Running V2Dir Valid. Exit — означает, что мы являемся
Exit Node!
Надо понимать, что работая в качестве Exite Node’ы, человек серьезно
подставляет себя. Ведь именно его IP светиться во время взломов и т.д. В
процессе написания статьи через мой сервер дважды пытались провести атаку
типа SQL-injection. Так что держи ухо востро, за такие вещи можно запросто
схлопотать от правоохранительных органов или от провайдера. Вот лишь
некоторые примеры:
В 2006 г. спецслужбы Германии осуществили захват шести компьютеров,
работавших нодами сети Tor на основании того, что они были незаконно
использованы для доступа к детской порнографии.
В 2007 г. Национальная полиция Швеции арестовала известного эксперта по компьютерной
безопасности Дена Эгерстада по обвинению в неправомерном доступе к
компьютерной информации. 22-летний сотрудник компании Deranged Security
опубликовал на своем рабочем сайте пароли к электронной почте посольств,
негосударственных организаций, коммерческих фирм и правительственным
агентств разных стран. По его словам, он в качестве эксперимента создал 5
выходных серверов Tor и перехватывал через них незашифрованный трафик.
В 2007 г. немецкая полиция арестовала в Дюссельдорфе Александра Янссена, организовавшего у себя на компьютере сервер Tor, через который неизвестный отправил ложное
сообщение о теракте. Несмотря на то, что вскоре г-н Янссен был отпущен,
он решил отказаться от дальнейшего использования своего компьютера в
качестве точки выхода Tor.
Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.
Источник
Анонимизация всего траффика через VPN + TOR/I2P. Собираем миддлбокс с нуля
В этой статье будет рассказано, как пробросить весь трафик операционной системы через TOR так, чтобы о наличии TOR-а операционная система даже не подозревала.
Это поможет не думать о бесконечных настройках прокси и onion, перестать бояться на тему «а не сливает ли торрент клиент мой реальный IP адрес, так как не полностью поддерживает прокси?» и, наконец, быть застрахованным от законодательного запрета TOR-а в России.
Когда я говорю «TOR», я подразумеваю «TOR и I2P». По схожей методике сюда можно подключить любой даркнет.
Статья — «чисто конкретная». Теория уже неплохо изложена в статье Pandos ‘а habrahabr.ru/post/204266. В данном тексте будет дана детальная инструкция «как сделать, чтобы работало».
Постановка задачи
1. Мой компьютер должен по нажатию одной кнопки переходить в режим «весь трафик — не русский».
2. По нажатию второй кнопки он должен переходить в режим «весь траффик идет через TOR»
3. Третья кнопка — для I2P.
4. Входная TOR-нода должна находиться за рубежом.
5. Все это должно работать под linux, windows, android. Заранее: с OS X и iPhone тоже все в порядке, просто у меня их нету, так что протестить не смогу.
Дисклеймер
Использование tor over vpn не обязательно повышает анонимность. Подробнее: trac.torproject.org/projects/tor/wiki/doc/TorPlusVPN. В данной статье описывается средство, которое, тем не менее, нужно применять с умом.
Хостинг
Первым делом нам понадобится сравнительно дешевая VPS-ка, владельцы которой не против, чтобы там крутился TOR (и не русская, разумеется). Лично я использую DigitalOcean. В их ToS не специфицирован запрещенный трафик (хотя если будете качать пиратские торренты прямо с их IP — заблокируют на раз. Ну, собственно, нам для этого и нужен TOR. ). Стоит это 5$ в месяц.
Регистрироваться можно прямо тут: www.digitalocean.com/?refcode=82e536b1a24d (ссылка реферальная, вам $10, мне $25. Не хотите играть в это дело — уберите refcode).
Если Вы знаете лучшие или хотя бы не худшие варианты хостинга под такие цели — пишите в комменты, обновлю статью.
Я не буду описывать конкретную процедуру создания VPS-ки, так как это зависит от хостинга и просто. Давайте предположим, что вы в итоге можете выполнить команду,
и получить shell на VPS-ку. Я буду считать, что на VPS-ке крутится debian 7. По крайней мере, эта статья тестировалась на debian 7. На убунте тоже заработает, наверное.
Установка пакетов
Сначала немного приложений, которые облегчают нам жизнь. Не забудьте поставить ваш любимый редактор, mc если нужно и т.п.
I2P нету в репозитории debian, так что придется добавить новый источник.
Теперь поставим основные пакеты — TOR, VPN и I2P. Также нам пригодится DNS сервер. Я использую unbound.
Настройка VPN
Я буду держать все настройки VPN в /opt/vpn. Для начала следует сгенерировать сертификаты для сервера и клиента.
N.B. Мы будем запускать несколько серверов (один под tor, второй под обычный трафик) и использовать для них один и тот же сертификат. Это не обязательно. Вполне можно (и нужно) генерировать независимый сертификат или даже свою CA для каждого из openvpn серверов.
Теперь сгенерируем новую CA и необходимые сертификаты.
Изучите папку /opt/vpn/rsa/keys. Теперь там есть несколько пар ключ+сертификат.
ca.
server.
client.
Клиенту нужно отдать только ca.crt, client.crt и client.key, остальные файлы должны оставаться только на сервере.
Пора писать конфигурационный файл для сервера. Положите его в /etc/openvpn/00-standard.conf
Попробуйте запустить openVPN
Если не получилось — у вас баг: bugs.debian.org/cgi-bin/bugreport.cgi?bug=767836#43 Поправьте согласно инструкции и добейтесь успешного запуска сервера.
ОК, VPN работает. Самое время подключиться к нему. Для этого на клиенте напишем конфиг-файл:
Теперь попробуйте подключиться
После появления надписи «Initialization Sequence Completed» вы подключены и должны успешно пинговать 10.8.1.1. Интернет пропадет, это нормально.
Настройка интернета
Допустим, мы не хотим использовать TOR, а просто хотим себе не русский внешний IP. В этом случае при помощи вот этого скрипта:
вы достигнете желаемого. Перепишите это в /etc/rc.local.
Настройка TOR
Если вы прочитали и выполнили предыдущую часть — не забудьте очистить iptables
Теперь допустим, что вы таки хотите VPN через TOR (и предыдущий пункт не выполняли). Тогда:
допишите в конец /etc/tor/torrc следующее:
также изменим наш конфиг-файл сервера /etc/openvpn/00-standard.conf. Измените DNS с гугловского на локальный. Не забудьте перезапустить openvpn.
Наконец, следующая конструкция на bash перенаправит весь входящий трафик vpn через tor
Кстати, запомните эту конструкцию. Это универсальный способ перенаправить весь трафик с заданной сетевой карты через прозрачный прокси. I2P будем добавлять точно так же.
Готово. Подключитесь к VPN. Убедитесь, что у Вас TOR-овский IP-шник. Зайдите на какой-нибудь .onion сайт, чтобы проверить: dns тоже работает.
Настройка I2P
С I2P сложности. У них нет собственного DNS сервера, так что придется делать свой.
Откройте /etc/unbound/unbound.conf и допишите в конец:
После этого любой (!) домен будет раскрываться в заведомо несуществующий IP адрес 10.191.0.1. Осталось «ловить» такой трафик и перенаправлять на localhost:8118 — именно тут слушает I2P.
Кстати говоря, пока что не слушает. Выполните
и выставьте флаг, чтобы стартовал при загрузке.
Остановите tor. Запустите unbound.
Теперь настроим privoxy в связке в I2P. Допишите в конец /etc/privoxy/config
и рестартаните privoxy
Точно так же, как и в случае с TOR, смените DNS на локальный в конфигурации vpn-сервера:
Если вы уже пробовали редиректить TOR — не забудьте почистить iptables:
Осталось выполнить переадресацию:
Знакомо, правда? Единственное отличие — номер порта прокси.
Подключитесь к VPN. Вы в I2P. Откройте epsilon.i2p, убедитесь, что сеть работает.
Что дальше?
Дальше Вам пора сделать так, чтобы они не конфликтовали. Вместо одного сервера /etc/openvpn/00-standard сделать три: 00-standard для обычного трафика, 01-tor для tor-а, и 02-i2p для i2p. Назначьте им разные подсети (например, 10.8.2.* для tor и 10.8.3.* для i2p). После этого tor и unbound перестанут конфликтовать и вы сможете подключаться к любой из трех одновременно работающих сетей.
Кроме того, сейчас клиент не проверяет сертификат сервера. Это можно поправить.
А еще можно запилить виртуалку, для которой выкатить tun0, трафик которого идет через TOR, после чего виртуалка не будет знать даже про VPN. А в хосте этой виртуалки прописать роутинг так, чтобы без VPN не подключалось вообще.
А еще надо лимит скорости в I2P поставить. И логи у VPN не ротируются. И веб-морды нет.
А еще… а еще я все это обязательно опишу — в других статьях. Засим — спасибо за внимание!
Источник