Организация работы и маскировки bitcoind и других служб в сети tor

  • Автор темы Admin

Admin

#1
Администратор
Регистрация
31.12.2019
Сообщения
6,977
Реакции
34
Всех приветствую.

Со своей стороны, совершенно не претендуя ни на какое-либо поощрение, принял решение поучаствоввать в текущем конкурсе статей и представить один из вариатов работы bitcoind на отдельном tor хосте(узле). Также, в качестве примера и одновременно совсем небольшого дополнения приведена организация работы службы ssh через tor. В данной статье приведена установка необходимого ПО в рамках ubuntu 18, хотя, подавляющая часть указанных инструкций, особенно в части того что касается конфигурационной составляющей, вполне применима в любых других системах семейства unix.

Условные обозначение в рамках данной статьи:
# - Так начинается любой коментарий в контексте конфигурационных файлов
$ - Так указывается команда командной строки
Параметры файлов конфигурации обозначаются курсивом

Итак, устанавливаем требуемые зависимости:
$ apt-get update
$ apt-get install tor
$ apt-get install build-essential libtool autotools-dev autoconf libssl-dev libboost-all-dev

Добавляем репозиторий с программой bitcoind, производим обновление кешей пакетной системы и непосредственно установку bitcoind(репозиторий может отличаться):
$ add-apt-repository ppa:luke-jr/bitcoincore
$ apt-get update
$ apt-get install bitcoind

Общее содержимое конфигурационного файла tor: /etc/tor/torrc :
В некоторых случаях, определенные параметры могут меняться или варьироваться, например в зависимости от используемых версий операционной системы и ПО.

_____________Основной блок параметров:_______________________________________
SOCKSPort 9250
VirtualAddrNetworkIPv4 10.192.0.0/10
RunAsDaemon 1
PortForwarding 1
Nickname ticktest
AutomapHostsOnResolve 1
MaxMemInQueues 500MB
CookieAuthentication 1
CookieAuthFileGroupReadable 1
DNSListenAddress 127.0.0.1
DNSPort 53
ExitPolicy accept *:44223, accept *:43129, accept *:22
ExitPolicy reject *:*

#Настраиваем скрытые сервисы tor:

#Блок для настройки работы bitcoind через tor
HiddenServiceDir /btc
HiddenServicePort 44223 127.0.0.1:44223

#Блок для настройки работы сервера ssh через tor
HiddenServiceDir /ssh
HiddenServicePort 43129 127.0.0.1:43129
______________________________________________________________________________
Создаем директории для хранения доменных имен tor для каждого сервиса, а также ключей аутентификации:
$ mkdir /btc
$ mkdir /ssh

Ограничиваем права на директории скрытых сервисов tor:
$ chmod 700 /btc
$ chmod 700 /ssh

В файле /etc/ssh/sshd_config нужно указать в следующую строке порт, который будет задействован службой ssh:
Port 43129

В файле /etc/resolv.conf указать следующую строку:
nameserver 127.0.0.1

Это необходимо для того, чтобы организовать работу DNS исключительно посредством и через socks-туннель tor

Затем, перезапускаем сервис ssd(ssh сервер):
$ systemctl restart sshd.service
Либо каким-либо иным образом, в зависимости от используемой вами операционной системы. Например так:
$ service sshd restart


Запускаем службу tor:
$ service tor restart
либо так:
$ systemctl restart sshd.service
или так:
$ tor &

После запуска службы tor и перезапуска sshd, в ранее созданных директориях скрытых сервисов и указанных в настройках конфигурации torrc должны появится
по два файла: hostname и private_key

______________________Основной блок параметров:_______________________________

Общее содержимое конфигурационного файла /etc/bitcoin.conf :
В некоторых системах расположение данного файла может быть иным, как вариант: /etc/bitcoin/bitcoin.conf.

#Значение 1 указывает bitcoin-qt и bitcoind принимать команды JSON-RPC
server=1

#Запускать сервис в виде фоновой службы
daemon=1

#Решим приема(listen-прослушки), а не подключения, используется по умолчанию, но данная опция игнорируется, если используется функция connect
listen=1

#Опциональный параметр, позволяющий обслуживать более 125 заданных по умолчанию сессий до соседей:
maxconnections=

#Данные параметры предназначены для аутентификации управления bitcoind через rpc протокол:
# -rpcuser= и -rpcpassword - имя пользователя и пароль для json-rpc, как для демоа службы, так и для клиента
#В более новый версиях программы, могут применяться другие способы аутентификации json-rpc, а также специальные скрипты, такие как rpcuser.py
rpcuser=randomuser
rpcpassword=randompassword

#-rpcport= - использовать для json-rpc порт, отличный от 8332
rpcport=44223

#-rpcallowip= - разрешить принимать команды с указанного ip, по умолчанию команды принимаются только с 127.0.0.1, можно задавать несколько адресов, применяя параметр несколько раз
rpcallowip=127.0.0.1

#Указываем bitcoind использовать только tor(в некоторых случаях указывается слово onion, вместо tor):
onlynet=tor

#Используем внутренний ip на обратной петле хоста:
externalip=127.0.0.1

#Указывает на то, что bitcoind будет стартовать и выполнять работу на стационарном порту 44223, можно оставить и стандартный порт работы bitcoind: 8333, либо указать любой другой.
bind=127.0.0.1:44223

#Указывает на то, что bitcoind будет работать через tor порт 9225 (в конфирурации torrc: SOCKSPort 9250)
proxy=127.0.0.1:9250
_____________________________________________________________________________
После завершения конфигурирования bitcoin.conf, производим запуск данного программного обеспечения:
$ bitcoind &

Запуск программы можно осуществлять с использованием стандартных служб управления сервисами и/или конкретно той операционной системы, с которой производтся работа, предварительно настроив их.
Если файл конфигурации bitcoin.conf размещен в каком-то другом месте, это также следует учитывать при запуске.

И в таком случае, это прямо указывается при загрузке при помощи параметра -conf:
-conf - задает путь до файла конфигурации, отличный от того что используется по умолчанию.

Далее, после старта,может пройти достаточное количество времени для и до синхронизации blockchain блоков, а с учетом работы системы через tor, это может занять довольно продолжительное время.
И вот теперь, bitcoind и ssh работают через сеть tor и доступны из нее по доменным именам tor, обозначенным в файлах hostname директорий /btc и /ssh, файлы будут иметь формат: xxxxxx.onion
В этих же каталогах, как упоминалось ранее, расположены файлы ключей.
_____________________________________________________________________________

В дополнение, приведу лишь список из некоторого числа других параметров для команды bitcoind, большинство из которых вполне применимо и в конфигурационном файле bitcoin.conf:
Вот описание некоторых из них(часть уже использована в конфигурации выше):

-pid-название файла pid процесса
-connect-подключится только к указанному хосту, полезно, если загрузить блоки с другого узла в сети, не загружая сетевой канал
-daemon-запускаться в фоне
-datadir-использовать вместо ~/.bitcoin/ указанный путь
-timeout-таймаут tcp соединения
-proxy=<ip:port>-соединятся через указанный socks v.4 прокси-сервер, например через используемый в статье tor
-port-использовать указанный порт вместо стандартного 8333 (указано выше в конфигурации)
-noirc-не использовать irc для поиска хостов и анонса собственного адреса
-nolisten-не принимать входящие соединения
-nodnsseed-не использовать DNS для поиска узлов
-upnp-делать попытки использовать UPnP для того чтобы пробросить порт. Полезно, если вы роутером с функцией NAT, c внешним ip и поддерживающим UPnP.
Не нужно, если вы имеете внешний ip напрямую и не имеет смысла также, если роутер не имеет внешнего ip.
-paytxfee-установить размер комиссии в биткоинах, собственная логика клиента имеет приоритет над данным значением
-addnode-также подключится и к указанному хосту, тут можно указать адреса пулов для ускорения транзакций
-testnet-использовать тестовую сеть
-debug-записывать отладочную информацию
-logtimestamps-записывать в лог-файл временные метки
-printtoconsole-вместо debug.log использовать stdout (стандартный поток вывода)
-rpcconnect-отправлять команды на указанный хост, а не на 127.0.0.1, используемый по умолчанию
-keypool-сгенерировать указанное количество ключей при старте, по умолчанию значение равно 100
-rescan-перечитать всю цепочку blockchain блоков, например если поврежден blkindex.dat или есть зависшие в кошельке транзакции.
Так, в последних версиях появилась опция -blocknotify, запускающая указанную команду при получении нового блока, например для обработчика платежей.
-gen-после старта начать майнить биткоины, по умолчанию, программа bitcoind будет пытаться делать на cpu, что неэффективно
-gen=0-если указано значение 0, то соотвественно "не майнить биткоины"


Вот вкратце и вся информация по установке и настройке bitcoind для работы через tor сеть.
Разумеется, не следует забывать о необходимом для работы с биткон системой объеме носителя информации-жесткого диска, места на системах хранения, а также о настройке всех необходимых сопутствующих
служб и сервисов, в том числе с целью обеспечения безопасности настроенного узла bitcoind+tor, более подробная информация о которых выходит за рамки тематики этой статьи.
Спасибо за внимание.



Автор: sysbot
 

Members, viewing this thread

Сейчас на форуме нет ни одного пользователя.