Quais testes simples de segurança posso executar na minha rede MQTT?

13

Estou prestes a configurar uma rede MQTT em casa. Eu quero construir algum conhecimento através de exercícios práticos. Seria uma pequena rede com o corretor hospedado no meu laptop (Windows 7) e algum cliente com Raspberry Pi. Também estou pensando em fazer um cliente no meu telefone (Android).

Meu objetivo é ter uma rede simples na qual eu possa experimentar e quero executar alguns testes de segurança, experimentando primeiro.

Eu encontrei um MQTT Server Test Suite que foi projetado para agir como um cliente MQTT mal-intencionado. É bastante promissor para começar.

Recursos gerais da ferramenta de teste

  • Teste negativo de caixa preta totalmente automatizado
  • Casos de teste prontos
  • Escrito em Java (tm)
  • GUI, linha de comando, modos de interface remota
  • Capacidade de instrumentação (verificação de integridade)
  • Suporte e manutenção
  • Documentação abrangente do usuário
  • Relatório e análise de resultados

Mas também estou interessado em algumas práticas mais simples que posso usar para verificar os recursos de segurança do MQTT. Quais são as maneiras mais simples para um iniciante executar algumas verificações básicas de segurança em uma rede MQTT?

Bence Kaulics
fonte

Respostas:

12

Algumas idéias - eu não cobri todas as combinações de com / sem nome de usuário / TLS, espero que você possa ver onde elas estão faltando.

Um cliente pode se conectar anonimamente, sem TLS?

mosquitto_sub -t test/topic -h <broker address>

Um cliente pode se conectar se fornecer um nome de usuário, mas sem senha, sem TLS?

mosquitto_sub -t test/topic -u <username> -h <broker address>

Um cliente pode se conectar se fornecer um nome de usuário e uma senha (correta ou não), sem TLS?

mosquitto_sub -t test/topic -u <username> -P <password> -h <broker address>

Um cliente pode se inscrever no $SYStópico e ver informações sobre o broker?

mosquitto_sub -t '$SYS/#' -v -h <broker address>

Um cliente pode se conectar usando TLS?

mosquitto_sub -t test/topic -h <broker address> -p 8883 --capath /etc/ssl/certs

Um cliente pode se inscrever em todos os tópicos? O que ele vê?

mosquitto_sub -t '#' -v

Repita todos os itens acima ao publicar também.

ralight
fonte
5

Talvez afirmando o óbvio, mas acho importante enfatizar que um iniciante não pode esperar construir uma rede segura. Nada de errado em aprender.

Parece que a segurança primária no MQTT foi implementada na camada de transporte, portanto esse deve ser seu foco para segurança real.

Eu ficaria surpreso se qualquer suíte de teste automatizado pudesse replicar a capacidade de um especialista em encontrar falhas na implementação do protocolo.

Sean Houlihane
fonte
4
Não estou esperando uma rede completamente segura. Eu só quero executar verificações de sanidade, testes muito básicos para ver se tenho algo para começar.
Bence Kaulics