# Tor (Русский)

Tor - открытая реализация анонимной сети луковой маршрутизации 2-го поколения[1]. Он, вместе с прокси-сервером Privoxy, может пригодится тем, кто хочет сохранить анонимность в интернете, а также защитить трафик от третьей стороны (провайдера и других любопытных). Также, использование подобного программного обеспечения актуально для стран в которых есть интернет-церзура.

Подробнее о луковой маршрутизации и принципах её работы можно прочитать в Википедии.

## Принцип работы

Пользователи сети Tor запускают прокси на своей машине. Это приложение соединяется с сетью и формирует цепочку из трех серверов, которая периодически меняется. Передаваемые данные шифруются несколько раз на вашем компьютере и передаются на цепь серверов, каждый из которых последовательно снимает свой "луковый" слой шифрования. На последнем сервере ваша инфорамция приобретает первоначальный вид. Большое количество промежуточных узлов значительно замедляет скорость работы сети.

Tor предоставляет SOCKS интерфейс, через который могут направлять трафик совместимые приложения. Происходит т.н. "торификация" соединения.

Важно: Учтите, что недобросовестные владельцы конечных серверов (нод в цепочке) могут перехватывать ваш трафик, так что озаботьесь дополнительным шифрованием, для предотвращения перехвата личной информации и паролей.
Важно: Tor сам по себе не обеспечивает анонимности: он не дает определить откуда произошла передача данных, но все ещё остается возможность идентификации личности по их содержимому (см. Want Tor to really work?).

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

## Установка и настройка

Установим Tor. Его пакет расположен в `[community]`.

    # pacman -S tor

Для лучшего понимания работы просмотрите конфигурационный файл `/etc/tor/torrc`. Опции подробно расписаны в `man tor` и на сайте проекта.

Конфигурационный файл по умолчанию подойдет для большинства пользователей. Вы также можете использовать для настройки и управление графический клиент Vidalia - это Qt GUI для Tor (пакет Vidalia в AUR).

Кроме конфигурирования и контроля над процессом работы вы также получаете возможность видеть статус сети Tor, монитор трафика, просматривать фильтровать и искать логи.

Установить значение дескриптора ulimits можно изменив переменную `TOR_MAX_FD` в конфигурационном файле `/etc/conf.d/tor`.

## Логгирование

По умолчанию Tor выводит логи в "stdout" в качестве уведомлений. Вы можете включить запись логов в файле`torrc` и в этом случае они будут писаться в `/usr/local/var/log/tor/`.

## Использование

SysV

Запустите Tor как демон:

    # /etc/rc.d/tor start

Чтобы добавить Tor в автозагрузку, допишите `tor` в секцию `DAEMONS` в вашем файле `/etc/rc.conf`:

    DAEMONS=(... tor ...)

systemd

    systemctl start tor.service

(systemctl enable tor.service для запуска Tor во время загрузки системы)

Чтобы проверить, работает ли Tor, посетите страницу Tor, Harvard или Xenobite.eu.

## Веб-сёрфинг

Обратите внимание: В связи со сложностями обеспечения анонимности (cookies, javascripts, etc), проект Torprogect рекомендует использовать свою версию Firefox для анонимного серфинга. Мы вас предупреждали. [2]

Firefox и Chromium позволяют без проблем направлять трафик через Tor.

### Firefox

Вы можете просто добавить Tor в качестве SOCKS прокси ("localhost", порт "9050"), открыв браузер и перейдя в Настройки > Дополнительные > Вкладка "Сеть" > Настроить. Чтобы перенаправить все DNS-запросы Firefox через прокси (иначе они пойдут не через Tor и будут доступны, например, провайдеру), откройте новую вкладку и введите `about:config`. Измените переменную network.proxy.socks_remote_dns на yes.

Можно также использовать дополнения, позволяющие переключаться между множественными прокси (например, вы можете использовать Tor в связке с "ssh -D"). В качестве примера можно привести "FoxyProxy".

Также можно установить дополнение TorButton, выполняющий и другие функции, который, однако, более не подерживается.

### Chromium

Просто запустите:

    $ chromium --proxy-server="socks://localhost:9050"

## Tor и HTTP прокси

Если вам требуется какой-либо HTTP-прокси.

Обратите внимание: На данный момент командой разработчиков Tor рекомендуется прокси-сервер Polipo.

### Polipo

Polipo это маленький и быстрый HTTP-прокси. Установите и настройте его в соответствии со статьёй Polipo. Также вы можете воспользоваться готовой конфигурацией опубликованной на сайте Torprogect.

Обратите внимание, что polipo не требуется если вы хотите использовать прокси SOCKS 5, который доступен на порту 9050 после запуска Tor. Если вы хотите использовать Chromium через сеть Tor вам не требуется пакет polipo. Об использовании см. выше.

### Privoxy

Privoxy - это HTTP-прокси, который использует SOCKS4a и может фильтровать html/cookie. Установить и настроить его поможет статья Privoxy.

Добавьте

    forward-socks4a / localhost:9050 . # Не забудте точку в конце

в файл /etc/privoxy/config. Убедитесь,

    chown privoxy:privoxy /etc/privoxy/config

что на него выставлены нужные права.

Выполните следующие команды:

       mkdir /var/log/privoxy
       touch /var/log/privoxy/errorfile
       touch /var/log/privoxy/logfile
       chown -R privoxy:adm /var/log/privoxy

Удостоверьтесь, что имя компьютера, записаное в /etc/rc.conf (параметр HOSTNAME) совпадает с именем, записанным в /etc/hosts.

Запустите демоны tor и privoxy

    /etc/rc.d/tor start
    /etc/rc.d/privoxy start

Также, их можно добавить в автозапуск в файл /etc/rc.conf

    DAEMONS=(syslog-ng ... privoxy tor)

#### Tor и Privoxy в Firefox

Настройте прокси в Firefox:

    Hostname: 127.0.0.1 Port: 8118

Можно также добавить необходимые исключения.

#### Tor и Privoxy в других приложениях

Вы можете использовать Privoxy для интернет-пейджеров (Jabber, IRC) и прочих приложений. Просто укажите IP-адрес и номер порта (127.0.0.1 port 8118).

Чтобы использовать SOCKS прокси напрямую вы можете указать приложению на Tor непосредственно (127.0.0.1 port 9050). Недостатоком методя является возможность самостоятельной посылки DNS-запросов приложением в обход Tor. Рассмотрите возможность использования SOCKS4A (например, через Privoxy) вместо нее.

## Запуск сервера Tor

### Настройка

Вы должны иметь скорость доступа в интернет не менее 20кб/с:

    Nickname <tornickname>
    ORPort 9001
    BandwidthRate 20 KB            # Замедлить трафик до 20кб/с
    BandwidthBurst 50 KB           # Но позволить всплески до 50кб/с

Allow irc ports 6660-6667 to exit from node:

    ExitPolicy accept *:6660-6667,reject *:* # Разрешить IRC порты, но не более

Run Tor as an exit node:

    ExitPolicy accept *:119        # Принимать nntp тажке как и политики выходных нод по умолчанию

Run Tor as middleman ( a relay):

    ExitPolicy reject *:*

## TorDNS

Tor версий 0.2.x имеет встроенный механизм перенаправления DNS-запросов. Чтобы включить его, добавьте следующую строку в конфигурационный файл:

    /etc/tor/torrc

     DNSPort 9053
     AutomapHostsOnResolve 1
     AutomapHostsSuffixes .exit,.onion

И перезапустите Tor, чтобы он подхватил новые настройки:

    /etc/rc.d/tor restart

Это позволит Tor принимать запросы (например слушать 9053 порт в этом примере) как обычному DNS-серверу, и разрешать домены по сети Tor. Недостатком является то, что становится возможным разрешать только A-записи; MX и NS запросы будут проигнорированы. См. документацию для Debian.

DNS запросы могут быть осуществлены средствами коммандного интерпретатора, используя `tor-resolve`. For example:

    $ tor-resolve archlinux.org
    66.211.214.131

## "Торификация"

"Торификация" (torify) позволяет использовать приложение через сеть Tor без каких либо дополнительных настроек в самом приложении. Выдержка из man page:

     torify - это простая оболочка, вызывающая tsocks с конфигурационным файлом

     tsocks представляет собой оболочку между библиотекой tsocks и приложением, которое вы хотите соксифицировать

Пример использования:

    $ torify elinks checkip.dyndns.org
    $ torify wget -qO- https://check.torproject.org/ | grep -i congratulations

Учтите, что torify не будет выполнять поиск DNS через Tordns. Для этого придётся использовать его в сочетании с `tor-resolve` (описано выше). В этом случае процедура для первого из приведенных примеров будет выглядеть следующим образом:

    $ tor-resolve checkip.dyndns.org
    208.78.69.70
    $ torify elinks 208.78.69.70

## Решение проблем

### Проблема с пользовательским значением

Если демон tor не запускается, выполните слудующую комманду от root:

    # tor

Если вы получили следующую ошибку:

    May 23 00:27:24.624 [warn] Error setting groups to gid 43: "Operation not permitted".
    May 23 00:27:24.624 [warn] If you set the "User" option, you must start Tor as root.
    May 23 00:27:24.624 [warn] Failed to parse/validate config: Problem with User value. See logs for details.
    May 23 00:27:24.624 [err] Reading config failed--see warnings above.

Она означает проблемы с пользовательскими значениями. Приступим к решению проблемы.

Узнайте права доступа к папке `/var/lib/tor`:

    # ls -l /var/lib/

Если права `/var/lib/tor` такие же как указанные ниже, то это значит, что директория является собственностью пользователя tor группы tor.

    drwx------ 2 tor    tor    4096 May 12 21:03 tor

Измените владельца и группу:

    # chown -R root:root /var/lib/tor

Теперь права доступы должны быть такими:

    drwx------ 2 root   root   4096 May 12 21:03 tor

Теперь откройте `/etc/tor/torrc` и найдите следующие строки:

    ## Uncomment this to start the process in the background... or use
    ## --runasdaemon 1 on the command line.
    RunAsDaemon 1
    User tor
    Group tor

Закомментируйте строки User tor и Group tor:

    ## Uncomment this to start the process in the background... or use
    ## --runasdaemon 1 on the command line.
    RunAsDaemon 1
    #User tor
    #Group tor

Сохраните и перезапустите демон tor. Теперь всё должно работать.

    # /etc/rc.d/tor restart

## Внешние ссылки

- Official Website
- Unix-based Tor Articles
- Software commonly integrated with Tor
- How to set up a Tor Hidden Service

Categories:

- Internet Applications (Русский)
- Proxy servers (Русский)
- Русский
- Security (Русский)