↓ Ir para o conteúdo principal
CypherpunkGuide.
PT

RPC do Bitcoin Core: o que um firewall ativo não comprova

Cora Aegis segura um painel translúcido ao lado de um servidor, com linhas de luz representando diferentes caminhos de acesso

Financiamento: este artigo não contém links diretos de compra com afiliação. O CypherpunkGuide pode receber comissões por meio dos guias de compra vinculados.

O nó está funcionando, a sincronização avança e o firewall aparece como ativo. São informações úteis. Nenhuma delas, sozinha, revela quem consegue acessar a interface de administração do nó.

RPC vem do inglês remote procedure call, ou chamada de procedimento remoto. É a interface pela qual um programa pede informações ou envia instruções ao Bitcoin Core. Ela tem uma função diferente da comunicação entre nós, chamada P2P. Aceitar conexões de outros nós Bitcoin não justifica expor o acesso administrativo. Dependendo das carteiras habilitadas e das permissões, esse acesso pode comprometer fundos ou revelar informações privadas. A documentação de segurança do Bitcoin Core alerta contra a exposição do RPC à internet pública.

O ponto é saber o que cada observação permite concluir. Nosso guia de verificação de autocustódia parte da mesma distinção: uma tela tranquilizadora só serve como evidência dentro dos seus limites.

O que a análise das fontes permite concluir
#

Esta análise acompanha o código-fonte do Bitcoin Core v31.1 e a documentação do Docker. Não mede um nó em execução, uma porta aberta nem o comportamento do firewall de uma máquina.

O código do Core foi obtido em 10 de outubro de 2026 e está fixado no commit 9be056a8a72b624dae9623b2f7bded92c2a21c91, que identifica uma revisão específica. O pacote de evidências contém sete arquivos públicos, a lista das origens e dos hashes SHA-256, além da análise dos oito casos. O hash permite conferir se o arquivo salvo permanece igual; não substitui a verificação da assinatura de um programa executável. Consultamos a documentação do Docker em 10 de outubro e novamente em 11 de outubro de 2026. Ela pode mudar e não representa um teste de uma versão fixa do Docker Engine.

Não iniciamos serviços nem usamos carteiras, segredos de autenticação ou fundos reais. Os oito casos mantêm not_tested, ou seja, não testado, como resultado observado. A contribuição é relacionar as afirmações sobre configurações às fontes e identificar quais evidências ainda faltam para determinar se uma conexão consegue chegar ao serviço. Os arquivos para download preservam os materiais compartilhados nos idiomas originais: contêm fontes em inglês, análises em japonês e identificadores usados na análise original. O conjunto não foi traduzido para o português.

Separe o endereço de escuta, a permissão do cliente e a autenticação
#

O endereço em que o Bitcoin Core aceita conexões, os endereços de clientes permitidos, a autenticação e as operações autorizadas são controles distintos. Passar por um deles, ou ser recusado por ele, não comprova a situação dos demais.

Um endereço de escuta, ou listener, é a combinação de endereço e porta em que um programa aceita conexões. O cliente é o programa ou dispositivo que solicita a conexão; a autenticação verifica suas credenciais de acesso. Endereços de loopback, como 127.0.0.1 e ::1, apontam para o próprio ambiente de rede. O Docker executa aplicações em contêineres, ambientes separados dentro de uma máquina hospedeira, o host. Em uma configuração normalmente isolada, o loopback do host é diferente do loopback do contêiner.

ControleO que permite verificarO que não comprova
Servidor RPC habilitadoSe o servidor de administração deve iniciarSe a inicialização e a abertura do endereço de escuta deram certo
rpcbindEm quais endereços e portas opcionais o Core deve escutarQuais clientes remotos ou operações estão autorizados
rpcallowipQuais endereços de clientes passam pela verificação de origemSe a autenticação funciona ou se o transporte é criptografado
AutenticaçãoSe a solicitação apresenta credenciais válidasSe a conexão é privada ou se todas as operações são permitidas
Permissões de operaçãoSe esse usuário autenticado pode executar o métodoSe outros métodos ou caminhos estão inacessíveis

No código do servidor HTTP da revisão analisada, quando rpcbind ou rpcallowip não tem valores, os endereços candidatos à escuta voltam a ser os de loopback. Isso não significa que a lista separada de permissões por endereço de origem seja descartada. Quando ambos têm valores, a configuração de escuta e a verificação dos clientes continuam sendo processadas separadamente.

Não acrescente essas configurações apenas para fazer um teste funcionar. Primeiro, descubra o que o processo em execução realmente usa. O programa de execução em segundo plano, bitcoind, habilita o modo servidor por padrão. O aplicativo com interface gráfica não o habilita por padrão, conforme a documentação de RPC da mesma revisão. Conseguir usar o console de depuração da interface gráfica não comprova a existência de um endereço de escuta HTTP.

Verificar somente a porta 8332 também não basta. Ela é a porta RPC padrão da rede principal nessa revisão. Outra rede Bitcoin ou uma configuração personalizada pode usar uma porta diferente. rpcport substitui o padrão da rede; uma porta explícita em rpcbind tem prioridade para aquele endereço de escuta. Em contêineres, diferencie ainda a porta do host da porta do contêiner.

O estado do UFW não explica todos os caminhos do Docker
#

Em uma rede bridge do Docker no Linux, o UFW ativo não comprova que uma porta publicada do contêiner está bloqueada. O UFW é uma ferramenta de administração do firewall no Linux. Uma rede bridge conecta contêineres por uma rede virtual no host. A documentação oficial de firewall do Docker explica que o tráfego das portas publicadas é redirecionado antes de passar pelas cadeias INPUT e OUTPUT normalmente usadas pelo UFW.

A documentação de publicação de portas acrescenta uma condição: quando o endereço do host é omitido, a publicação normalmente abrange todos os endereços do host, salvo quando o padrão foi alterado. Mesmo assim, um mapeamento de portas não comprova que o Core esteja escutando dentro do contêiner.

Publicar no loopback também não garante que todos os caminhos estejam fechados. O Docker documenta uma exceção em versões anteriores à 28.0.0: máquinas no mesmo segmento de rede local, chamado L2, podiam alcançar essas portas. O acesso direto ao endereço do contêiner depende das rotas, do modo de gateway, que define como o tráfego passa pela rede, e de configurações como trusted_host_interfaces. Verifique separadamente os destinos no host e no contêiner.

Essas condições não fornecem um comando de correção universal para Docker Desktop, Swarm, todos os modos de rede ou todos os mecanismos de firewall. A planilha pede informações do ambiente real. O trabalho necessário para mantê-lo faz parte da decisão sobre auto-hospedagem.

Use oito casos para localizar as evidências que faltam
#

Os oito casos abaixo são verificações a documentar, não oito testes de segurança aprovados. Baixe a planilha de exposição em branco e o registro de casos com as fontes. Não inclua credenciais, endereços reais ou detalhes que identifiquem sua infraestrutura em uma cópia compartilhada.

CasoO que verificarO que continua desconhecido sem observação
R01: padrões da execução nativaVersão do Core, programa em segundo plano ou interface gráfica, modo servidor efetivoSe um endereço de escuta foi realmente aberto
R02: lista de clientes permitidosConfiguração efetiva de escuta e restrições de origemQual endereço do cliente o Core vê e por onde a conexão chega
R03: porta personalizadaRede, porta RPC efetiva e portas explícitas de escutaQual destino e porta o cliente realmente alcança
R04: publicação no DockerVersão do Engine, modo de rede, endereço do host e escuta internaSe o mapeamento permite chegar ao serviço
R05: publicação no loopbackCaminho até o host e caminho direto até o contêinerEfeitos de versões antigas e do roteamento direto
R06: UFW ativoSistema operacional, mecanismo de firewall e caminho dos pacotesSe esse caminho é filtrado
R07: IPv4 e IPv6Escuta, mapeamento e caminho de cada famíliaSe a outra família está sujeita às mesmas restrições
R08: transporte privadoQuem controla as pontas, trecho protegido e endereços de escuta restantesSe o tráfego ou o acesso administrativo continua exposto em outro ponto

Quando volta ao loopback, a função da revisão analisada tenta abrir um endereço de escuta para cada família, IPv4 e IPv6. Basta que uma dessas tentativas funcione para a função informar sucesso. Uma inicialização aparentemente bem-sucedida não comprova, portanto, que há endereços de escuta abertos nas duas famílias. Os modos de gateway do Docker também podem ser diferentes para IPv4 e IPv6.

Use a planilha nesta ordem:

  1. Identifique o cliente que deve ter acesso administrativo e o destino que ele precisa alcançar. Em anotações compartilhadas, descreva o papel de cada máquina, sem identificá-la.
  2. Registre as configurações efetivas que não sejam secretas e os endereços de escuta observados. Um arquivo de exemplo não comprova o que o processo carregou. Não exporte configurações completas ou saídas de processos que possam conter credenciais.
  3. Documente os caminhos do host e do contêiner para cada família de endereços. Inclua o roteador quando ele fizer parte do caminho; a verificação do roteador doméstico (em inglês) trata dessa outra fronteira.
  4. Se for testar a conectividade, use apenas sistemas próprios ou que você tenha autorização para testar. Registre a localização do cliente, a função do destino, a família de endereços, o horário e o tipo exato de resultado. Nunca exponha o RPC à internet pública para simplificar o teste.
  5. Marque como unknown, ou desconhecido, o que não tiver evidência. Resolva essas lacunas antes de confiar na afirmação de que somente os clientes previstos conseguem acessar a administração.

Uma recusa HTTP é uma resposta, não uma porta fechada
#

Um erro HTTP mostra que algum serviço HTTP respondeu pelo caminho testado. Não comprova que a porta de rede estava inacessível. Se houver um proxy, um intermediário na comunicação, a resposta também não identifica por si só o Bitcoin Core como sua origem.

O processamento de RPC da revisão analisada retorna 401 quando faltam credenciais ou a autenticação falha no caminho de solicitação correspondente. O código 403 pode vir da recusa do endereço de origem ou, mais adiante, da restrição dos métodos permitidos a um usuário autenticado. O código sozinho não revela qual controle recusou a solicitação.

ResultadoO que ele permite concluir
Conexão recusadaAquela tentativa foi recusada; isso não descreve todos os caminhos
Tempo esgotadoNão houve resposta utilizável dentro do intervalo do teste; a causa continua indefinida
HTTP 401 ou 403Foi possível alcançar um serviço HTTP, que recusou a solicitação em alguma etapa
Resposta RPC válidaAquela solicitação funcionou naquele caminho e naquelas condições

A autenticação também não criptografa o tráfego RPC. O nome VPN, túnel SSH ou serviço onion do Tor não comprova a confiabilidade das máquinas, quem pode acessar as pontas nem a segurança dos endereços de escuta restantes. A documentação do Core alerta expressamente contra a exposição pública de RPC, inclusive por um serviço onion aberto ao público. A escolha do transporte precisa considerar quem controla suas pontas e quem pode acessá-las.

Fontes e limites da verificação
#

As afirmações sobre o Core se baseiam na revisão fixa v31.1 abaixo. As do Docker se baseiam na consulta à documentação, com as datas indicadas. As cópias arquivadas dos dois documentos do Docker foram verificadas. As cinco cópias do Core preservam os arquivos de código-fonte sem a interface do GitHub; seu conteúdo corresponde exatamente ao código fixado usado nesta análise.

FonteURL originalVersão arquivada
Interface RPC e segurança do CoreRevisão fixaCópia verificada
Servidor HTTP do CoreRevisão fixaCópia verificada
Autenticação e permissões de métodos do CoreRevisão fixaCópia verificada
Inicialização do CoreRevisão fixaCópia verificada
Portas padrão das redes do CoreRevisão fixaCópia verificada
Publicação de portas do DockerDocumentaçãoCópia verificada
Docker e UFWDocumentaçãoCópia verificada