Carteira dcrwallet no Raspberry Pi

3 minutos de leitura

1. Introdução

1.1. Escolha do equipamento

a) Raspberry Pi 3 Model B

b) Fonte de alimentação Raspberry Pi Universal Power Supply. Por questões de segurança (ou paranóia) eu tenho o hábito de preferir equipamentos elétricos oficiais.

c) SD Card de 16GB para o OS (para este laboratório foi usado o SanDisk Ultra 16GB microSDHC UHS-I Card). Se pretende usar um cartão maior do que 32GB, veja sobre a formatação do SDXC.

d) Case para proteção do Raspberry Pi: qualquer case que proteja e permita boa ventilação. Saiba mais sobre a temperatura aqui, na seção Monitoring core temperature.

Custo aproximado da solução (preços de 2018):

Raspberry Pi 3 model B (36€) + Fonte de alimentação (9€) + SanDisk Ultra 16GB microSDHC (11€) + Case (6€) = 62€

2. Instalação

2.1. Instalação do Raspbian

a) Baixe o Raspbian Stretch Lite em https://downloads.raspberrypi.org/raspbian_lite_latest

b) Verificação do hash

Obtenha o hash do arquivo baixado da Internet e compare com o hash publicado em https://www.raspberrypi.org/downloads/raspbian/.

No Mac

$ shasum -a 256 $RELEASE_DATE-raspbian-stretch-lite.zip

No Linux

$ sha256sum $RELEASE_DATE-raspbian-stretch-lite.zip

No Windows

O Windows não possui uma ferramenta nativa para verificação de hash SHA256. Usuários de Windows podem tentar a ferramenta PowerShell File Checksum Integrity Verifier (PsFCIV) disponível na Microsoft Technet.

c) Use o Etcher para gravar a imagem do Raspbian no SD card

  • Baixe e instale o Etcher.
  • Conecte o SD card no leitor de cartões.
  • Abra o Etcher e selecione a imagem .img ou .zip que será gravada no SD card.
  • Selecione o SD card onde será feita a gravação.
  • Reveja suas escolhas e clique em ‘Flash!’ para gravar a imagem no SD card.

2.2. Instalação do dcrwallet

aaa

2.3. Decred atavés da rede Tor

Antes de executar o dcrd pela primeira vez, leia o artigo Decred atarvés da rede Tor e faça a configuração conforme o seu ambiente.

3. Configuração

3.1. Instalação do sudo

Se o pacote sudo ainda não foi instalado:

$ su -
# apt-get install sudo
# usermod -aG $USER sudo

Será necessário fazer logout porque o login está com a informação dos grupos desatualizada.

3.2 Configuração do firewall

Instale o pacote para salvar as regras do firewall:

$ sudo apt-get install iptables-persistent

Crie um conjunto mínimo de regras (esta é uma lista básica, não uma lista exaustiva):

iptables -P INPUT DROP
iptables -A INPUT -i lo -j ACCEPT
iptables -A INPUT -m state --state INVALID -j DROP
iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A INPUT -m state --state NEW ! --syn -j DROP
iptables -A INPUT -p tcp -m multiport --dports 9110,19110 -m comment --comment "dcrctl mainnet, testnet" -j ACCEPT
iptables -A INPUT -p tcp --dport 22 -s $LOCALNET/24 -m comment --comment "ssh localnet" -j ACCEPT
iptables -A INPUT -p icmp --icmp-type echo-request -s $LOCALNET/24 -m comment --comment "ping" -j ACCEPT
iptables -A INPUT -j LOG
iptables -P FORWARD DROP
iptables -P OUTPUT DROP
iptables -A OUTPUT -o lo -j ACCEPT
iptables -A OUTPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -p tcp -m multiport --dports 9109,19109 -m comment --comment "dcrd rpc mainnet, testnet" -j ACCEPT
iptables -A OUTPUT -p tcp -m multiport --dports 80,443 -m comment --comment "http/s" -j ACCEPT
iptables -A OUTPUT -p tcp --dport 7777 -m comment --comment "dcrdata" -j ACCEPT
iptables -A OUTPUT -p udp --dport 53 -m comment --comment "dns" -j ACCEPT
iptables -A OUTPUT -p udp --dport 67 -m comment --comment "dhcp" -j ACCEPT
iptables -A OUTPUT -p tcp --dport 11371 -m comment --comment "hkp" -j ACCEPT
iptables -A OUTPUT -p icmp --icmp-type any -m comment --comment "icmp out" -j ACCEPT
iptables -A OUTPUT -j LOG

Salve com o comando:

$ sudo iptables-save > /etc/iptables/rules.v4

3.3. Configuração do ssh

Se você já tem um usuário comum no sistema e quer aumentar a segurança, desabilite o login do root diretamente no ssh, sendo necessário primeiro fazer login com um usuário comum. No arquivo /etc/ssh/sshd_config, faça a modificação:

PermitRootLogin no

Reinicie o sshd.

$ sudo service ssh restart

4. Execução

aaa