O NetSheriff é uma plataforma acadêmica de monitoramento e análise de segurança de rede, com dashboard, alertas, regras de detecção, logs, monitoramento e auditoria real do firewall Linux via iptables.
O projeto foi desenvolvido para a disciplina de Programação Web e integra uma interface web com uma API Node.js/Express, banco SQLite via Prisma e autenticação JWT.
iptables.NetSheriff/
├── back/
│ ├── prisma/
│ │ ├── schema.prisma
│ │ ├── migrations/
│ │ └── seed.js
│ ├── scripts/
│ ├── src/
│ │ ├── lib/
│ │ ├── routes/
│ │ └── server.js
│ ├── .env.example
│ ├── Dockerfile
│ └── package.json
├── front/
│ ├── css/
│ ├── js/
│ ├── index.html
│ ├── alerts.html
│ ├── rules.html
│ ├── monitoring.html
│ ├── audit.html
│ └── login.html
└── docker-compose.yml
Na raiz do projeto, execute:
docker compose up --build
O backend ficará disponível em:
http://localhost:3000
O frontend ficará disponível em:
http://localhost:8080
Em containers Docker comuns, a auditoria de
iptablespode aparecer como indisponível, pois o container normalmente não acessa o firewall real do host.
Para executar o projeto localmente com suporte à auditoria real de iptables, rode:
cd back
npm install
npm run setup:local
npm run setup:iptables
npm start
Em outro terminal, sirva o frontend a partir da raiz do projeto:
python3 -m http.server 5502
Acesse no navegador:
http://127.0.0.1:5502/front/index.html
O backend ficará disponível em:
http://localhost:3000
O script setup:local prepara o ambiente local do backend, incluindo banco SQLite, Prisma, migrations, seed e arquivos necessários para execução.
O script setup:iptables configura a permissão necessária para a auditoria real do firewall Linux.
A aba Firewall consulta regras reais do firewall Linux usando comandos de leitura do iptables.
Para configurar e verificar a auditoria em um ambiente Linux:
cd back
npm run setup:iptables
npm run check:iptables
Essa auditoria:
iptables e permissão adequada;As regras reais do iptables aparecem na aba Firewall apenas para visualização e auditoria.
A aba Regras não representa regras reais do firewall. Ela contém regras internas de detecção do NetSheriff, como regras para identificar port scan, tráfego alto ou anomalias.
O backend usa variáveis de ambiente para configurar porta, banco de dados e segredo JWT.
Principais variáveis:
PORTDATABASE_URLJWT_SECRETLOG_LEVELO arquivo .env real não deve ser enviado ao GitHub.
O arquivo .env.example serve como modelo de configuração.
Para uso local, o ambiente é preparado pelo script:
npm run setup:local
Antes de usar fora de demonstrações acadêmicas, altere o JWT_SECRET para um valor forte.
O projeto utiliza SQLite com Prisma ORM.
O schema do banco fica em:
back/prisma/schema.prisma
As migrations ficam em:
back/prisma/migrations/
O seed inicial fica em:
back/prisma/seed.js
Comandos úteis:
npx prisma generate
npx prisma migrate deploy
npx prisma db seed
npx prisma studio
O Prisma é usado para realizar operações de criação, consulta, atualização e remoção de dados no backend.
O sistema possui autenticação com JWT.
Fluxo geral:
Authorization: Bearer <token>
Rotas protegidas validam o token antes de permitir acesso aos dados.
As senhas são armazenadas de forma segura com hash, não em texto puro.
POST /api/auth/register
POST /api/auth/login
GET /api/rules
POST /api/rules
PUT /api/rules/:id
PATCH /api/rules/:id/status
DELETE /api/rules/:id
GET /api/alerts
GET /api/logs
GET /api/traffic
GET /api/audit/iptables
A rota de auditoria do firewall retorna dados reais do iptables, quando disponíveis, incluindo chains, policies, regras, achados e recomendações.
Mostra a visão geral do sistema, incluindo métricas principais, alertas recentes, regras rápidas e resumo da auditoria do firewall.
Exibe alertas do sistema e também achados relevantes da auditoria do firewall, como configurações permissivas ou riscos encontrados nas regras do iptables.
Exibe regras internas de detecção do NetSheriff.
Essas regras pertencem à lógica da aplicação e podem ser cadastradas, editadas, ativadas, desativadas ou removidas pelo usuário.
Elas não são regras reais do iptables.
Mostra o estado geral da rede/sistema, métricas do painel e eventos recentes.
Exibe a auditoria real completa do iptables.
Essa aba mostra:
As regras reais do firewall são apenas lidas e analisadas. O sistema não altera o firewall.
Exibe registros e eventos do sistema, incluindo eventos de segurança e logs derivados da auditoria do firewall.
A auditoria do iptables foi implementada com foco em segurança:
O projeto possui configuração Docker para facilitar a execução.
Arquivos principais:
docker-compose.yml
back/Dockerfile
front/Dockerfile
Comando principal:
docker compose up --build
O Docker executa o sistema de forma integrada, subindo backend, frontend e banco de dados.
A auditoria real do iptables pode exigir execução local ou permissões específicas, pois containers comuns são isolados do firewall real do host.
O NetSheriff combina dados demonstrativos do painel com uma integração real ao sistema operacional.
A parte de alertas, logs e monitoramento representa o funcionamento de uma plataforma de segurança.
A parte real implementada é a auditoria do firewall Linux via iptables, que lê regras reais da máquina e gera achados de segurança.
A separação entre Regras e Firewall foi feita por segurança e organização:
iptables, apenas para auditoria e leitura.Essa separação evita que a aplicação edite diretamente configurações sensíveis do sistema operacional.
O código-fonte do projeto deve ser disponibilizado no GitHub e enviado conforme as orientações da disciplina. ```