Проснулся я с утра и решил. Направлю весь трафик на своем 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 {US},{DE},{AT},{UA},{RU}
StrictExitNodes 1
Или наоборот запретить определены страны :
StrictExitNodes {MD},{KZ}
В файле 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 :
nameserver 127.0.0.1
Ну а теперь сделаем 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.