Skip to end of metadata
Go to start of metadata

You are viewing an old version of this page. View the current version.

Compare with Current View Page History

Version 1 Next »

До біткоін ноди, розташованої на dev.marionette.dev, має забезпечуватись доступ лише з 2х серверів: dev.marionette.dev та demo.marionette.dev.

Для реалізації такої секьюрності використовуються:
1. налаштування мережевого файєрвола на DO, де розташовані дроплети dev.marionette.dev та demo.marionette.dev
2. налаштування docker-compose файла для біткоін-ноди на dev.marionette.dev

Додатково (не стосується біткоін ноди): для взаємодії сердовища 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. Для деплоймента біткоін-ноди на dev.marionette.dev, зроблено мапінг 8332 порта з докер-контейненра на порт 8332 хоста. Оскільки docker-compose yaml застосований в складі configurator, змінено темплейт cryptonodes.yaml.t додаванням секції мапінга портів:

    ports:       - "{{rpcport}}:{{rpcport}}" 


    Після рендерінга на dev.marionette.dev отримано cryptonodes.yaml :

    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 для configurator, або вручну:

$ docker-compose restart bitcoind

Перевірка

Для того, щоб переконатись, що демон біткоін-нода доступна лише на 2-х дроплетах, скористаємось інструментами bitcoin-cli та curl та RPC API для біткоін-ноди (https://developer.bitcoin.org/reference/rpc/index.html )

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

    $ docker-compose exec bitcoind bitcoin-cli getblockcount
    2470217
  2. Для demo.marionette.dev скористаємось curl. Як приклад, перевримо баланс гаманця в ноді:

    $ 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.conf)

Також для прикладу, що доступ до біткоін-ноди лише на рівні VPC мережі забезпечений звернемось через curl перевірити баланс гаманця в ноді, вказавши в запиті зовнішню IP-адресу dev.marionette.dev:

$ curl --data-binary '{"jsonrpc":"1.0","method":"getbalance","params":[]}' -H 'content-type: text/plain;' http://****:*****@157.230.93.53:8332
curl: (28) Failed to connect to 157.230.93.53 port 8332: Connection timed out

3. Для будь-якого іншого випадку, візьмено власний ноут або інший сервер та відправимо запит на найвищий блок в ноді:

$ curl --data-binary '{"jsonrpc":"1.0","method":"getblockcount","params":[]}' -H 'content-type: text/plain;' http://****:*****@dev.marionette.dev:8332
curl: (28) Failed to connect to 157.230.93.53 port 8332: Connection timed out

Оскільки відповідь: "Failed to connect to 157.230.93.53 port 8332: Connection timed out", то реалізація секьюрності біткоін-ноди - виконана.

Додатково: забезпечення комунікації BITCOIN-PI на demo.marionette.dev з біткоін-нодою

З огляду на реалізацію доступу до біткоін-ноди на dev.marionette.dev з внутрішньої VPC мережі лише по 8332 порту для RPC-комунікації, потрібно в configurator в файлі global/config.yaml в секції BITCOIN-PI: змінити змінну rpchost :

rpchost: 10.116.0.3

Після рендерінга global/config.yam перезапуск демона BITCOIN-PI - обов'язковий. Перезапуск відбувається по CI-CD, налаштованому в gitlab.tunex.io для configurator, або вручну:

$ docker-compose restart BITCOIN-PI
  • No labels