[Cтатья] Поднимаем свою Tor ноду ¶
By: megamozG on 2014-04-23 10 ч.
[Cтатья] Поднимаем свою Tor ноду
Здравствуйте, дорогие товарищи! Сегодня мы настроим свою Tor ноду на анонимном VPS. У вас сразу возникнет вопрос: зачем? Я очень давний пользователь Tor, я пользуюсь им уже 10 лет, в последние 5 лет он стал одним из моих главных рабочих инструментов. Tor дал мне многое, но брать ничего не отдавая - плохо, халява не бесконечна, а эгоистический, хищнический подход приводит к ее преждевременному исчерпанию, поэтому я считаю своим долгом помочь развитию сети Tor и вам советую поступать также. Помимо того, наличие подконтрольных вам Tor узлов позволяет существенно увеличить вашу анонимность, и в некоторой мере - анонимность других пользователей Tor. Как этим воспользоваться, я расскажу в конце статьи.
Поднимать будем промежуточную ноду, потому что держать Exit существенно сложнее, он генерирует много абузов и требует постоянного присмотра. Промежуточная нода никаких проблем не вызывает, знай себе оплачивай хостинг вовремя. Вы можете поднимать промежуточную ноду где угодно, хоть у себя дома, но мы будем делать это полностью анонимно, просто так для тренировки, ну и чтобы в будущем иметь расширенные возможности по использованию нашей ноды.
Для нашей ноды я выбрал хостинг https://www.dataclub.biz/, как достаточно дешевый хостинг принимающий Bitcoin'ы, беспроблемный и не имеющий лишних заморочек. Вы можете выбрать любой другой хостинг с удобными вам методами оплаты (я рекомендую оплату биткоинами, либо через анонимный ЯД кошелек с закидыванием туда денег через терминал).
Регистрация почты
Первым делом зарегистрируем новый email на сервисе https://www.safe-mail.net/ (вы можете выбрать любой другой, но русскоязычные почтовые сервисы нежелательны). Сразу после регистрации почты идем на вкладку Preferences и отключаем IP checks, потому что мы будем пользоваться этой почтой через Tor, также включаем доступ через POP3 и разрешаем POP3 клиенту удалять сообщения с сервера. Зайдите в Preferences -> Mail Filtering и отключите антиспам, он часто удаляет нужные письма. Дальше можете работать с почтой через POP3s/SMTPs (почтовый сервер rimon.safe-mail.net), либо через веб интерфейс.
Данные почты сохраняем, она вам понадобится в будущем, желательно ее регулярно проверять. На почту будут приходить уведомления от хостера и от Tor project.
Покупка сервера
Для нашей будущей ноды я выбрал самый дешевый VPS "Basic package" с характеристиками "4*****U, 512 MB RAM, Unlimited Traffic, 10 GB Disk Space, Based on OpenVZ" ценой 12.97$ в месяц. Этого хватит чтобы пропускать через нашу ноду до 50 мегабит трафика, но хостер ограничивает пропускную способность на уровне 20 мегабит, мы настроим на 15, сильно наглеть не стоит, на VPS ресурсы общие и хостер может быть не в восторге от их черезмерного использования.
Выбираем операционную систему Debian и период оплаты 6 месяцев, за что нам дадут 10% скидку. Местоположение сервера - Латвия (там дешевле), дополнительных IP, *****anel и Additional HDD space не нужно. На следующей странице регистрируемся, оплачиваем через Bitcoin и копируем ID транзакции на страницу оплаты. Получаем сообщение:
Thank you! Your order was accepted, awaiting activation!
Please wait, you will receive an email when the service will be activated.
The activation takes 2 hours in working hours* and 12 hours in free hours*.
Ждем письма с данными для доступа к серверу и VPS Admin Account. Если письмо не пришло в течении суток, нужно написать в техподдержку.
Настройка сервера
Итак, мы получили сервер, теперь заходим на него по SSH (если у вас Windows, используйте PuTTY).
Внимание! не забудьте пустить SSH соединение через Tor! Иначе на этом шаге вы потеряете анонимность.
login as: root
[email protected]'s password:
Linux ip-218-141 2.6.32-042stab068.8 #1 SMP Fri Dec 7 17:06:14 MSK 2012 i686
The programs included with the Debian GNU/Linux system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.
Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
root@ip-218-141:~#
Первым делом нужно сменить пароль с помощью команды passwd. Для лучшей безопасности следует настроить авторизацию по ключам, но это не принципиально и я не буду про это рассказывать, ищите в гугле.
root@ip-218-141:~# passwd root
Enter new UNIX password:
Retype new UNIX password:
passwd: password updated successfully
Теперь посмотрим чего на сервере есть лишнего и удаляем это. Чем меньше левого софта, тем меньше уязвимостей и впустую потраченных ресурсов.
root@ip-218-141:~# ps aux
USER PID %*****U %MEM VSZ RSS TTY STAT START TIME COMMAND
root 1 0.0 0.3 3136 1788 ? Ss 02:48 0:00 init
root 2 0.0 0.0 0 0 ? S 02:48 0:00 [kthreadd/591]
root 3 0.0 0.0 0 0 ? S 02:48 0:00 [khelper/591]
root 84 0.0 0.1 2388 788 ? S 02:48 0:00 upstart-udev-bridge --daemon
root 90 0.0 0.1 2356 980 ? Ss 02:48 0:00 /sbin/udevd --daemon
root 121 0.0 0.1 2352 728 ? S 02:48 0:00 /sbin/udevd --daemon
root 122 0.0 0.1 2352 724 ? S 02:48 0:00 /sbin/udevd --daemon
root 363 0.0 0.1 2380 644 ? S 02:48 0:00 upstart-socket-bridge --daemon
root 1561 0.0 0.2 6336 1056 ? Ss 02:48 0:00 /usr/sbin/sshd
root 1591 0.0 0.2 33848 1480 ? Sl 02:48 0:00 /usr/sbin/rsyslogd -c5
root 1636 0.0 0.1 10024 808 ? Ss 02:48 0:00 /usr/sbin/saslauthd -a pam -c -m /var/run/saslauthd -n 2
root 1637 0.0 0.0 10024 452 ? S 02:48 0:00 /usr/sbin/saslauthd -a pam -c -m /var/run/saslauthd -n 2
root 1789 0.0 0.3 9924 1632 ? Ss 02:48 0:00 sendmail: MTA: accepting connections
root 1860 0.0 0.1 2460 848 ? Ss 02:49 0:00 /usr/sbin/xinetd -pidfile /var/run/xinetd.pid -stayalive -inetd_compat -inetd_ipv6
root 1893 0.0 0.5 5620 2648 ? Ss 02:49 0:00 /usr/sbin/apache2 -k start
www-data 1897 0.0 0.3 5644 2052 ? S 02:49 0:00 /usr/sbin/apache2 -k start
root 1937 0.0 0.1 2176 880 ? Ss 02:49 0:00 /usr/sbin/cron
root 2245 0.0 0.6 9136 3368 ? Rs 05:46 0:00 sshd: root@pts/0
root 2247 0.0 0.3 3028 1664 pts/0 Ss 05:46 0:00 -bash
root 2267 0.0 0.1 2684 968 pts/0 R+ 05:58 0:00 ps aux
root@ip-218-141:~# netstat -ltupn
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
t***** 0 0 127.0.0.1:25 0.0.0.0:* LISTEN 1789/sendmail: MTA:
t***** 0 0 127.0.0.1:587 0.0.0.0:* LISTEN 1789/sendmail: MTA:
t***** 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 1893/apache2
t***** 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 1561/sshd
t*****6 0 0 :::22 :::* LISTEN 1561/sshd
root@ip-218-141:~#
Лишними являются процессы saslauthd, sendmail, apache2, xinetd.
apt-get remove apache2 apache2-mpm-prefork apache2-doc apache2-utils apache2.2-bin apache2.2-common
apt-get remove sendmail sendmail-base sendmail-bin sendmail-cf sendmail-doc
apt-get remove sasl2-bin
apt-get remove xinetd
apt-get remove samba samba-common
apt-get autoremove
reboot
Подключившись после перезагрузки, снова проверяем наличие лишних процессов и открытых портов:
root@ip-218-141:~# ps aux
USER PID %*****U %MEM VSZ RSS TTY STAT START TIME COMMAND
root 1 0.0 0.3 3136 1784 ? Ss 06:20 0:00 init
root 2 0.0 0.0 0 0 ? S 06:20 0:00 [kthreadd/591]
root 3 0.0 0.0 0 0 ? S 06:20 0:00 [khelper/591]
root 86 0.0 0.1 2388 792 ? S 06:20 0:00 upstart-udev-bridge --daemon
root 94 0.0 0.1 2356 988 ? Ss 06:20 0:00 /sbin/udevd --daemon
root 129 0.0 0.1 2352 732 ? S 06:20 0:00 /sbin/udevd --daemon
root 131 0.0 0.1 2352 732 ? S 06:20 0:00 /sbin/udevd --daemon
root 343 0.0 0.1 2380 648 ? S 06:20 0:00 upstart-socket-bridge --daemon
root 1536 0.0 0.2 33844 1472 ? Sl 06:20 0:00 /usr/sbin/rsyslogd -c5
root 1579 0.0 0.2 6336 1052 ? Ss 06:20 0:00 /usr/sbin/sshd
root 1624 0.0 0.1 2176 784 ? Ss 06:20 0:00 /usr/sbin/cron
root 1654 0.1 0.6 9136 3368 ? Ss 06:20 0:00 sshd: root@pts/0
root 1656 0.0 0.3 3024 1648 pts/0 Ss 06:21 0:00 -bash
root 1660 0.0 0.1 2684 972 pts/0 R+ 06:21 0:00 ps aux
root@ip-218-141:~# netstat -ltupn
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
t***** 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 1579/sshd
t*****6 0 0 :::22 :::* LISTEN 1579/sshd
root@ip-218-141:~#
В процессах нет ничего лишнего, из открытых портов только SSH. Теперь нужно обновить систему, не будем полагаться на свежесть дистрибутива у хостера. Это обязательно нужно сделать, чтобы не получить уязвимую конфигурацию. Также установим утилиты, которые понадобятся в дальнейшем.
apt-get update && apt-get upgrade
apt-get install nano iftop iperf
reboot
Установка и настройка Tor
Теперь можно устанавливать Tor. Определяем версию Debian, добавляем соответствующий репозиторий в /etc/apt/sources.list, импортируем ключ подписи пакета и устанавливаем Tor:
root@ip-218-141:~# lsb_release -c
Codename: wheezy
echo "deb https://deb.torproject.org/torproject.org wheezy main" >> /etc/apt/sources.list
gpg --keyserver keys.gnupg.net --recv 886DDD89
gpg --export A3C4F0F979CAA22CDBA8F512EE8CBC9E886DDD89 | apt-key add -
apt-get update
apt-get install deb.torproject.org-keyring
apt-get install tor
Tor установлен, теперь его нужно сконфигурировать для работы в серверном режиме. Если процессор сервера поддерживает систему команд AES-NI, нужно включить ее использование, это снизит нагрузку на процессор и повысит благожелательность хостера к нашей затее. Подробнее читайте в статье на torservers.net, я же приведу конфигурацию для моего случая.
Конфиг Tor хранится в файле /etc/tor/torrc, отредактировать его можно командой nano /etc/tor/torrc. В моем случае получился такой конфиг:
ORPort 443
DirPort 80
ExitPolicy reject *:*
BandwidthRate 960 KBytes
BandwidthBurst 1280 KBytes
HardwareAccel 1
Nickname Runion
ContactInfo runionnode(nospam)@safe-mail.net
Параметр BandwidthRate определяет среднюю пропускную способность ноды (сколько трафика нода будет потреблять когда разгонится), BandwidthBurst максимальную (лимит, выше которого трафику нельзя подниматься). Скорости указываются в килобайтах в секунду в одном направлении. Чтобы перевести привычные нам мегабиты пропускной способности сети в эти значения, умножаем их на 64 (1024 / 8 килобайт в мегабите / 2 направления = 64). Указанные параметры задают трафик ноды в диапазоне 15-20 мегабит в секунду. ORPort / DirPort - порты на которых работает Tor (подробнее в мануале). На нашем сервере нет ничего кроме Tor ноды, поэтому используем порты 443/80 (они реже бывают заблокированы у пользователей), но можно использовать любые другие (стандартными считаются 9001 / 9030). Параметр HardwareAccel включает использование AES-NI. Nickname - имя, под которым наша нода будет присутствовать в статистике, ContactInfo - контактный адрес, по которому Tor team может связаться с вами, если с нодой что-то не в порядке. Последние два параметра не обязательны, но желательно их указать.
Сохраним конфиг, перезапустим Tor и смотрим логи:
/etc/init.d/tor restart
cat /var/log/tor/log
Apr 19 07:13:51.000 [notice] Tor 0.2.4.21 (git-c5a648cc6f218339) opening log file.
Apr 19 07:13:51.000 [notice] Parsing GEOIP IPv4 file /usr/share/tor/geoip.
Apr 19 07:13:52.000 [notice] Parsing GEOIP IPv6 file /usr/share/tor/geoip6.
Apr 19 07:13:52.000 [notice] Configured to measure statistics. Look for the *-stats files that will first be written to the data directory in 24 hours from now.
Apr 19 07:13:52.000 [notice] Your Tor server's identity key fingerprint is 'Runion 7C1F6A238E8155AE10CBA88D225CCB94722BF645'
...
...
Apr 19 07:13:59.000 [notice] Tor has successfully opened a circuit. Looks like client functionality is working.
Apr 19 07:13:59.000 [notice] Bootstrapped 100%: Done.
Apr 19 07:13:59.000 [notice] Now checking whether ORPort 46.183.218.141:443 and DirPort 46.183.218.141:80 are reachable... (this may take up to 20 minutes -- look for log messages indicating success)
Apr 19 07:13:59.000 [notice] Self-testing indicates your DirPort is reachable from the outside. Excellent.
Apr 19 07:13:59.000 [notice] Self-testing indicates your ORPort is reachable from the outside. Excellent. Publishing server descriptor.
Apr 19 07:14:04.000 [notice] Performing bandwidth self-test...done.
Нода запустилась и работает. Через несколько часов она появится в общей статистике, и можно будет ее зарегистрировать в сервисе мониторинга Tor нод Tor Weather. Он рассылает автоматические оповещения на email при падении ноды, слишком медленной работе, устаревании версии Tor, или обнаружении критических уязвимостей. Регистрироваться не обязательно, но желательно, если вы не собираетесь круглосуточно присматривать за нодой вручную.
Просмотр статистики и управление
Локально вы можете посмотреть загрузку процессора/памяти (команда top), загрузку сети (команда iftop -n) и логфайл Tor (cat /var/log/tor/log). В логах будет аптайм, объем пропущенного трафика, количество обработанных соединений и сообщения об ошибках.
Другие команды которые понадобятся при администрировании:
netstat -antpu - список соединений вместе с процессами
netstat -ltupn - список открытых портов вместе с процессами
nano /etc/tor/torrc - редактировать конфиг Tor
killall -s HUP tor - перечитать конфиг Tor без перезапуска. Можно применить новые параметры без разрыва открытых соединений и потери аптайма.
/etc/init.d/tor restart - перезапустить Tor. Это следует делать при смене рабочих портов, ключей, и других серьезных изменениях.
Увидеть вашу ноду в общей онлайн статистике можно на https://atlas.torproject.org/ и https://torstatus.rueckgr.at/.
Статистика ноды Runion на atlas.torproject.org, на torstatus.rueckgr.at.
На третий день стабильного аптайма нода получает Stable флаг, на седьмой - Guard флаг, трафик достигает заданного максимума в среднем через 2 недели. Подробнее читайте в статье The lifecycle of a new relay.
Profit от собственной ноды, повышаем свою анонимность
В Tor блоге была статья Improving Tor's anonymity by changing guard parameters. В ней рассматривалась зависимость долговременной анонимности от количества и периода смены Guard нод. Был сделан вывод, что чем меньше Guard'ов использует клиент и чем реже он их меняет, тем меньше шанс случайной компрометации соединений. Наилучшая анонимность достигается при использовании одной постоянной Guard ноды.
Правильный выбор Guard нод крайне важен для анонимности при постоянном использовании Tor, особенно - для анонимности hidden services. Многие атаки на Tor сокращают анонимность до уровня однохоповых прокси, которыми становятся Guard ноды, т.е. в этом случае важна их неподконтрольность противнику. Я предлагаю вручную выбрать и зафиксировать минимальное количество Guard'ов достаточное для стабильной работы, в отношении которых есть основания считать их безопасными.
Для этого нужно прописать выбранные ноды в качестве бриджей в torrc. Также можно сконфигурировать бриджи из графического режима. Пример, использующий ноду Runion:
UseBridges 1
UpdateBridgesFromAuthority 0
Bridge 46.183.218.141:443 7C1F6A238E8155AE10CBA88D225CCB94722BF645 # Runion
У нас может быть несколько строк Bridge имеющих формат Bridge [transport] IP:ORPort [fingerprint] . Я рекомендую использовать 2-3 бриджа и обязательно указывать fingerprint (для вашей ноды, cat /var/lib/tor/fingerprint), это может защитить от ряда атак связанных с компрометацией DA.
В качестве бриджа можно использовать любую произвольно выбранную Tor ноду, но крайне желательно выбирать ноду имеющую Guard flag, иначе можно ухудшить свою анонимность перед внешним наблюдателем и перед владельцем используемой ноды (подключение с IP не относящегося к сети Tor, к ноде без Guard флага - не рядовое событие).
Внимание: данная часть основана на личных измышлениях и не проверена специалистами. Используйте на свой страх и риск.
Cсылки
Tor -stable Manual
Installing Tor on Debian/Ubuntu
Torservers.net Wiki
Tor Network Status (clearnet) Tor Network Status (.torify.net)
Tor Blog
Помощь развитию сети Tor
Если у вас, или вашего работодателя есть сервер недоиспользующий оплаченный трафик, вы можете запустить на нем Tor ноду совершенно бесплатно для себя. Сделайте это сейчас. Еще вы можете пожертвовать проекту https://www.torservers.net/, или мне.
Мной открыт Bitcoin кошелек 1Jv11eRMNPwRc1jK1A1Pye5cH2kc5urtLP на который принимаются пожертвования для оплаты хостинга Tor ноды Runion. Если пожертвований будет достаточно, я могу поднять еще несколько нод, возможно даже Exit'ы, и администрировать их.
P.S.: распространение статьи приветствуется, при сохранении ссылки на оригинал.
Редактировался megamozG (2014-04-27 17 ч.)