Segurança MQTT

O MQTT É Seguro? Ameaças, Mitos e Proteções Reais

Um olhar honesto sobre a segurança do MQTT: o que o protocolo protege e o que não protege, as ameaças que de fato atingem as implantações, mitos comuns e as camadas que tornam um sistema MQTT seguro na prática.

Diagrama de escudo em camadas respondendo se o MQTT é seguro, com TLS, autenticação e isolamento de tenants em volta de um broker MQTT
Rode isso no seu próprio broker MQTTTenha um broker MQTT privado e gerenciado no plano Free e comece com exemplos de código prontos.
Teste grátis Exemplos de código Sem cartão de crédito

O MQTT é seguro? O protocolo em si oferece apenas os ganchos para a segurança, um campo de usuário e senha e suporte para rodar sobre TLS, e é exatamente tão seguro quanto a implantação em volta dele. Este artigo explica o que o MQTT protege e o que não protege, quais ameaças de fato atingem sistemas reais, os mitos que causam problemas e as camadas que transformam uma configuração MQTT em uma configuração segura.

O que o próprio MQTT oferece

O MQTT foi projetado como um protocolo de mensagens leve, e sua especificação deixa deliberadamente a maior parte da segurança para outras camadas. De fábrica, você tem:

  • Um campo de usuário e senha no pacote CONNECT, enviado como bytes simples.
  • Ganchos de autenticação estendida do MQTT 5 (um método de autenticação e pacotes AUTH) para esquemas de desafio-resposta implementados pelo broker.
  • Reason codes que permitem ao broker dizer "credenciais inválidas" ou "não autorizado".
  • Independência de transporte, para que o MQTT possa rodar sobre TLS ou WebSockets seguros.

O que o protocolo não oferece sozinho:

  • Nenhuma criptografia. Sem TLS, todo topic, payload e senha pode ser lido na rede.
  • Nenhum modelo de autorização. Qual cliente pode usar qual topic fica a cargo do broker.
  • Nenhuma integridade ou assinatura de payload. Uma mensagem não traz prova de quem a criou além da conexão pela qual chegou.
  • Nenhuma limitação de taxa ou proteção contra abuso. Isso é um recurso do broker.

A especificação OASIS MQTT tem até um capítulo de segurança que trata esses pontos como responsabilidades da implementação. Então a resposta honesta para "o MQTT é seguro" é: o MQTT pode ser protegido, e a segurança é uma propriedade do broker, dos clientes e do desenho da rede.

As ameaças que realmente importam

Ameaça Como acontece Proteção principal
Escuta Tráfego na porta 1883 capturado em Wi-Fi, no provedor ou na rede da nuvem TLS nas portas 8883 / 8084
Roubo de credenciais em trânsito Senha lida de um CONNECT não criptografado TLS com verificação de certificado
Brokers abertos Broker exposto à internet com acesso anônimo Autenticação, sem acesso anônimo em produção
Extração de credenciais dos dispositivos Senha fixa no firmware ou armazenada em flash sem proteção Credenciais por dispositivo, armazenamento criptografado
Personificação Atacante se conecta com um client ID roubado ou compartilhado Client IDs vinculados às credenciais
Acesso entre tenants Isolamento fraco em um broker compartilhado Isolamento de tenants
Comandos maliciosos Qualquer um consegue publicar em um topic de comandos Autorização, validação de comandos no dispositivo
Negação de serviço Inundação de conexões e de mensagens, logins por força bruta Cotas, proteção contra flood, bloqueio de IP

Varreduras em busca de brokers expostos encontram com frequência sistemas na porta 1883 com acesso anônimo, vazando dados de sensores e às vezes aceitando comandos. São falhas de configuração, não vulnerabilidades do protocolo, e é por isso que a maior parte do trabalho real é operacional. Veja brokers MQTT expostos para saber como eles são encontrados e fechados.

Mitos comuns sobre a segurança do MQTT

"O MQTT é inseguro porque envia senhas em texto claro."

Ele as envia em texto claro dentro da camada MQTT, da mesma forma que a autenticação HTTP Basic. Sobre TLS, a conexão inteira é criptografada, incluindo o pacote CONNECT. O problema é rodar MQTT sem TLS, não o MQTT em si.

"A porta 1883 é aceitável dentro da nossa rede."

Redes internas são comprometidas, o Wi-Fi é interceptado e redirecionamentos de porta "temporários" viram permanentes. Trate toda rede como não confiável e use TLS em todo lugar que puder. Reserve a porta 1883 sem criptografia para dados públicos de teste que você não se importaria de ver em qualquer lugar, como o tráfego de demonstração no servidor MQTT público (gratuito), que serve apenas para testes e protótipos.

"Um client ID longo e aleatório é um segredo."

Client IDs aparecem em logs, dashboards e caminhos de topics. Eles identificam um cliente; não o autenticam. A segurança vem da credencial à qual o client ID está vinculado.

"O TLS torna os payloads seguros de ponta a ponta."

O TLS protege cada trecho entre um cliente e o broker. O broker vê o payload em claro. Se você precisa de confidencialidade de ponta a ponta, do dispositivo à aplicação (por exemplo, para dados pessoais sujeitos à LGPD), adicione criptografia de payload MQTT por cima.

"Ninguém vai se dar ao trabalho de atacar meus sensores."

Scanners automatizados não se importam com o que os seus sensores medem, seja numa fazenda no Mato Grosso ou numa estação de saneamento. Eles procuram portas abertas e credenciais padrão, e um broker exposto pode ser usado como ponto de apoio ou como relay gratuito.

As camadas que tornam o MQTT seguro

  1. Criptografia de transporte. TLS 1.2 ou mais recente na porta 8883, ou WebSockets seguros na porta 8084 para navegadores, com verificação de certificado ativada em todos os clientes.
  2. Autenticação. Nenhum acesso anônimo a dados de produção. Credenciais únicas por dispositivo e por serviço.
  3. Vínculo de identidade. Client IDs vinculados às credenciais, para que um cliente não possa se passar por outro.
  4. Isolamento e autorização. Tenants e ambientes separados; restrinja topics onde o seu broker suportar e projete árvores de topics com identidade e direção visíveis. O guia de ACL MQTT cobre as duas abordagens.
  5. Proteção contra abuso. Cotas de conexões e de mensagens, proteção contra flood e bloqueio de tentativas de login por força bruta.
  6. Endurecimento dos dispositivos. Armazenamento criptografado de credenciais, Secure Boot, portas de depuração desativadas, atualizações de firmware assinadas.
  7. Operações. Rotação de credenciais, monitoramento do estado de conexão e de anomalias e um plano para revogar um dispositivo comprometido.

Como um broker MQTT gerenciado fecha as brechas

Várias dessas camadas ficam do lado do broker, e são exatamente as partes que implantações auto-hospedadas mais erram: certificados expiram, o acesso anônimo continua ligado depois de um teste, um arquivo de senhas é compartilhado por todos os dispositivos. Um broker MQTT gerenciado assume essas responsabilidades.

Veja como o ConnectMQ se relaciona com as camadas acima:

Camada ConnectMQ
Criptografia de transporte TLS na porta 8883 e WebSocket seguro na 8084 (caminho /mqtt) com certificado Let's Encrypt
Autenticação Usuário e senha gerados por conjunto de credenciais do broker
Vínculo de identidade Client IDs vinculados às credenciais emitidas
Isolamento Isolamento multi-tenant entre clientes; plano Dedicated para um cluster isolado; BYOC na sua própria conta de nuvem
Proteção contra abuso Cotas por plano, proteção contra flood, bloqueio de IP após repetidas falhas de login
Visibilidade Dashboard, explorador de topics ao vivo e $SYS/broker/connection/{clientId}/state para o estado de conexão de cada cliente

O ConnectMQ não aplica ACLs por topic, então a sua fronteira de segurança é o tenant e o broker: se dois grupos de clientes não podem ver os dados um do outro, dê a eles brokers separados e mantenha usuários não confiáveis atrás do seu próprio backend, em vez de entregar a eles credenciais do broker. O endurecimento dos dispositivos e a rotação de credenciais continuam sendo responsabilidade sua, como seriam com qualquer broker; os guias proteger credenciais MQTT em dispositivos e boas práticas de segurança MQTT tratam desses temas.

Autoavaliação rápida

Responda sobre a sua implantação atual:

  1. Algum cliente de produção se conecta pela porta 1883?
  2. Algum cliente desativa a verificação de certificado?
  3. Dois ou mais dispositivos compartilham uma credencial?
  4. Alguma credencial está fixa em uma imagem de firmware ou em um repositório público?
  5. Você consegue revogar um único dispositivo em minutos sem afetar os outros?
  6. Você perceberia se um dispositivo começasse a se conectar de um lugar inesperado ou a publicar dez vezes mais do que o normal?

Um "sim" em qualquer uma das quatro primeiras ou um "não" em qualquer uma das duas últimas indica por onde começar.

Comece a usar o ConnectMQ

Tenha TLS, autenticação, vínculo de identidade, isolamento de tenants e proteção contra abuso desde o primeiro dia com um broker MQTT na nuvem gerenciado para você. Crie um broker no plano Serverless (Free) em app.connectmq.com, sem cartão de crédito, e conecte seu primeiro dispositivo pela porta 8883 em minutos.

Perguntas frequentes

O MQTT é seguro sem TLS?

Não. Sem TLS, usuários, senhas, topics e payloads podem ser lidos por qualquer pessoa que consiga capturar o tráfego. Use a porta 8883 ou WebSockets seguros para tudo que não seja dado público de teste.

O MQTT é mais ou menos seguro que o HTTP?

Eles são comparáveis. Ambos dependem do TLS para criptografia e do servidor para autenticação e autorização; nenhum dos dois é seguro em texto claro.

O MQTT 5 melhora a segurança?

O MQTT 5 adiciona autenticação estendida, reautenticação e reason codes mais ricos, o que facilita construir e depurar designs seguros. Ele não adiciona criptografia por si só.

É seguro usar um broker MQTT público?

Para aprendizado e demonstrações com dados não sensíveis, sim. Brokers públicos, como o servidor MQTT público da ConnectMQ, podem ser lidos por todos, então dados de produção devem ficar em um broker privado com credenciais e TLS.

Artigos relacionados

Todos os artigos →

Seu broker MQTT privado está a poucos cliques de distância

Crie uma conta, receba as credenciais do seu broker e conecte seu primeiro dispositivo — sem servidores para instalar, atualizar ou escalar.