3.4 - Firewall - Antivírus RabbitMQ

3.4 - Firewall - Antivírus RabbitMQ

Como tornar o RabbitMQ seguro?

Abordagens comuns para TLS para conexões de clientes com RabbitMQ. Para conexões de clientes, há duas abordagens comuns: Configure o RabbitMQ para lidar com conexões TLS. Use um proxy ou balanceador de carga (como HAproxy) para executar a terminação TLS de conexões de cliente e use conexões TCP simples para nós RabbitMQ.

Qual protocolo o RabbitMQ usa?

Protocolo de enfileiramento de mensagens avançado (AMQP)
RabbitMQ é um corretor de mensagens leve, confiável, escalável e portátil. Mas, ao contrário de muitos intermediários de mensagens familiares aos desenvolvedores Java, ele não é baseado em JMS. Em vez disso, seus aplicativos se comunicam com ele por meio de um protocolo de nível de fio neutro de plataforma: o Advanced Message Queuing Protocol (AMQP).

Acesso à porta

Os nós RabbitMQ se ligam a portas (soquetes TCP do servidor aberto) para aceitar conexões de cliente e ferramenta CLI. Outros processos e ferramentas, como o SELinux, podem impedir que o RabbitMQ seja vinculado a uma porta. Quando isso acontecer, o nó falhará ao iniciar.

Ferramentas CLI, bibliotecas de clientes e nós RabbitMQ também abrem conexões (sockets TCP de cliente). Os firewalls podem impedir que os nós e as ferramentas CLI se comuniquem. Certifique-se de que as seguintes portas estejam acessíveis:

Firewalls e outras ferramentas de segurança podem impedir que o RabbitMQ se ligue a uma porta. Quando isso acontece, o RabbitMQ falha ao iniciar.

Verifique se as seguintes portas podem ser abertas:

PortasPadrões
Tipo
Descricao
4369
TCP
Epmd, um serviço de descoberta de pares usado por nós RabbitMQ e ferramentas CLI 
5671/5672
TCP
Usado pelos clientes AMQP 0-9-1 e 1.0 sem e com TLS
25672
TCP
Usado pela distribuição Erlang para comunicação entre nós e ferramentas CLI e é alocado a partir de um intervalo dinâmico (limitado a uma única porta por padrão, calculada como porta AMQP + 20000). Consulte o guia de rede para obter detalhes.
15672
TCP
Clientes da API HTTP e rabbitmqadmin (apenas se o plugin de gerenciamento estiver ativado)
61613/61614
TCP 
Clientes STOMP sem e com TLS (apenas se o plug-in STOMP estiver ativado)
1883/8883
 MQTT
clientes MQTT sem e com TLS, se o plugin MQTT estiver ativado
15674
TCP 
Clientes STOMP-over-WebSockets (apenas se o plug-in Web STOMP estiver ativado)
15675
TCP
Clientes MQTT sobre WebSockets (apenas se o plugin MQTT da Web estiver ativado)


Ao configurar regras de firewall, é altamente recomendável permitir conexões remotas na porta de comunicação entre nós de cada membro do cluster e cada host onde as ferramentas CLI podem ser usadas. A porta epmd deve estar aberta para que as ferramentas CLI e o cluster funcionem.

No Windows, as configurações a seguir não têm efeito quando o RabbitMQ é executado como um serviço. Consulte as peculiaridades do Windows para obter detalhes.

Para segurança no servidor Rabbitmq, existem alguns mecanismos de segurança no RabbitMQ: Controle de acesso. Autenticação SASL. Suporte SSL.

É possível criptografar conexões usando TLS com RabbitMQ. A autenticação usando certificados de mesmo nível também é possível.

Através da versão de código aberto do SSL/TLS, que é o protocolo mais usado para comunicações de rede seguras, é possível proteger esses aplicativos contra ameaças comuns à segurança de rede uma vez que pode ser usada programaticamente ou a partir da linha de comando para proteger a maioria dos protocolos de rede baseados em TCP. Segurança de rede com OpenSSLpermite que os desenvolvedores usem esse protocolo com muito mais eficiência. Tradicionalmente, fazer algo simples no OpenSSL pode levar semanas.

O TLS tem duas finalidades principais: criptografar o tráfego de conexão e fornecer uma maneira de autenticar ( verificar ) o peer para mitigar os ataques Man-in-the-Middle . Ambos são realizados usando um conjunto de funções, políticas e procedimentos conhecidos como Infraestrutura de Chave Pública (PKI).

Uma PKI é baseada no conceito de identidades digitais que podem ser verificadas criptograficamente (matematicamente). Essas identidades são chamadas de certificados ou, mais precisamente, pares de certificados/chaves . Cada servidor habilitado para TLS geralmente tem seu próprio par de certificado/chave que ele usa para calcular uma chave específica de conexão que será usada para criptografar o tráfego enviado na conexão. Além disso, se solicitado, ele pode apresentar seu certificado (chave pública) ao peer de conexão. Os clientes podem ou não ter seus próprios certificados. No contexto de mensagens e ferramentas como o RabbitMQ, é bastante comum que os clientes também usem pares de certificado/chave para que os servidores possam validar sua identidade.

Os pares de certificado/chave são gerados por ferramentas como OpenSSL e assinados por entidades chamadas Autoridades de Certificação (CA). As CAs emitem certificados que os usuários (aplicativos ou outras CAs) usam. Quando um certificado é assinado por uma CA, eles formam uma cadeia de confiança . Essas cadeias podem incluir mais de uma CA, mas, em última análise, assinam um par de certificado/chave usado por um aplicativo (uma folha ou certificado de usuário final ). As cadeias de certificados de CA geralmente são distribuídas juntas em um único arquivo. Esse arquivo é chamado de pacote CA.

Certificados confiáveis

Cada ferramenta habilitada para TLS e implementação de TLS, incluindo Erlang/OTP e RabbitMQ, tem uma maneira de marcar um conjunto de certificados como confiáveis.
Existem três abordagens comuns para isso:

Todos os certificados de CA confiáveis devem ser adicionados a um único arquivo chamado pacote de certificados de CA
Todos os certificados de CA em um diretório são considerados confiáveis
Uma ferramenta dedicada é usada para gerenciar certificados de CA confiáveis
Diferentes implementações e ferramentas de TLS usam opções diferentes. No contexto do RabbitMQ, isso significa que a abordagem de gerenciamento de certificados confiáveis pode ser diferente para diferentes bibliotecas de clientes, ferramentas e o próprio servidor RabbitMQ.

No Windows, os certificados confiáveis são gerenciados usando ferramentas como certmgr .

Documento de referência: https://www.rabbitmq.com/install-windows-manual.html


    • Related Articles

    • 2.8 - Firewall - MongoDB

      Visão Geral Em sistemas Windows Server, o nestsh programa fornece métodos para gerenciar o Firewall do Windows.  Essas regras de firewall permitem que os administradores controlem quais hosts podem se conectar ao sistema e limitam a exposição ao ...
    • 5.8 - Antivírus Elasticsearch

      O Elastic Stack fornece recursos de análise de segurança que são amplamente usados para detecção de ameaças, visibilidade e resposta a incidentes. A velocidade e escala com que o Elasticsearch pode indexar e pesquisar informações relativas à ...
    • 5.7 - Firewall - Elasticsearch

      Configurando o Firewall Para uma implantação do Orchestrator que funcione corretamente, você deve garantir que todas as portas necessárias estejam abertas no seu firewall para permitir a comunicação entre todos os componentes, conforme exibido neste ...
    • 3.3 - Configuração RabbitMQ

      Após habilitação do plugin, veja que é possível acessar o gerenciador web em http://localhost:15672, informando os dados de acesso padrão: user: guest, passwd-guest Como recomendação de segurança, é importante criar um usuário específico de ...
    • 6.1 - Plant Model - Acesso

      Para configurar o modelo da Planta, o usuário precisa ter efetuado login no PlantSuite e acessar a página de configurações através do Menu Principal, conforme imagem: Menu de acesso ao Plant Model