До біткоін Постановка задачі: з міркувань безпеки, до bitcoin-ноди, розташованої на dev.marionette.dev, має забезпечуватись доступ лише з 2х серверів: dev.marionette.dev та demo.marionette.dev.
Для реалізації такої секьюрності використовуються:
1. налаштування Налаштування мережевого файєрвола на DODigital Ocean, де розташовані дроплети dev.marionette.dev та demo.marionette.dev
2. налаштування Налаштування docker-compose файла для біткоін-ноди на dev.marionette.dev
Додатково Примітка: додатково (не стосується біткоін bitcoin-ноди): для взаємодії сердовища середовища demo.marionette.dev (а саме сервіса BITCOIN-PI на цьому деплойменті) прописується внутрішня IP-адреса dev.marionette.dev в мережі VPC.
Реалізація
Примітка: Внутрішня IP-адреса dev.marionette.dev в VPC - 10.116.0.3.
Внутрішня IP-адреса demo.marionette.dev в VPC - 10.116.0.9.
Створено наступні вхідні правила файервола, де додано порт 8332 лише для IP 10.116.0.9:
...
та застосовані до дроплета dev.marionette.dev:
...
Для деплоймента
...
bitcoin-ноди на dev.marionette.dev, зроблено мапінг 8332 порта з
...
docker-
...
контейнера bitcoind на порт 8332 хоста. Оскільки docker-compose.yaml, застосований в складі
...
Configurator, змінено темплейт cryptonodes.yaml.t
...
шляхом додавання секції мапінга портів:
Code Block |
---|
ports: - "{{rpcport}}:{{rpcport}}" |
Після рендерінга на dev.marionette.dev отримано cryptonodes.yaml :
Code Block |
---|
version: "3.7"
services:
blockchainRegistry:
image: gitlab.tunex.io:5050/marionette-develop/backend:latest
restart: always
command: ./node_modules/.bin/moleculer-runner
hostname: "blockchainRegistry"
env_file:
- ../config/database.env
environment:
SERVICES: services/blockchainRegistry
LOGLEVEL: info
bitcoind:
image: gitlab.tunex.io:5050/marionette-stack/public/bitcoind24v
restart: always
user: root
command: bitcoind
ports:
- "8332:8332"
environment:
HOSTNAME: bitcoind
volumes:
- ../data/bitcoin/.bitcoin:/bitcoin/.bitcoin
- ../config/bitcointest.conf:/bitcoin/.bitcoin/bitcoin.conf |
Після рендерінга cryptonodes.yaml перезапуск демона bitcoind - обов'язковий. Перезапуск відбувається по CI-CD, налаштованому в gitlab.tunex.io для configuratorConfigurator, або вручну:
Code Block |
---|
$ docker-compose restart bitcoind |
...
Для того, щоб переконатись, що демон біткоінbitcoin-нода доступна ноди доступний лише на 2-х дроплетах, застосуємо застосовуємо інструменти bitcoin-cli та curl, а також RPC API для біткоінbitcoin-ноди (https://developer.bitcoin.org/reference/rpc/index.html )
Для dev.marionette.dev скористаємось bitcoin-cli. Наприклад, перевіримо найвищий блок в ноді:
Code Block $ docker-compose exec bitcoind bitcoin-cli getblockcount 2470217
Для demo.marionette.dev скористаємось curl. Як приклад, перевримо перевіримо баланс гаманця в ноді:
Code Block $ curl --data-binary '{"jsonrpc":"1.0","method":"getbalance","params":[]}' -H 'content-type: text/plain;' http://*****:*****@10.116.0.3:8332 {"result":0.21380328,"error":null,"id":null}
де замість **** в http://*****:*****@10.116.0.3:8332 вказується ім'я та пароль rpc-користувача, визначеного в конфігураційному файлі біткоінbitcoin-ноди (як правило, це bitcoin.conf)
Також для прикладу, що доступ до біткоінbitcoin-ноди лише на рівні VPC мережі забезпечений звернемось через , використаємо curl, щоб перевірити баланс гаманця в ноді, вказавши в запиті зовнішню IP-адресу dev.marionette.dev:
...
Оскільки відповідь: "Failed to connect to 157.230.93.53 port 8332: Connection timed out
", то реалізація секьюрності біткоінбезпеки bitcoin-ноди виконана.
Додатково: забезпечення комунікації BITCOIN-PI на demo.marionette.dev з
...
bitcoin-нодою
З огляду на реалізацію доступу до біткоінbitcoin-ноди на dev.marionette.dev з внутрішньої VPC мережі лише по 8332 порту для RPC-комунікації, потрібно в configurator Configurator в файлі global/config.yaml в секції BITCOIN-PI: змінити змінну rpchost :
...