Laboratório em bancada
Laboratório: Integração Modbus TCP e OPC UA com Node-RED e Wireshark em Rede Segmentada
Você irá implementar uma rede simulada com um servidor Modbus TCP, um servidor OPC UA open62541 e um fluxo de integração Node-RED, monitorando o tráfego com Wireshark. Em cerca de 2 horas, terá uma visão prática de protocolos industriais, segmentação e monitoramento.

- Duração estimada
- 120 min
- Passos
- 10
- Validações
- 5
Este laboratório demonstra, na prática, como integrar dispositivos industriais simulados usando Modbus TCP e OPC UA, segmentar a rede conforme recomendações da IEC 62443 e monitorar o tráfego OT com Wireshark. Você irá configurar servidores, criar fluxos de dados e observar como as camadas se comunicam, identificando pontos de integração e possíveis riscos. O foco é entender a arquitetura, a segmentação e o monitoramento em ambientes OT, usando apenas ferramentas abertas.
Topologia
Três máquinas virtuais (ou hosts): uma simula um servidor Modbus TCP (IP 192.168.10.10), outra um servidor OPC UA open62541 (IP 192.168.20.20), e a terceira executa Node-RED (IP 192.168.30.30) para integrar ambos. Todas conectadas via bridge ou rede interna. Wireshark instalado na máquina Node-RED para capturar o tráfego. Cada segmento de rede representa uma zona diferente, conforme IEC 62443.
[Modbus TCP Server]
192.168.10.10
|
[ Roteador/Firewall ]
|
[OPC UA Server]
192.168.20.20
|
[ Roteador/Firewall ]
|
[Node-RED]
192.168.30.30
|
[Wireshark]
Equipamentos e software
| Item | Requisito, licença ou versão |
|---|---|
| VM ou PC para Modbus | 1 vCPU, 512MB RAM, 1 NIC, Ubuntu 22.04 ou similar |
| VM ou PC para OPC UA | 1 vCPU, 512MB RAM, 1 NIC, Ubuntu 22.04 ou similar |
| VM ou PC para Node-RED/Wireshark | 2 vCPU, 1GB RAM, 1 NIC, Ubuntu 22.04 ou similar |
| Node-RED | Apache 2.0 · a versão estável atual |
| open62541 | MPLv2 · a versão estável atual |
| Wireshark | GPLv2 · a versão estável atual |
| mbserver (Modbus TCP server) | MIT · a versão estável atual |
Roteiro
- Preparar as máquinas virtuais e rede
Crie três VMs (ou use três PCs) em uma rede interna, cada uma com um IP fixo conforme a topologia. Separe as sub-redes para simular zonas distintas, conforme IEC 62443.
Consulte a documentação do seu hipervisor para criar redes internas e atribuir IPs estáticos.O que você deve ver: Cada máquina responde a ping apenas de hosts autorizados, conforme as regras de firewall.
- Instalar o servidor Modbus TCP (mbserver)
No host 192.168.10.10, instale o mbserver para simular um equipamento Modbus TCP.
sudo apt update && sudo apt install python3-pip pip3 install mbserverO que você deve ver: mbserver instalado e disponível para execução.
- Executar o servidor Modbus TCP
Inicie o servidor Modbus TCP para aceitar conexões na porta padrão (502).
python3 -m mbserver --host 192.168.10.10 --port 502O que você deve ver: Mensagem indicando que o servidor está ouvindo em 192.168.10.10:502.
- Instalar o servidor OPC UA open62541
No host 192.168.20.20, baixe e compile o open62541 simples server de exemplo.
sudo apt update && sudo apt install git build-essential cmake cd ~ git clone https://github.com/open62541/open62541.git cd open62541 mkdir build && cd build cmake .. -DBUILD_EXAMPLES=ON makeO que você deve ver: Compilação concluída, binário simple_server disponível em build/bin.
- Executar o servidor OPC UA
Inicie o servidor OPC UA de exemplo.
./bin/examples/server_simpleO que você deve ver: Mensagem indicando que o servidor está ouvindo (geralmente porta 4840).
- Instalar Node-RED e pacotes Modbus/OPC UA
No host 192.168.30.30, instale Node-RED e os nodes contrib para Modbus e OPC UA.
sudo apt update && sudo apt install nodejs npm sudo npm install -g --unsafe-perm node-red node-red # Em outro terminal: npm install node-red-contrib-modbus npm install node-red-contrib-opcuaO que você deve ver: Node-RED rodando em http://localhost:1880, nodes Modbus e OPC UA disponíveis no editor.
- Criar fluxo Node-RED: Modbus para OPC UA
No editor web do Node-RED, crie um fluxo que lê um registrador do servidor Modbus e publica o valor em um nó OPC UA Client conectado ao servidor OPC UA.
Arraste um node 'modbus-read' (configurado para 192.168.10.10:502), conecte a um node 'opcua-client' (configurado para 192.168.20.20:4840). Consulte a documentação dos nodes para detalhes de configuração.O que você deve ver: Fluxo salvo e implantado, sem erros nos nodes.
- Instalar e iniciar Wireshark
No host Node-RED, instale e inicie o Wireshark para monitorar o tráfego das interfaces de rede.
sudo apt update && sudo apt install wireshark gsudo wireshark &O que você deve ver: Wireshark aberto, interfaces de rede listadas para captura.
- Capturar e filtrar tráfego Modbus e OPC UA
No Wireshark, inicie a captura na interface da VM. Use filtros 'tcp.port == 502' para Modbus e 'tcp.port == 4840' para OPC UA.
Filtros: tcp.port == 502 ou tcp.port == 4840O que você deve ver: Pacotes dos protocolos sendo exibidos ao acionar o fluxo Node-RED.
- Configurar firewall entre zonas
Implemente regras de firewall (iptables ou ufw) para permitir apenas o tráfego necessário entre as zonas, simulando conduítes IEC 62443.
sudo ufw allow from 192.168.30.30 to any port 502 proto tcp sudo ufw allow from 192.168.30.30 to any port 4840 proto tcp sudo ufw deny from any to anyO que você deve ver: Somente Node-RED consegue acessar Modbus e OPC UA; outros hosts são bloqueados.
Como saber que funcionou
| Teste | Comando | Critério |
|---|---|---|
| Verificar conexão Modbus TCP | telnet 192.168.10.10 502 | Conexão aceita; se não, fluxo Node-RED não funcionará. |
| Verificar conexão OPC UA | telnet 192.168.20.20 4840 | Conexão aceita; se não, fluxo Node-RED não funcionará. |
| Observar dados no fluxo Node-RED | Use node 'debug' conectado ao Modbus-read | Valores lidos do Modbus aparecem no debug. |
| Observar pacotes no Wireshark | Filtros: tcp.port == 502 ou tcp.port == 4840 | Pacotes visíveis ao acionar o fluxo. |
| Testar bloqueio de acesso externo | De outro host, tente conectar nas portas 502/4840 | Conexão negada, firewall funcionando. |
Troubleshooting
| Sintoma | Causa provável | Correção |
|---|---|---|
| Node-RED não conecta ao Modbus | Firewall bloqueando porta 502 ou IP errado | Verifique IPs, regras de firewall e se o servidor está rodando. |
| Node-RED não conecta ao OPC UA | Servidor OPC UA não iniciado ou porta bloqueada | Confirme execução do open62541 e regras de firewall. |
| Wireshark não captura pacotes | Interface errada ou falta de permissão | Execute Wireshark como root e selecione a interface correta. |
| Fluxo Node-RED apresenta erro de autenticação OPC UA | Configuração de segurança ou endpoint incorreto | Consulte a documentação do node-red-contrib-opcua para ajustar endpoint e modo de segurança. |
| mbserver não inicia na porta 502 | Permissão insuficiente (porta <1024) | Execute como root ou use porta acima de 1024 para testes. |
Segurança e hardening
- Nunca exponha portas 502 (Modbus) e 4840 (OPC UA) sem firewall em produção.
- Modbus TCP não possui autenticação nativa; use segmentação e firewall.
- OPC UA suporta criptografia e autenticação; ative sempre que possível.
- Node-RED deve ser protegido por senha e restrição de IP.
- Desative ou restrinja o acesso remoto ao Wireshark.
- Aplique hardening básico no sistema operacional das VMs (SSH, atualizações, usuários).
