Monitoramento de Conexões de Rede com Node.js, PHP e SQLite
Se você gerencia um servidor, sabe como é importante monitorar as conexões de rede para identificar acessos suspeitos ou anormais. Pensando nisso, desenvolvi um microserviço simples e funcional para mapear conexões ativas, exibir geolocalizações e permitir bloqueios diretamente via interface web. Tudo com tecnologias leves: Node.js, PHP e SQLite.
O que esse projeto faz?
- Um dashboard web para visualizar conexões ativas (IPs, portas, localização geográfica).
- Um mapa interativo com os IPs conectados.
- Ação rápida para bloquear/desbloquear IPs usando
iptables
. - Cache local das geolocalizações com SQLite para performance.
- Backend seguro, sem expor o Node.js para a internet.
Arquitetura
Backend (Node.js):
- Usa
netstat
ouss
para coletar as conexões ativas. - Envia esses dados para a interface via API local (
http://127.0.0.1:3033
). - Usa
ip-api.com
para obter geolocalização dos IPs, salvando os resultados em cache (ip_cache.sqlite
). - Bloqueia/desbloqueia IPs com
iptables
.
Frontend (PHP):
- Um proxy leve usando
cURL
, que consome as rotas do backend local. - Interface em HTML/CSS/JS servida via
index.php
emapa.php
. - Sem problemas de CORS e com total isolamento entre frontend e backend.
Como usar
1. Instale as dependências
npm install
2. Inicie o serviço
node index.js
O serviço ficará ouvindo em http://127.0.0.1:3033
.
3. Configure seu servidor web
Aponte a raiz do Apache ou Nginx para o diretório public/
do projeto.
Certifique-se de que o PHP tenha a extensão curl
habilitada.
4. Acesse via navegador
http://localhost/ # Ou o IP do seu servidor
Principais arquivos
-
index.js
: Serviço Node.js que coordena as conexões, IPs e ações. -
mapa.php
: Interface gráfica com mapa interativo. -
ip_cache.sqlite
: Base local de IPs e geolocalizações. -
package.json
: Dependências e descrição do projeto.
Requisitos do ambiente
- Node.js 16+
- PHP com
curl
- Ferramentas:
netstat
ouss
,iptables
- SQLite
Exemplo de visualização
A interface mostra algo assim:
- IP:
203.0.113.42
- Localização: 🇩🇪 Frankfurt, DE
- Status: 🔓 ou 🔒 (bloqueado)
- Ações: botão para bloquear/desbloquear diretamente
🔐 Segurança
O backend Node.js não é exposto publicamente. Todo acesso acontece via proxy PHP, o que reduz vetores de ataque e elimina problemas de CORS.
Se você precisa de uma solução leve, funcional e extensível para monitorar conexões no seu VPS, esse projeto pode te ajudar. O código está disponível para personalização e pode ser facilmente expandido com logs, alertas, ou até integração com Telegram ou n8n.
🔗 Repositório: https://github.com/ivanrochacardoso/ip-map-dashboard
Feedbacks e PRs são bem-vindos!
Top comments (0)