- cryptopunks
- Для чего необходимо
- Установка и настройка TOR
- Настройка DNS
- Настройка Iptables и проверка работоспособности
- Отключение перенаправления трафика
- Несколько советов
- Анонимизация всего траффика через VPN + TOR/I2P. Собираем миддлбокс с нуля
- Постановка задачи
- Дисклеймер
- Хостинг
- Установка пакетов
- Настройка VPN
- Настройка интернета
- Настройка TOR
- Настройка I2P
- Что дальше?
- Заворачиваем весь трафик ОС в Tor
- Компонент №1: Tor
- Компонент №2: Iptables
- Компонент №3: python + Desktop Evironment UI
- Компонент №4: systemd
cryptopunks
Для чего необходимо
Бывают ситуации когда необходима анонимность, но VPN под рукой нет. И VPN вряд ли можно назвать анонимным инструментом, ведь вы на него заходите как правило со своего IP (если это не двойной VPN), а значит оставляете следы, даже если не ведутся логи. Что уж говорить о VPN-услугах, которые вы покупаете у чужих людей. Они в свою очередь чаще всего ведут и логи и сниффают трафик и при любом обращении местных спецслужб эту информацию послушно предоставляют.
TOR — неплохой инструмент для анонимности и иногда необходимо через него пропускать не только трафик из вашего браузера (что делает например tor-browser), но и вообще трафик всей системы + не все необходимые вам программы могут поддерживать socks-прокси.
Установка и настройка TOR
Для настройки используется конфиг /etc/tor/torrc, открываем/создаём и вписываем туда следующее:
Настройка DNS
Использовать ДНС-сервера от Google, либо чьи-нибудь ещё — плохая идея, т.к. они тотчас вас деанонимизируют. Будем использовать локальный ДНС средствами TOR. Для выполним следующее:
Поскольку всякие NetworkManager очень любят перезаписывать этот файл — лучше его вообще залочить на запись:
(для анлока вместо +i используйте -i)
Настройка Iptables и проверка работоспособности
Создаём скрипт iptables_setup.sh:
Переменную _tor_uid меняем на uid пользователя под которым работает tor. Определить это значение можно так:
Первая цифра, то есть 135 — uid, меняем в скрипте
Проверяем работу. Включаем tor:
Пробуем зайти на https://check.torproject.org/. Должны увидеть надпись “Congratulations. This browser is configured to use Tor”.
Теперь останавливаем TOR:
И повторно пробуем зайти на сайт, либо запускаем любую другую программу (например, IM-клиент), интернет не должен работать, т.к. выключен TOR. Если всё верно, то прописываем правила iptables в автозагрузку:
Открываем файл /etc/rc.local и перед exit 0 вставляем:
Добавляем запуск TOR в автозагрузку:
Отключение перенаправления трафика
Для того чтобы привести правила iptables к девственному виду и отключить перенаправление трафика в сеть TOR можно создать скрипт со следующим содержанием:
Несколько советов
Неплохим вариантом будет использование на хосте VPN, а в виртуальной машине TOR, но в некоторых случаях лучше действовать наоборот. Зависит от того, какие цели вы преследуете.
Если необходимо скрыть от местного провайдера ваше использование TOR, то запускайте TOR внутри VPN.
Если же необходима более серьёзная анонимность и постоянный IP (некоторые сайты блокируют, или не любят TOR — капчи хороший тому пример), то заведите девственно чистую виртуальную машину с левым MAC-адресом сетевой платы, а в ней чистый профиль браузера и под ним (ес-но тоже под TOR) зарегистрируйте либо VPS-сервер (для последующей настройки VPN), либо уже готовый VPN-сервер, пользуясь анонимной валютой (qiwi с левой симкой, либо bitcoin) и левыми ФИО и мылом (который тоже зарегайте под тором в этой виртуалке) и используйте свежезарегистрированные почту/vpn исключительно в этой виртуалке, никогда не входите под ней в свою основную почту, социальные сети и т.д. (тоже самое с свежезареганной почтой и vpn — лишь в текущей виртуалке), т.к. достаточного одного раза, чтобы ваша вторая личность была навсегда связана с основной и тогда получится что все труды были напрасны.
Источник
Анонимизация всего траффика через 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 не ротируются. И веб-морды нет.
А еще… а еще я все это обязательно опишу — в других статьях. Засим — спасибо за внимание!
Источник
Заворачиваем весь трафик ОС в Tor
Все описанное в статье реализовано в виде инструмента Toroxy, доступного на GitHub
В последнее время анонимность в сети является предметом горячих споров. Ни для кого не секрет, что данные о посещениях Интернет-ресурсов с локального устройства могут собираться на разных уровнях с целью построения «модели» пользователя, которая позже против него же и может быть использована (или могла бы). Поэтому не удивительно, что все большее количество активных пользователей Интернета становятся уверены в необходимости механизмов проксирования и анонимизации. В связи с этим появляется все больше новых VPN-клиентов, но, как показывает практика, далеко не всем из них по-настоящему можно доверять: то не все работает из коробки, то анонимизируется только HTTP-трафик, то качество реализации хромает, а то и вовсе разработчики грешат сливанием данных о своих пользователях.
В этой статье мы попробуем собрать из ряда программных компонентов собственный инструмент с UI, который бы позволил полностью анонимизировать трафик локальной системы и не допустить утечек по «прослушиваемым» каналам ни на одном из этапов работы.
Главной нашей целью будет «сборка» надежной утилиты из готовых инструментов. Очевидно, что идея создания с нуля качественного инструмента за разумный срок чревата ошибками, а поэтому бытрее и надежнее будет выбрать готовые компоненты, а затем правильно их связать!
Что должен уметь инструмент?
- Перенаправлять весь трафик целевой системы на промежуточные узлы (желательно несколько) для надежной маскировки источника
- Отслеживать возможные нарушения анонимности, исправлять их и сообщать о них с помощью UI уведомлений
Выбранные компоненты для создания инструмента:
- tor
- iptables
- python3
- systemd
Перемешав все компоненты в оболочке под названием «Linux» мы определенно сможем получить что-то стоящее, что поможет достигнуть итоговой цели.
Компонент №1: Tor
Именно вокруг этого компонента будет построена вся остальная инфраструктура инструмента. Tor предоставляет механизм, который находится в составе любого VPN-клиента — механизм заворачивания трафика через промежуточные анонимные для внешнего наблюдателя узлы (в стандартной конфигурации таких узла 3).
По умолчанию клиент Tor из стандартных пакетных репозиториев после установки начинает слушать порт 9050, принимающий любого клиента, «умеющего» socks. Проблема заключается в том, что помимо socks-трафика в нашей системе может быть куча другого трафика от приложений, не работающих по этому протоколу. В связи с этим прежде всего в пределах локальной системы придется прорубить окно в сеть Tor для любого нового сетевого соединения. Делается это достаточно просто с помощью поднятия transparent proxy в конфигурации torrc:
Отдельного внимания заслуживает UDP трафик. Дело в том, что в основе принципа луковой маршрутизации лежит концепция «соединения» (stream), существующего, как известно, только в TCP. Отправив через Tor UDP-пакет, целевая система не сможет получить на него ответ, так как ответный пакет не найдет обратной дороги. Но несмотря на эту особенность, у нас остается возможность анонимизировать DNS запросы, которые, как известно осуществляются по UDP, а заодно и включить .onion резолв:
На этом доступ в Tor открыт в пределах loopback’а.
Компонент №2: Iptables
Так как наша задача заключается в сокрытии истинного источника трафика от внешнего наблюдателя в пределах всей системы, а окно в Tor уже открыто, осталось только завернуть весь трафик в это окно. Поможет нам в этом системный файрвол, находящийся в комплекте с ядром Linux:
На данном этапе мы получаем рабочую утилиту, надежно маскирующую весь исходящий трафик, однако это только половина работы.
Компонент №3: python + Desktop Evironment UI
Каждый раз производить ручную конфигурацию из консоли (даже если это будет запуск bash-скрипта) будет достаточно утомительно, поэтому самое время приступить к написанию небольшой утилиты, помогающей нам конкретно в следующем:
- Автоматическая установка конфигурации
- Смена своего identity в пределах Tor в любой момент
- Отслеживание целостности правил iptables и их перезапись при нарушении
- Отслеживание текущего identity (IP)
- Уведомление о двух предыдущих пунктах с помощью уведомлений графическогой оболочки
При первом запуске утилита самостоятельно скачает все необходимые компоненты, а при последующих запусках будет конфигурировать Tor в связке с iptables, как описано выше.
При желании смены своего внешнего IP адреса, будет происходить взаимодействие со служебным портом Tor — 9051, открытым в самом начале для автоматизации смены IP:
Отслеживание целостности можно реализовать достаточно банально (делаем же на коленке) с помощью периодического чтения структуры правил iptables и проверки их SHA256-суммы:
Также при обнаружении несостыковок с ожидаемой контрольной суммой можно сохранить дамп правил iptables в /tmp/broken-rules-%d-%m-%Y_%I-%M-%S.log для дальнейших разбирательств. Если окажется, что то будет инициирована перезапись таблицы правил iptables.
Наблюдение за текущим IP будет происходить с помощью постоянного обращения на какой-нибудь внешний ресурс, предоставляющий IP-клиента — например, ident.me .
Ну, и напоследок задействуем DE UI для сообщения о проблемах с правилами либо о смене IP. Каждое графическое окружение в каком-то роде уникально, особенно когда речь идет об использовании UI из процесса-демона, но все же на большинстве Linux’ов такой bash-код, вызываемый из Python будет успешно показывать уведомления:
Объединив все это в 200-строчном Python скрипте, получаем то, чего добивались. Вот, например, как будет выглядеть уведомление о том, что наш identity обновился:
А вот так будет выглядеть уведомление о том, что была нарушена целостность правил Iptables с указанием выгруженного дампа, содержащего нарушение:
Компонент №4: systemd
Ну и напоследок нам определенно хотелось бы произвести единоразовую настройку и не думать в дальнейшем о своей безопасности, а потому на помощь приходят автозапуск и сервисы. В Linux есть несколько стандартных подсистем управления демонами: systemd, sysV, init. В нашем случае выбор пал на systemd из-за гибкости его настройки.
Предположим, что написанный в предыдущем шаге python-скрипт называется «toroxy» и лежит в /usr/bin/ , тогда его автозапуск и последующий мониторинг с определенной гибкостью управления демоном будет таким:
Почти все готово для «промышленной» эксплуатации. Последний штрих, который хотелось бы внести в инструмент для дополнительной надежности — это автоматическая инициализация правил iptables при запуске системы (как известно, правила iptables при перезагрузке сбрасываются) с помощью iptables-persistent:
Источник