Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

До біткоін Постановка задачі: з міркувань безпеки, до 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.

  1. Створено наступні вхідні правила файервола, де додано порт 8332 лише для IP 10.116.0.9:

...

та застосовані до дроплета dev.marionette.dev:

...

  1. Для деплоймента

...

  1. bitcoin-ноди на dev.marionette.dev, зроблено мапінг 8332 порта з

...

  1. docker-

...

  1. контейнера bitcoind на порт 8332 хоста. Оскільки docker-compose.yaml, застосований в складі

...

  1. Configurator, змінено темплейт cryptonodes.yaml.t

...

  1. шляхом додавання секції мапінга портів:

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 )

  1. Для dev.marionette.dev скористаємось bitcoin-cli. Наприклад, перевіримо найвищий блок в ноді:

    Code Block
    $ docker-compose exec bitcoind bitcoin-cli getblockcount
    2470217
  2. Для 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 :

...