пятница, 8 декабря 2006 г.

HOWTO: Анонимизируем свою работу в Internet с помощью Tor.

Перевод статьи: HOWTO: Anonymous communication with Tor - some hints and some pitfalls [Update] Uwe Hermann

Перевел: Serhiy Cherevko

Внимание: Впереди длинная статья. Вас предупреждали!



Что?

Tor - это программа, распространяющаяся по лицензии BSD, разработанная Roger Dingledine и Nick Mathewson, которая дает возможность анонимного доступа в Internet через TCP.

На сайте разработчиков написано:

Tor - это набор средств, которые подойдут как для организаций, так и для обычных пользователей, которые хотят улучшить безопасность работы в Internet. Tor поможет вам засекретить работу браузера, программ обмена мгновенными сообщениями, IRC, SSH и других приложений, использующих протокол TCP. Tor также предоставляет платформу, на которой можно разрабатывать приложения с уже встроенными функциями защиты.

Целью Tor является защита пользователя от:
  • анализа трафика;
  • сетевого надзора, который может угрожать безопасности пользователя;
  • раскрытия конфиденциальной информации о бизнес-активности и бизнес- отношениях.

Технология Tor основана на использовании большого количества Tor-серверов (nodes), вся входящая и исходящая информация проходит через эти сервера.

Также Tor позволяет устанавливать так называемые скрытые сервисы Tor, т.е. разного вида серверы (Web, SSH и так далее) с IP, скрытым от пользователей.


Почему?

Зачем использовать Tor? Наверное для того чтобы никто не смог собирать, анализировать и использовать против вас информацию о вашем пребывании в Internet. Или возьмем другой пример. Вы хотите скачать что-нибудь в Internet, но не хотите чтобы можно было узнать кто это делает. Или, предположим, есть сервер, скачивать с которого можно одновременно только один файл. Используя Tor, вы можете менять ваш IP каждую минуту. Сессия скачивания не прерывается. Поэтому во вкладках Firefox можно одновременно загружать несколько файлов. Применений много.
Но все это замедлит работу в Internet, так как запрос и ответ должны пройти Tor-сервера (примечание переводчика).

Как?

Как я уже упоминал выше, запрос браузера (клиента мгновенными сообщениями, агрегатора RSS...) сначала проходит сеть Tor-серверов, доходит до нужного сервера и обратно, уже через другие сервера, попадает на компьютер пользователя. При этом набор серверов совершенно произволен. Сервера стоят по всему миру. Вероятность вычислить пользователя практически нулевая.
Для более полной технической документации можете обратится сюда и сюда.

Для того чтобы использовать Tor, надо установить Tor клиент/демон (не обязательно Server!). Если вы счастливый пользователь Debian и Debian-производных систем (Kubuntu, Ubuntu, MEPIS), наберите следующее:

sudo apt-get install tor

для пользователей других систем, скачайте исходники отсюда
и скомпилируйте их.

Обычно Tor используется совместно с Privoxy, специальным HTTP-прокси, который следит, чтобы ваш браузер не допускал всплывающих окон, баннеров, жабаскриптов, кукисов и т.д.
В Debian ставим:

sudo apt-get install privoxy

Все. После установки и запуска соответствующих программ, можно приступить к настройке вашего Веб-браузера. Для этого нужно установить Privoxy в качестве HTTP-proxy (описано ниже). После этого Privoxy будет использовать Tor, чтобы скрывать ваше пребывание в Internet. Для этого в файл /etc/privoxy/config добавьте следующее:

"forward-socks4a / localhost:9050 ."


Анонимное использование различных приложений.

Большинство (но не всё) из нижеприведенного описано в Torify HOWTO. Все, чего там не хватает, вы найдете здесь. Поскольку я немного параноик, то работу всех приложений проверял с помощью Ethereal, чтобы убедиться в их анонимности. Если вы такие же как и я, можете проделать тоже самое.

Внимание: DNS утечки:

Главная проблема большинства приложений, это утечка DNS-запросов. Т.е., хотя и используется Tor, приложения сначала посылают DNS-запрос "незатореным" чтобы получить IP-адрес конечной цели. И уже только после этого обращаются к конечной цели ("заторенными"). Следовательно, любой подслушивающий с более чем тремя извилинами сможет выяснить посещенный вами Веб-сайт по DNS-запросу. Чтобы этого избежать, используйте Tor с Privoxy, совместно. Это сводит на нет все DNS-утечки.
Многие приложения, основанные не на HTTP, используют маленькие программки, называемые torify, но у них есть DNS-утечки. Смотрите ниже.

Итак. Приложения.

Web-браузеры:Firefox, Mozilla, Galeon, Konqueror, ...:

Надо примонтировать Privoxy как HTTP(s)-прокси, т.е использовать прокси - 127.0.0.1 и порт - 8118.

Давайте посмотрим на примере Firefox:
Идем в Правка -> Настройки -> Основные -> Параметры соединения -> Настройка прокси вручную и вносим:

HTTP Proxy: 127.0.0.1 port 8118
SSL Proxy: 127.0.0.1 port 8118
FTP Proxy: 127.0.0.1 port 8118
SOCKS v5

Для Konqueror:
Настройки -> Настроить Konqueror -> Прокси -> Указать параметры прокси вручную -> Настроить:

HTTP Proxy: 127.0.0.1 port 8118
HTTPS Proxy: 127.0.0.1 port 8118
FTP Proxy: 127.0.0.1 port 8118


Внимание: Хотя Privoxy и не поддерживает FTP, вам все же следует настроить браузер с использованием Tor + Privoxy и для FTP. Сделав это, при попытке набрать ftp:// URLs вы получите ошибку, но зато информация не будет послана незасекреченной.

Внимание: Firefox's "Live Bookmarks" (RSS feeds) могут иметь проблемы при переключении с использование/неиспользование прокси. Firefox периодически запрашивает источники, на которые вы подписались. Так, если вы выключили Tor + Privoxy, Firefox и дальше будет посылать запросы, но уже не анонимно, и вы об этом даже не узнаете. Чтобы этого избежать, удалите все "Live Bookmarks" или никогда не выключайте Tor + Privoxy.


Приложения, основанные на использовании HTTP: lynx, links, w3m, wget, curl, ...:

Большинство других приложений, таких как wget, могут быть анонимизированы, используя переменные окружения http_proxy и HTTP_PROXY. Другие приложение могут иметь другие способы установки HTTP-прокси (программы, которые не поддерживают эти переменные окружения).
Добавьте в ваш ~/.bashrc (или заменяющий его) файл, следующее:

http_proxy=http://127.0.0.1:8118/
HTTP_PROXY=$http_proxy
export http_proxy HTTP_PROXY

Если же по каким-либо причинам у вас что-то не получилось, то вы всегда можете в командной строке воспользоваться опцией:

-http-proxy 127.0.0.1:8118.


Приложения для обмена мгновенными сообщениями: Gaim:

Настройки -> Сетевое соединение -> Прокси:

Proxy type: Socks 5
Host: 127.0.0.1
Port: 9050

У Gaim утечек DNS-запросов не наблюдалось.


Debian (Ubuntu, Kubuntu): APT:

Установки http_proxy достаточно, apt-get поддерживает переменную окружения http_proxy.
Но вы также можете добавить в файл /etc/apt/apt-conf, следующую линию:

Acquire::http::Proxy "http://127.0.0.1:8118/";

У APT утечек DNS-запросов не наблюдалось.

Внимание: так как Privoxy не поддерживат FTP, то все вышесказанное будет работать только с HTTP источниками (только линии deb/deb-src в /etc/apt/sources.list).


Программы для считывания RSS-лент: Akregator:

Информация о том, на какие RSS-ленты вы подписаны, является очень заманчивой для многих любителей на этом заработать. Следовательно, очень важно анонимизировать RSS-клиент. Но здесь все просто. Akregator использует напрямую Konqueror, так что если вы настроили последний, то проблем возникнуть не дожно.

У Akregator утечек DNS-запросов также не наблюдалось.


Безопасные сессии: SSH:

Для того чтобы анонимизировать все ssh соединения (ssh, slogin, sftp, ...), отредактируйте /etc/ssh/ssh_config и/или ~/.ssh/config, вставив следующeе:

Host *
ProxyCommand socat STDIO SOCKS4A:127.0.0.1:%h:%p,socksport=9050

Для этого требуется socat. Поэтому:

apt-get install socat

У SSH утечек DNS-запросов не наблюдалось.

Внимание: Просто использование torify ssh дает DNS утечки!


IRC: XChat:

Settings-> Preferences -> Network -> Network setup -> Proxy server:

Hostname: 127.0.0.1
Port: 9050
Type: Socks5

После этого убедитесь, что вы отметили поле "Use a proxy server" в диалоге настройки IRC сервера, который вы хотите использовать.


Email: fetchmail:

Используя только torify fetchmail, вы столкнетесь с утечкой DNS-запросов. Идеальным решением будет использовать tor-resolve (утилиты, которая расшепляет DNS запросы через Tor-сервера), но я пока не нашел как это применить. Поэтому сейчас я использую следующее. Кодирую IP адрес в файле конфигурации ~/.fetchmailrc, а после этого уже, использую torify fetchmail. Но это приводит к выводу разных сообщений, например:

"fetchmail: Server CommonName mismatch: foo.bar.com != xxx.xxx.xxx.xxx"

Fetchmail я всегда запускаю вручную, кликая на иконку, находящуюся в IceWM тулбаре. Поэтому в конфигурационный файл ~/.icewm/toolbar надо добавить запись:

prog Fetchmail fetchmail xterm -e torify fetchmail

Для тех кто хочет запускать с командной строки, добавьте следующую строку в файл ~/.bashrc :

alias fetchmail='torify fetchmail'


Приложения которые нельзя относительно легко сделать анонимными:

Все что не использует TCP, не может быть легко использованым с Tor, так как последний работает с TCP. Но вы можете безопасно использовать специальные web-интерфейсы, как, например, dnsstuff.com через Tor + Privoxy (если они на заблокируют пользователей Tor).

  • Не TCP трафик от приложений ping, host, dig, nslookup, nmap, traceroute и многих других.
  • whois: хотя torify whois google.com приводит к утечке DNS-запроса для whois-server (ваш сервер), зато нет никакой утечки информации о сервере, который вы прослушиваете. Может кто-нибудь это подтвердить? Хотя наверное более безопасный метод - использовать web-интерфейсы.
  • FTP: хотя torify ncftp в принципе работает, опять же возникают проблемы с утечкой DNS-запросов. Я пока еще не нашел решение этой проблемы.
  • Sending email (SMTP): Не представляю как можно совместить это с Tor. Большинство Tor серверов блокируют SMTP по умолчанию. Скорей всего самое лучшее решение Mixmaster/Mixminion
  • CVS, svn, Bittorrent/Azureus (untested HOWTO), usenet clients (pan, slrn), xmms: TODO. : еще не проверялись

О том, почему не стоит применять Tor к торрент-клиенту, читайте в этой статье.


Некоторые полезные советы:

  • Не потеряйте свою анонимность только из-за своей невнимательности;
  • IRC: не используете ник, который может указать на вас. Не пользуйтесь такими услугами как DCC. Отключите CTCP, запрос версии, автоматический прием файлов от других пользователей IRC, etc. etc;
  • Не допускайте случайного доступа до URL скрытых Tor-серверов, если в браузере не активирован Tor+Privoxy. Это может привести к тому, что кто-нибудь сможет вычислить ваши координаты;
  • Проверьте, что приложение не дает утечки DNS запросов;
  • Подправьте не только ваши ~/.foobarrc конфигурационные файлы, но и те, что в папке /etc. Не сделав этого, вы можете, например, выйти в Интернет через ssh, lynx или wget под пользователем root. Естественно, вы не будете анонимны;
  • Везде и во всем отключите автоматические обновления;
  • Никогда, никогда не думайте что Tor шифрует ваш траффик. Он этого не делает. Поэтому ничего не посылайте в виде обычного текста. Tor только делает анонимным ваш трафик, но не шифрует его. Всегда в дополнение к Tor используйте шифрование;
  • Следите внимательно за языком, на котором вы пишите. Хороший лингвист, в случае надобности, сможет доказать что написали это именно вы.

Если вы чего-то не нашли здесь:

Больше информации можно найти по следующим сслылкам:
Tor documentation
Tor wiki
Tor FAQ
some slides
video (torrent)

Это все. Буду рад услышать ваши комментарии, особенно о том как применить эту технику к другим приложениям. Также пишите если что-нибудь не получилось.



14 коммент.:

Kirill Danilov комментирует...

очень понравился ваш блог, что добавил вас в свои ссылки в своем блоге.
Я тоже увлекаюсь анонимизацией и про DNS-утечки задумывался, но проверить не знал как, не могли бы по подробнее рассказать о технике анализа с помощью ethereal. Я пользуюсь программами proxychains и conneсt (connect-proxy) (доступно через apt для Debian-like систем).

Статья очень понравилась, но после прочтения другого блога http://zhengxi.livejournal.com/30803.html
стало сомнительным использование tor.

Анонимный комментирует...

автор поста в LJ на который вы сслаетесь лишь продемонстировал свое нежелание внимательно читать документацию и архив рассылки. возможен и фишинг и перехват незашифрованных данных на последнем узле, эта тема много раз уже обсуждена, но все далеко не так плохо как описано.

Unknown комментирует...

Относительно данного блога:
http://zhengxi.livejournal.com/30803.html

любой админ на маршрутизаторе или мэйл снрвере может изменить ваш контент, прослушать не зашифрованный пароль итд... Так что автор блога никакой америки не открыл. За аутентичность и конфиденциальность отвечают другие протоколы: IPSec, SSL, etc... и если вы используете эти протоколы то ни какой хакер с конечного Tor'a вам не навредит.

Анонимный комментирует...

В статье выделено, что информация передается в незашифрованном виде. Поэтому нужно пользоваться дополнительными средствами, как указал Alexandre.

serhiy комментирует...

Нашел статью о том как устанавливать Tor-сервер. Может кому-нибудь будет интересно -
http://www.debian-administration.org/articles/479

Анонимный комментирует...

Доброго времени суток Сергей Черевко, мне как раз очень полезна Ваша статья. Вродебы все настроил работает IP не реальный. Но есть одна проблемка дело в том что я в сети через GPRS и по этому трафик для меня существенно. При подключении через tor+privoxy сразу качается 1,3М + 10-20кВ каждую минуту две. Так вот уменя вопросы.
1. Это нормальная ситуация, или я что то сделал не так?
2. Можно ли это исправить и как?
Зарание благодарю за любые ответы.

serhiy комментирует...

Доброе утро(вечер) и Вам. Очень понравился и озадачил Ваш вопрос. Мне, как не специалисту и не автору данной статьи (я лишь перевел) пришлось немного поискать. Вот что я нашел:
http://www.pgpru.com/%D4%EE%F0%F3%EC/%C0%ED%EE%ED%E8%EC%ED%EE%F1%F2%FC%C2%C8%ED%F2%E5%F0%ED%E5%F2/%D2%CE%D0%C6%F0%E5%F2%D2%F0%E0%F4%E8%EA?show_comments=1&p=1#Comment8368
http://wiki.noreply.org/noreply/TheOnionRouter/TorFAQ#CellOverhead
(ссылки можно посмотреть в коде странички, здесь все равно обрежет)
Скорей всего Tor столько и жрет и поделать ничего нельзя. Но я могу и ошибаться. Если нужно анонимизировать лишь браузер и не на все время - воспользуйтесь плагином к файрфоксу torbutton. Это существенно понизит затраты. Я здесь http://linux-ru.blogspot.com/2006/12/firefox-torbutton.html
описал как его установить.
Еще могу посоветовать обратиться с этим вопросом к автору статьи. Там можно задать вопрос в комментариях.
Извиняюсь, что толком не помог.

Анонимный комментирует...
Этот комментарий был удален администратором блога.
serhiy комментирует...

Мой E-mail теперь доступен в профиле пользователя. Пожалуйста пишите туда.

Анонимный комментирует...

спасибо большое. Для нашей страны (Беларусь) эта фича скоро будет иметь очень большое значение.

огромный респект,
Виталий

Анонимный комментирует...

Скажите ,если я хочу скрыть свой IP более простым способом?Это возможно?

Анонимный комментирует...

*И что бы вы посоветовали?Мне в принципе не надо не каких шпионских штучек,что-нибудь самое простое.

Анонимный комментирует...

www.fincredinvest.ru
www.eurasiajets.ru
www.vykup.ru
www.roborter.ru
www.svetorezerv.ru
www.ledproducts.ru
www.infosoni.ru
www.logoproducts.ru
www.faalumni.ru
www.lobbizm.ru
www.medadvokat.ru
www.rosgolf.ru

Анонимный комментирует...

как быть в случае если нужно заторифицыровать все хосты в VPN сети что бы при подключении к ней у впн-пользователя автоматически торифицировался SSH ?