Сначала я делаю приблизительные концепции некоторых идей для сервисов с поддержкой биткойнов, которые я имею в виду.
Меня интересует одна вещь: существует ли лучший подход к запуску биткойнов на другом сервере, который действует как бэкэнд для другого конкретного сервера?
Я подумал о чем-то вроде этого:
У меня есть vServer A и простое и простое PHP-Webspace на другом хосте B.
A запускает мой bitcoind-демон и разрешает RPC-вызовы только с IP-адреса B.
B выполняет RPC-вызовы A в серверном процессе, который не был запущен клиентом/посетителем веб-сайта.
Насколько безопасно вы обеспечите такой сценарий? Возможно ли, что узлы, подключенные к моему vServer A, определят цель сервера по транзакциям и попытаются его атаковать?
Даже если они это сделают, им придется использовать MiM-атаку, потому что A принимает только IP-адрес B.
Что еще я могу сделать, чтобы сделать общение более безопасным? HTTP-аутентификация, SSL?
Возможно ли, что узлы, подключенные к моему vServer A, определят цель сервера по транзакциям и попытаются его атаковать?
Да, если они видят достаточно сети, они могут понять, инициируете ли вы транзакцию или просто передаете ее. Однако легче понять, что вы используете RPC, через сканирование портов.
Есть способы предотвратить обнаружение этого при сканировании портов, например, с помощью iptables (Ctrl-F «кроме»). Будьте осторожны, потому что простое использование DROP
все равно скажет злоумышленникам, что в этом порту есть что-то особенное.
Если у вас есть доступ по SSH на обеих машинах, вы можете просто создать SSH-туннель с машины B на A и перенаправить через него порт 8332. Таким образом, поведение будет таким же, как если бы биткойн был установлен на обеих машинах, трафик между двумя машинами зашифрован с помощью SSH, и биткойн должен только слушать петлевой интерфейс и не был бы доступен из сети.
Я понимаю первоначальную логику размещения биткойнов и кошельков на отдельном сервере, но подумайте об этом... если ваш веб-сервер будет скомпрометирован, то не имеет значения, где находится ваш биткойн... он также скомпрометирован.
Пример; Bitcoind находится на сервере A, веб-сервер находится на сервере B. Веб-сервер B отправляет запросы -> на сервер bitcoind A. . ответы -> вернуться к веб-серверу A.
Таким образом, если я скомпрометирую ваш веб-сервер B, я могу сказать ему отправить сообщение обратно на биткойн-сервер с текстом sendtoaddress [myhackeraddress] и все. Ушли средства.
Гандон