Безопасно ли запускать биткойн на другом сервере

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

Меня интересует одна вещь: существует ли лучший подход к запуску биткойнов на другом сервере, который действует как бэкэнд для другого конкретного сервера?

Я подумал о чем-то вроде этого:

У меня есть vServer A и простое и простое PHP-Webspace на другом хосте B.

A запускает мой bitcoind-демон и разрешает RPC-вызовы только с IP-адреса B.

B выполняет RPC-вызовы A в серверном процессе, который не был запущен клиентом/посетителем веб-сайта.

Насколько безопасно вы обеспечите такой сценарий? Возможно ли, что узлы, подключенные к моему vServer A, определят цель сервера по транзакциям и попытаются его атаковать?

Даже если они это сделают, им придется использовать MiM-атаку, потому что A принимает только IP-адрес B.

Что еще я могу сделать, чтобы сделать общение более безопасным? HTTP-аутентификация, SSL?

Ответы (3)

Возможно ли, что узлы, подключенные к моему vServer A, определят цель сервера по транзакциям и попытаются его атаковать?

Да, если они видят достаточно сети, они могут понять, инициируете ли вы транзакцию или просто передаете ее. Однако легче понять, что вы используете RPC, через сканирование портов.

Есть способы предотвратить обнаружение этого при сканировании портов, например, с помощью iptables (Ctrl-F «кроме»). Будьте осторожны, потому что простое использование DROPвсе равно скажет злоумышленникам, что в этом порту есть что-то особенное.

Спасибо за ваш совет (: я подожду еще немного других ответов, прежде чем отметить ваш как решение

Если у вас есть доступ по SSH на обеих машинах, вы можете просто создать SSH-туннель с машины B на A и перенаправить через него порт 8332. Таким образом, поведение будет таким же, как если бы биткойн был установлен на обеих машинах, трафик между двумя машинами зашифрован с помощью SSH, и биткойн должен только слушать петлевой интерфейс и не был бы доступен из сети.

Разве биткойн изначально не говорит по SSL?
Да, но вам все равно придется открыть порт для сети.
Тогда я не вижу, как туннель SSH действительно повышает безопасность в этом случае. Кроме того, я обнаружил, что такие инструменты, как stunnel, довольно нестабильны и в общем случае избегают добавления движущихся частей в настройку сервера, если они не являются абсолютно необходимыми.

Я понимаю первоначальную логику размещения биткойнов и кошельков на отдельном сервере, но подумайте об этом... если ваш веб-сервер будет скомпрометирован, то не имеет значения, где находится ваш биткойн... он также скомпрометирован.

Пример; Bitcoind находится на сервере A, веб-сервер находится на сервере B. Веб-сервер B отправляет запросы -> на сервер bitcoind A. . ответы -> вернуться к веб-серверу A.

Таким образом, если я скомпрометирую ваш веб-сервер B, я могу сказать ему отправить сообщение обратно на биткойн-сервер с текстом sendtoaddress [myhackeraddress] и все. Ушли средства.

Отчасти это правда. Но его можно дополнительно защитить. Если я создам только определенный набор команд в своем собственном интерфейсе, который является единственным способом для обоих серверов общаться друг с другом, злоумышленник также сможет использовать только их. Хотя вы правы: большинству веб-сайтов необходимо поддерживать что-то вроде makeTransaction(сумма, от, до)
@Gundon поднимает хороший вопрос ~ вы можете настроить сервер bitcoind так, чтобы он принимал только заранее определенный диапазон допустимых вызовов rpc, например: getbalance..etc.
И если время не критично и можно совершать все транзакции только один раз в день, вы также можете защитить паролем определенные rpc-вызовы. Если вы напишите обертку на биткойн-сервере, это также может быть сделано для каждого пользователя, и пароль не нужно будет хранить на вашем общедоступном сервере.