- Заворачиваем весь трафик ОС в Tor
- Компонент №1: Tor
- Компонент №2: Iptables
- Компонент №3: python + Desktop Evironment UI
- Компонент №4: systemd
- Пропускаем весь траффик через Tor на Mac OS
- Pablo Emilio
- Шифрование на Маке. Часть 6: Перенаправление трафика через Tor
- Зачем это всё?
- Установка Tor в OS X
- Проверка установки Tor
- Создание сетевого размещения
- Автозапуск процесса Tor
- Как включить и выключить Tor
Заворачиваем весь трафик ОС в 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:
Источник
Пропускаем весь траффик через Tor на Mac OS
Pablo Emilio
В этой небольшой зарисовке рассмотрим как можно перебросить весь трафик OS X через TOR. На самом деле сложного и сверхвыдающегося здесь ничего нет, все очень просто, а самое главное это не займет много времени.
Первым делом нам нужно установить MacPorts, для этого идем на их сайт:
Качаем и устанавливаем перед этим не забываем поставить Xcode. MacPorts нам нужен для помощи в установке TOR, это система сборки программ из исходников.
Далее открываем terminal и при помощи MacPorts устанавливаем tor от имени администратора:
port install tor
Убедимся, что Tor правильно установился. Запускаем его в терминале уже без root прав:
Если все хорошо, то в терминале увидим следующие строки:
Теперь с автоматического размещения переключаемся на только что созданное (tor) и переходим в правом нижнем углу к дополнительным настройкам (Дополнительно…). Переходим на вкладку прокси и в Протокол для конфигурации выбираем SOCKS-прокси. В прокси-сервер SOCKS прописываем 127.0.0.1 и естественно порт 9050:
Чтобы не запускать tor вручную каждый раз после перезагрузки компьютера можно наладить автоматический запуск. Для этого запускаем утилиту Automator, выбираем Программа:
Слева выбираем Запустить shell-скрипт и перетаскиваем его направо:
Вместо cat вставляем следующую команду:
nohup /opt/local/bin/tor > /dev/null 2>&1 &
nohup – это утилита, которая игнорирует отлучения пользователя от системы и продолжает выполнять команду в фоновом режиме.
Закрываем Automator и сохраняем изменения:
Далее идем в Системные настройки>Пользователи и группы, выбираем текущего пользователя и слева Объекты входа, нажимаем + и добавляем недавно созданную утилиту для запуска. Теперь для включения и выключения tor достаточно нажать на яблоко в левом верхнем углу и выбрать Размещение:
Источник
Шифрование на Маке. Часть 6: Перенаправление трафика через Tor
У нас вновь появился повод обратиться к давнему, и, честно говоря, уже подзабытому циклу статей о шифровании на Маках. Им стали несколько писем от наших читателей с просьбами рассказать о том, как в OS X можно использовать Tor по максимуму.
Сразу стоит оговориться: если вы вообще не представляете, что такое Tor, написанное ниже не для вас. Пересказывать неплохую и содержательную статью о Tor в Wikipedia нам не хотелось бы, скажем лишь, что Tor – вероятно, самое лучшее и надёжное средство для обеспечения максимальной анонимности в Интернете. Это сеть прокси-серверов, перенаправляющая трафик таким образом, что вычислить вас и ваше местонахождение становится практически невозможно.
Жаль только, что создатели Tor по-прежнему не предусмотрели удобного для маководов способа перенаправить весь трафик через сеть Tor. Впрочем, выход есть.
Зачем это всё?
Официальный способ работы с Tor прост, но вот гибким его никак не назовёшь. Вам предлагается скачать с сайта проекта Tor специальную сборку Mozilla Firefox под названием Tor Browser и сёрфить через неё. Любой другой трафик шифроваться не будет, хотя всё необходимое для этого поставляется вместе с Tor Browser.
Причины этого не так просты, как может показаться. Дело тут не столько в лени со стороны представителей Tor Project, сколько в обилии разнообразных ограничений, с которыми сопряжено использование Tor. Строго говоря, далеко не весь трафик можно и нужно перенаправлять через Tor: в ряде случаев это бесполезно, потому что анонимизация сработает не полностью; в ряде случаев (например, если речь идёт о торрентах) это вредно для сети Tor, поскольку создаёт дополнительную ненужную нагрузку на участвующие в проекте компьютеры и серверы.
Разумеется, включать перенаправление любого трафика через Tor на постоянной основе мы не пропагандируем – даже параноики вряд ли будут довольны результатами. Но вот иметь возможность переключиться с Tor-трафика на обычный и наоборот в OS X здорово бы пригодилась, потому что ограничиваться довольно скудными возможностями Tor Browser мало кому захочется.
Поэтому давайте разберёмся с тем, как это можно сделать.
Установка Tor в OS X
Чтобы нормально работать с Tor, надо установить его в OS X на правах нормального системного процесса. Для этого вам потребуется пакет MacPorts. Если вы не помните, ставили его или нет, это легко проверить с помощью Терминала (вообще, Терминал в данном мануале вам будет нужен часто). Достаточно вбить команду
ports
Если Терминал ругнётся по поводу того, что такую команду не знает – MacPorts у вас нет. Предупреждаем, что установщик MacPorts капризен и любит зависать в конце. Ничего критичного в этом нет, после первого или второго повторного запуска он обычно устанавливается окончательно.
MacPorts вам будет нужен только для того, чтобы из него инсталлировать сам Tor. Для этого в Терминале нужно будет ввести команду:
sudo port install tor
Когда Tor установится вместе со всеми зависимостями, многочисленными подтверждениями и предупреждениями, вам нужно будет подготовить его к первому запуску, превратив шаблон конфигурационного файла в рабочую версию. Для этого пригодится команда:
cp /opt/local/etc/tor/torrc.sample /opt/local/etc/tor/torrc
Ради интереса можете изучить содержимое этого файла (например, командой nano /opt/local/etc/tor/torrc), но в большинстве случаев менять там что-либо не требуется.
Проверка установки Tor
Перед любыми дальнейшими действиями стоит убедиться в том, что Tor нормально установился. Запустите его командой tor в Терминале (её обязательно нужно выполнять от рядового пользователя, а не от рута, поэтому никакие приставки sudo к ней не нужны!). Если всё прошло нормально, запуск Tor будет сопровождаться следующей цепочкой сообщений:
Учтите ещё одну важную вещь: одновременно может быть запущена только одна копия Tor. Если вы уже запускали tor, снова он не откроется, пока вы не остановите соответствующий процесс. Проще всего это сделать командой killall tor.
Создание сетевого размещения
В OS X есть такая полезная, но мало кому известная вещь, как сетевые размещения. Сетевое размещение – это совокупность подключений и их настроек, которые нужны вам в настоящее время. Можно создать сколько угодно сетевых размещений и по-быстрому переключаться между ними прямо через системное меню.
Чтобы создать новое сетевое размещение, зайдите в пульт Сеть настроек системы. В верхнем списке выберите пункт «Редактировать размещения», затем нажмите на плюс и придумайте любое название (в нашем примере это «Tor»).
Теперь переключитесь на только что созданное сетевое размещение. Вам нужно будет отредактировать настройки для тех интерфейсов, которые вы собираетесь использовать для перенаправления трафика через Tor. Допустим, вы выбираете Wi-Fi. В правом нижнем углу нужно нажать «Дополнительно»:
Затем перейдите на вкладку Прокси. Слева поставьте галочку около SOCKS-прокси, а справа введите IP 127.0.0.1 и порт 9050 (как показано на скриншоте).
Сохраните все несохранённые изменения в пульте Сеть.
Казалось бы, на этом всё, но нет – Tor у вас будет работать до первой перезагрузки. Потом процесс tor надо будет запускать снова. Поэтому осталась ещё одна важная задача: налаживание автоматического запуска Tor при старте системы.
Автозапуск процесса Tor
Способов наладить автозапуск процесса в OS X достаточно – и startup item, и launch agent, и объект входа. Пожалуй, самым простым и надёжным будет последний. Вы можете скачать нашу готовую утилиту для автозапуска Tor отсюда. Если же вы хотите сделать её сами, то к вашим услугам Automator.
Запустите Automator, выберите пункт «Программа».
В списке действий слева выберите «Запустить shell-скрипт» и перетащите направо:
Вместо cat на нашем скриншоте вам нужно будет вставить вот такую хитрую конструкцию:
nohup /opt/local/bin/tor > /dev/null 2>&1 &
Она заслуживает многочисленных пояснений, но вряд ли вам будет интересно их читать в рамках этой статьи. Если все амперсанды и пробелы на своих местах, эта команда будет инициировать запуск Tor, но не будет приводить к тому, что запускающая Tor утилита Automator будет бесконечно висеть в памяти, ожидая, когда выполнение команды /opt/local/bin/tor закончится (потому что оно не заканчивается).
Исправив скрипт, сохраните результат. В окне сохранения внизу обязательно выберите пункт «Программа».
Последний шаг – создание объекта входа. Тут всё просто: отправляйтесь в системные настройки, в пульт «Пользователи и группы». Слева выберите себя любимого, справа – вкладку «Объекты входа». С помощью плюса на ней или обычным перетаскиванием добавьте в список вашу утилиту для запуска Tor:
Галочку «Скрыть» целесообразнее будет проставить. Перед добавлением объекта входа разумно положить утилиту в каком-нибудь не самом заметном месте, чтобы она не мозолила глаза, и больше её не трогать. В принципе, можно положить её и в папку «Программы».
Как включить и выключить Tor
Напоследок о главном. Знаем, инструкция выше вряд ли покажется простой даже тем, кого можно причислить к продвинутым пользователям. Но всё это компенсируется простотой включения и выключения Tor. Для этого вам достаточно будет нажать на яблочко в левом верхнем углу и в меню «Размещение» выбрать созданное вами размещение для Tor:
Проверить, действительно ли работает Tor, вы можете с помощью сайта check.torproject.org. Вы должны будете видеть примерно такое сообщение:
Вот, пожалуй, и всё, о чём мы хотели бы рассказать вам в рамках данной статьи. Удачного вам сёрфинга под прикрытием Tor 😉
Источник