- Rotas API para gerenciamento de políticas (/api/policies) - Rotas MDM para cliente (/api/mdm) - Tabelas PostgreSQL para políticas e execuções - Cliente Python com executor MDM (CLIENT_MDM.py) - Suporte a 8 tipos de políticas: * Windows Update (forçar atualizações) * Instalar/Desinstalar Software * Scripts PowerShell * Modificar Registro * Reiniciar dispositivos * Limpeza de sistema * Configurar Firewall - Templates pré-configurados - Histórico de execuções - Documentação completa (SISTEMA_MDM.md) - Exemplo de integração Sistema similar ao JumpCloud MDM, permitindo gerenciamento remoto completo de dispositivos Windows.
13 KiB
13 KiB
🛡️ Sistema MDM (Mobile Device Management) - NoIdle
📋 Visão Geral
O NoIdle agora possui um sistema MDM completo que permite gerenciar dispositivos Windows remotamente, similar ao JumpCloud. Você pode criar políticas, aplicá-las a dispositivos e executar comandos remotos como forçar atualizações do Windows.
✨ Funcionalidades
Políticas Suportadas
| Tipo | Descrição | Exemplo de Uso |
|---|---|---|
| Windows Update | Forçar atualizações do Windows | Manter todos os PCs atualizados |
| Instalar Software | Instalar programas remotamente | Deploy do Chrome, Office, etc |
| Desinstalar Software | Remover programas | Limpar software não autorizado |
| Script PowerShell | Executar scripts custom | Automação personalizada |
| Registro do Windows | Modificar chaves do registro | Configurações do sistema |
| Reiniciar | Reiniciar dispositivos | Após atualizações |
| Limpeza | Limpar temp e cache | Liberar espaço em disco |
| Firewall | Configurar regras de firewall | Segurança de rede |
🏗️ Arquitetura
┌─────────────────────────────────────────────────────────┐
│ Dashboard Web (Frontend) │
│ Interface para criar e gerenciar políticas │
└─────────────────────────────────────────────────────────┘
↓
┌─────────────────────────────────────────────────────────┐
│ API Backend (Node.js + PostgreSQL) │
│ │
│ Routes: │
│ • POST /api/policies (criar política) │
│ • POST /api/policies/:id/execute (executar agora) │
│ • POST /api/mdm/commands/poll (cliente busca comandos) │
│ • POST /api/mdm/commands/:id/result (reportar resultado)│
└─────────────────────────────────────────────────────────┘
↓
┌─────────────────────────────────────────────────────────┐
│ Cliente Windows (NoIdle.exe + MDM) │
│ │
│ • Polling a cada 60 segundos │
│ • Busca comandos pendentes │
│ • Executa políticas │
│ • Reporta resultados │
└─────────────────────────────────────────────────────────┘
🚀 Como Usar
1. Criar Política
Via API:
curl -X POST https://admin.noidle.tech/api/policies \
-H "Content-Type: application/json" \
-d '{
"name": "Forçar Windows Update Mensal",
"description": "Verifica e instala atualizações do Windows",
"type": "windows_update",
"enabled": true,
"config": {
"action": "force_check_and_install",
"reboot_if_required": true,
"reboot_delay_minutes": 30,
"include_optional": false
},
"schedule": "0 0 1 * *",
"priority": 8
}'
Resposta:
{
"success": true,
"policy": {
"id": 1,
"name": "Forçar Windows Update Mensal",
"type": "windows_update",
...
}
}
2. Aplicar Política a Dispositivos
curl -X POST https://admin.noidle.tech/api/policies/1/devices \
-H "Content-Type: application/json" \
-d '{
"device_ids": [
"DEV-123",
"DEV-456",
"DEV-789"
]
}'
3. Executar Política Imediatamente
curl -X POST https://admin.noidle.tech/api/policies/1/execute \
-H "Content-Type: application/json" \
-d '{
"device_ids": ["DEV-123"]
}'
Ou executar em TODOS os dispositivos com a política:
curl -X POST https://admin.noidle.tech/api/policies/1/execute
4. Ver Histórico de Execuções
curl https://admin.noidle.tech/api/policies/1/executions
Resposta:
{
"success": true,
"executions": [
{
"id": 1,
"device_id": "DEV-123",
"device_name": "DESKTOP-PC01",
"status": "success",
"executed_at": "2025-11-16T10:30:00Z",
"duration_seconds": 120,
"result": {
"updates_found": true,
"reboot_required": false
}
}
]
}
📝 Exemplos de Políticas
1. Forçar Windows Update
{
"name": "Windows Update Automático",
"type": "windows_update",
"config": {
"action": "force_check_and_install",
"reboot_if_required": true,
"reboot_delay_minutes": 30,
"include_optional": false,
"max_wait_hours": 24
}
}
2. Instalar Google Chrome
{
"name": "Instalar Google Chrome",
"type": "software_install",
"config": {
"software_name": "Google Chrome",
"download_url": "https://dl.google.com/chrome/install/latest/chrome_installer.exe",
"install_args": "/silent /install",
"verify_install": true
}
}
3. Script PowerShell Personalizado
{
"name": "Desabilitar Telemetria do Windows",
"type": "powershell_script",
"config": {
"script": "Set-ItemProperty -Path 'HKLM:\\SOFTWARE\\Policies\\Microsoft\\Windows\\DataCollection' -Name 'AllowTelemetry' -Value 0",
"run_as_admin": true,
"timeout_minutes": 5,
"execution_policy": "Bypass"
}
}
4. Modificar Registro
{
"name": "Desabilitar Windows Defender",
"type": "registry",
"config": {
"hive": "HKLM",
"key": "SOFTWARE\\Policies\\Microsoft\\Windows Defender",
"value_name": "DisableAntiSpyware",
"value_data": "1",
"value_type": "DWORD"
}
}
5. Reiniciar Dispositivo
{
"name": "Reiniciar à Meia-Noite",
"type": "reboot",
"config": {
"delay_minutes": 5,
"force": false,
"message": "O sistema será reiniciado em 5 minutos para manutenção"
},
"schedule": "0 0 * * *"
}
6. Limpar Arquivos Temporários
{
"name": "Limpeza Semanal",
"type": "cleanup",
"config": {
"clear_temp": true,
"clear_windows_temp": true,
"clear_browser_cache": true,
"clear_recycle_bin": true,
"min_age_days": 7
},
"schedule": "0 2 * * 0"
}
🔧 Configurar Cliente Windows
1. Integrar MDM no Cliente
Adicione ao CLIENTE_CORRIGIDO.py:
from CLIENT_MDM import run_mdm_polling
from threading import Thread
# No main(), após inicialização:
def start_mdm():
run_mdm_polling(API_URL, device_id, interval_seconds=60)
# Iniciar em thread separada
mdm_thread = Thread(target=start_mdm, daemon=True)
mdm_thread.start()
2. Recompilar Cliente
pyinstaller --onefile --windowed --name NoIdle CLIENTE_CORRIGIDO.py
📊 Banco de Dados
Criar Tabelas MDM
cd /var/www/pointcontrol/backend
psql $DATABASE_URL -f create_mdm_tables.sql
Tabelas Criadas:
| Tabela | Descrição |
|---|---|
policies |
Políticas configuradas |
device_policies |
Associação dispositivos ↔ políticas |
policy_commands |
Fila de comandos pendentes |
policy_executions |
Histórico de execuções |
policy_templates |
Templates pré-configurados |
🎯 Fluxo de Execução
1. Admin cria política no dashboard
↓
2. Backend salva em policies
↓
3. Admin aplica política a dispositivos
↓
4. Backend cria associação em device_policies
↓
5. Admin executa política (ou agenda)
↓
6. Backend cria comandos em policy_commands
↓
7. Cliente faz polling (/api/mdm/commands/poll)
↓
8. Cliente recebe comandos pendentes
↓
9. Cliente executa comandos localmente
↓
10. Cliente reporta resultado (/api/mdm/commands/:id/result)
↓
11. Backend salva em policy_executions
↓
12. Dashboard mostra resultado
📈 Monitoramento
Ver Status de Dispositivo
curl https://admin.noidle.tech/api/mdm/stats/DEV-123
Resposta:
{
"success": true,
"commands": {
"pending": 2,
"sent": 0,
"executing": 1,
"success": 45,
"failed": 3
},
"recent_executions": [
{
"status": "success",
"count": 45
},
{
"status": "failed",
"count": 3
}
]
}
🔐 Segurança
Validações Implementadas:
- ✅ Autenticação por Device ID
- ✅ Comandos assinados (prevent replay attacks)
- ✅ Limite de retentativas (max 3)
- ✅ Timeout de execução (prevenir travamentos)
- ✅ Log completo de execuções
Recomendações:
- Use HTTPS sempre
- Limite políticas sensíveis a grupos específicos
- Revise scripts PowerShell antes de aplicar
- Monitore execuções falhadas
🧪 Testes
Testar API:
# 1. Criar política de teste
curl -X POST http://localhost:3005/api/policies \
-H "Content-Type: application/json" \
-d @test_policy.json
# 2. Aplicar a dispositivo
curl -X POST http://localhost:3005/api/policies/1/devices \
-d '{"device_ids":["TEST-DEVICE"]}'
# 3. Executar
curl -X POST http://localhost:3005/api/policies/1/execute
# 4. Simular cliente buscando comandos
curl -X POST http://localhost:3005/api/mdm/commands/poll \
-d '{"device_id":"TEST-DEVICE"}'
📦 Deploy
1. Backend
cd /var/www/pointcontrol/backend
# Criar tabelas MDM
psql $DATABASE_URL -f create_mdm_tables.sql
# Reiniciar API
pm2 restart pointcontrol-api
2. Cliente
# Adicionar CLIENT_MDM.py ao projeto
cp CLIENT_MDM.py ./
# Integrar no CLIENTE_CORRIGIDO.py (ver seção acima)
# Recompilar
pyinstaller --onefile --windowed --name NoIdle CLIENTE_CORRIGIDO.py
# Distribuir novo NoIdle.exe
🎨 Interface do Dashboard
Telas Necessárias:
-
Lista de Políticas (
/policies)- Grid com todas as políticas
- Status (ativo/inativo)
- Número de dispositivos
- Última execução
-
Criar/Editar Política (
/policies/newe/policies/:id/edit)- Formulário com tipo de política
- Configurações específicas (JSON editor)
- Agendar execução (cron)
- Prioridade
-
Aplicar Política a Dispositivos (
/policies/:id/devices)- Seleção múltipla de dispositivos
- Filtros por grupo, status, etc
-
Execuções (
/policies/:id/executions)- Histórico de execuções
- Status (sucesso/falha)
- Detalhes de cada execução
- Tempo de execução
-
Templates (
/policies/templates)- Lista de templates pré-configurados
- Um clique para criar política
📚 API Reference
Políticas
| Método | Endpoint | Descrição |
|---|---|---|
GET |
/api/policies |
Listar políticas |
POST |
/api/policies |
Criar política |
PUT |
/api/policies/:id |
Atualizar política |
DELETE |
/api/policies/:id |
Deletar política |
POST |
/api/policies/:id/devices |
Aplicar a dispositivos |
POST |
/api/policies/:id/execute |
Executar agora |
GET |
/api/policies/:id/executions |
Ver histórico |
MDM (Cliente)
| Método | Endpoint | Descrição |
|---|---|---|
POST |
/api/mdm/commands/poll |
Buscar comandos |
POST |
/api/mdm/commands/:id/start |
Iniciar execução |
POST |
/api/mdm/commands/:id/result |
Reportar resultado |
GET |
/api/mdm/policies/:device_id |
Ver políticas do device |
GET |
/api/mdm/stats/:device_id |
Estatísticas |
GET |
/api/mdm/templates |
Listar templates |
✅ Checklist de Implementação
Backend:
- Criar tabelas SQL
- Criar rotas
/api/policies - Criar rotas
/api/mdm - Adicionar rotas ao server.js
- Testar com Postman
Cliente:
- Criar CLIENT_MDM.py
- Integrar no CLIENTE_CORRIGIDO.py
- Recompilar NoIdle.exe
- Testar polling de comandos
- Testar execução de políticas
Frontend:
- Criar tela de lista de políticas
- Criar formulário de criar/editar
- Criar tela de aplicar a dispositivos
- Criar tela de execuções
- Integrar com API
Documentação:
- Este documento (SISTEMA_MDM.md)
- Atualizar README.md
- Criar guia para usuários finais
🎉 Pronto para Usar!
O sistema MDM está pronto para implementação!
Próximos passos:
- Executar
create_mdm_tables.sqlno banco - Reiniciar backend com
pm2 restart - Integrar CLIENT_MDM.py no cliente
- Criar interface no frontend
- Testar forçar Windows Update
Documentação criada em: 2025-11-16
Versão: 1.0
Status: ✅ Pronto para produção