Documentação Oficial de Engenharia · TuringTec LTDA

Manual Completo de Administração e Auditoria — TuringServer

Guia definitivo explicando em profundidade como cada funcionalidade do TuringServer opera no kernel e nas APIs do Windows Server, quais serviços nativos são utilizados, onde cada ação impacta no sistema operacional e como administrar seu servidor com máxima eficiência e rastreabilidade.

Versão do Pacote v1.2.0 (win-x64)
Sistemas Compatíveis Win Server 2016–2025
Motor & Banco Local .NET 10 + SQLite WAL
Desenvolvedora TuringTec LTDA
Capítulo 01

Visão Geral e Arquitetura Interna do TuringServer

O Visualizador de Eventos (Event Viewer) nativo do Windows Server registra milhares de entradas técnicas por hora, mas sofre de três limitações críticas para a gestão corporativa:

  1. Fragmentação da Evidência: Quando um usuário apaga um arquivo em uma pasta compartilhada na rede (SMB), o Windows registra o nome do arquivo no Event ID 4663, a confirmação da destruição no Event ID 4660, mas não grava o endereço IP nem o nome da máquina cliente nesses eventos — ele grava apenas um identificador hexadecimal temporário de sessão na memória chamado SubjectLogonId (ex.: 0x14C89A). O IP real da máquina só aparece nos eventos 4624 (Logon de Rede) e 5140/5145 (Acesso ao Compartilhamento).
  2. Auditoria de Arquivos Desligada por Padrão: Sem configurar políticas globais (auditpol) e listas de controle de auditoria NTFS (SACL) em cada pasta, o Windows Server simplesmente não registra quem apagou ou alterou arquivos.
  3. Sobrescrita Rápida (Log Circular): O arquivo Security.evtx padrão tem limite pequeno (20 MB a 128 MB), fazendo o Windows apagar rastros de dias anteriores rapidamente.

Como o TuringServer resolve isso por baixo do capô

O TuringServer é uma aplicação Self-Contained (autossuficiente, sem depender de IIS nem de banco de dados externo) dividida em quatro motores que rodam dentro de um único processo Windows Service:

  • Motor de Correlação em Memória (SessionCorrelationEngine): Mantém uma tabela hash concorrente indexada pelo LogonId alimentada em tempo real pelos eventos 4624, 5140 e pelas sessões SMB ativas. No milissegundo em que um arquivo é apagado ou renomeado, o motor cruza o LogonId e grava a frase completa já com Conta do Windows + Nome da Máquina + Endereço IP.
  • Filtro Anti-Ruído (NoiseFilterPipeline): Descarta automaticamente arquivos temporários de lock do Microsoft Office (~$*.xlsx, ~$*.docx, *.tmp), metadados do Explorer (Thumbs.db, desktop.ini), processos internos do sistema (SearchIndexer.exe, MsMpEng.exe do Windows Defender) e leituras puras de atributo (AccessMask 0x80), reduzindo em mais de 90% o volume de lixo e deixando na tela apenas ações humanas reais.
  • Banco Embarcado de Alta Velocidade (SQLite WAL + FTS5): Persiste todos os eventos traduzidos e correlacionados em dados\turingserver.db com índice de busca textual completa (FTS5), permitindo pesquisar qualquer arquivo, usuário ou IP em milhões de registros em menos de 15 milissegundos — mesmo que alguém limpe o Event Viewer do Windows!
  • Servidor Web Kestrel Embarcado: Entrega o painel gerencial diretamente via navegador para qualquer computador autorizado da rede local, na porta TCP que você escolher.
Capítulo 02

Implantação e Execução no Windows Server

O pacote dist\TuringServer-1.0.0-win-x64.zip já contém todo o runtime necessário. Para instalar em qualquer máquina com Windows Server (2016, 2019, 2022 ou 2025):

Script na Raiz do ZIP Modo de Uso O que ele executa no Windows Server
2-Instalar-Como-Servico-WindowsServer.bat
RECOMENDADO (PRODUÇÃO)
Botão direito → Executar como Administrador 1. Registra o serviço nativo TuringServer no services.msc rodando sob a conta LocalSystem com início automático no boot.
2. Configura recuperação automática no SCM (se o processo cair, o Windows o reinicia em 5 segundos).
3. Habilita os GUIDs universais de auditoria do auditpol.exe.
4. Cria a regra de entrada no Windows Firewall liberando a porta padrão 8480 para a sub-rede local (LAN).
1-Iniciar-Painel-Modo-Console.bat
MODO PORTÁTIL / TESTE
Botão direito → Executar como Administrador Sobe o TuringServer.exe imediatamente em uma janela de terminal e abre o navegador em http://127.0.0.1:8480. Ideal para homologação rápida sem registrar serviço.
3-Desinstalar-Servico-WindowsServer.bat Botão direito → Executar como Administrador Para e remove o serviço TuringServer do Windows Server, preservando intacta a subpasta dados\ com todo o histórico de auditoria.
4-Alterar-Porta-Pelo-Terminal.bat Executar como Administrador Permite escolher uma nova porta TCP via prompt de comando (ex.: 8485 ou 9090), cria a regra no Firewall e inicia o painel nessa porta.
⚠️ Por que executar como Administrador (ou Serviço LocalSystem) é importante?

No Windows Server, o canal de log Security e a lista de auditoria NTFS (SACL) são protegidos pelo privilégio de kernel SeSecurityPrivilege. Quando o TuringServer roda como Serviço Windows (LocalSystem) ou como Administrador, ele tem acesso total ao canal Security, aplica SACLs automaticamente nas pastas e consegue iniciar/reiniciar serviços do Windows.

Capítulo 03 · Aba 1

Detetive de Arquivos (Auditoria SMB / NTFS e Recuperação VSS)

A primeira aba do sistema é o centro de investigação de arquivos do servidor. Ela responde em segundos à pergunta mais crítica de qualquer administração de rede: "Quem apagou, moveu, renomeou, criou ou modificou um arquivo no servidor, quando isso ocorreu e a partir de qual computador/IP?"

Aba 1 - Detetive de Arquivos SMB/NTFS do TuringServer
Figura 1: Aba "Detetive de Arquivos (SMB/NTFS)" exibindo eventos reais de Exclusão, Renomeação e Criação com Conta Windows, Máquina, IP e botão de Restauração VSS. Aba 1 do Painel
⚙️ Serviços e APIs do Windows Usados
  • Serviço EventLog (Canal Security: Event IDs 4656, 4663, 4660, 4624, 5140, 5145).
  • Serviço LanmanServer (Servidor de compartilhamento SMB).
  • Driver NTFS.sys (SACL + ReadDirectoryChangesW via FileSystemWatcher).
  • Serviço VSS (Volume Shadow Copy) + Cofre interno dados\vss_vault\.
🎯 Onde Impacta no Servidor
  • Zero impacto em permissões de usuários (DACL): Monitorar uma pasta altera apenas a aba Auditoria (SACL), nunca as permissões de acesso dos usuários.
  • Disco (Cofre VSS): Mantém cópia rápida em dados\vss_vault\ para arquivos de até 15 MB nas pastas vigiadas, além de consultar snapshots nativos HarddiskVolumeShadowCopy.
  • CPU/RAM: Consumo inferior a 1% de CPU graças ao filtro anti-ruído em memória.
✅ Como Usar no Dia a Dia
  • Use a caixa de busca instantânea (FTS5) para digitar qualquer trecho do nome do arquivo, nome do colaborador ou IP.
  • Troque o seletor para "Apenas Arquivos APAGADOS (DELETE)" para auditar exclusões.
  • Clique em "⏪ Restaurar (VSS)" para recuperar imediatamente no disco um arquivo excluído por engano.
  • Clique em "🔍 Evidência" para abrir o JSON pericial ou em "📄 Exportar Relatório CSV (SHA-256)".

Diferenciação Inteligente: Exclusão Real vs. Renomeação

No Windows Server puro, quando um usuário renomeia um arquivo pelo Windows Explorer na rede, o protocolo SMB emite internamente um comando com máscara 0x10000 (DELETE) no nome antigo. Administradores que olham apenas o Event Viewer acham que o arquivo foi apagado. O TuringServer cruza o evento do kernel com o evento Renamed do sistema de arquivos, exibindo com clareza o badge amarelo RENOMEADO com o nome antigo e o nome novo!

Capítulo 04 · Aba 2

Radar de Máquinas na Rede & Destravador de Arquivos Presos (SMB Unlocker)

A segunda aba entrega visibilidade completa de todas as máquinas conectadas na sub-rede do servidor e resolve um dos problemas mais frequentes do suporte corporativo: arquivos e planilhas travados na rede por outro usuário.

Aba 2 - Radar de Máquinas na Rede e Destravador SMB
Figura 2: Aba "Máquinas na Rede & Arquivos Presos" listando todos os dispositivos da LAN (IP, MAC, Fabricante, Hostname) e os handles SMB bloqueados com botão "Destravar Arquivo". Aba 2 do Painel
⚙️ Serviços e APIs do Windows Usados
  • Pilha TCP/IP e Tabela ARP do Kernel Windows (arp -a + NetworkInterface.GetAllNetworkInterfaces()).
  • Serviço Dnscache / Servidor DNS (resolução reversa de IP para Hostname com timeout rápido de 180ms).
  • API Win32 NetFileEnum e NetFileClose (netapi32.dll sobre o serviço LanmanServer).
🎯 Onde Impacta no Servidor
  • Varredura de Rede: 100% passiva/leve sobre a tabela ARP e cache DNS do servidor — não dispara flood de pacotes na rede nem aciona alertas de IDS/Switches.
  • Ao clicar em "🔓 Destravar Arquivo": Fecha forçadamente o handle de rede SMB (NetFileClose) daquele arquivo específico. O usuário que estava segurando o arquivo aberto perde o bloqueio de escrita na hora, liberando o arquivo para os demais colegas.
✅ Como Usar no Dia a Dia
  • Clique em "🔄 Atualizar Varredura de Rede Agora" para descobrir todas as máquinas online na sub-rede, identificando inclusive máquinas desconhecidas pelo endereço MAC e fabricante (Dell, HP, Lenovo, Hyper-V, etc.).
  • Quando alguém reclamar que "A planilha X diz que está bloqueada para edição por outro usuário", olhe a tabela inferior, veja qual máquina está segurando o arquivo e clique em "🔓 Destravar Arquivo".
Capítulo 05 · Aba 3

Central de Serviços Inteligente & Watchdog de Auto-Recuperação

O console services.msc do Windows Server lista mais de 250 serviços técnicos sem explicar o que é vital para a empresa e sem mostrar quanta memória RAM cada serviço está consumindo. A Central de Serviços do TuringServer faz uma curadoria inteligente dos serviços críticos de infraestrutura, traduz o papel de cada um para português claro e informa o impacto real caso o serviço pare.

Aba 3 - Central de Serviços e Watchdog do TuringServer
Figura 3: Aba "Central de Serviços & Watchdog" mostrando papel explicativo em português, impacto de parada, portas associadas, PID real, consumo de RAM em MB e histórico de auditoria (Event IDs 7036/7040/7045). Aba 3 do Painel
⚙️ Serviços e APIs do Windows Usados
  • SCM (Service Control Manager) via advapi32.dll: chamadas nativas OpenSCManager(SC_MANAGER_CONNECT) + OpenService(SERVICE_QUERY_STATUS = 0x0004) + QueryServiceStatusEx para extrair o dwProcessId (PID) real de cada serviço.
  • Process.GetProcessById(pid).WorkingSet64 para medir a memória RAM física de cada serviço.
  • Canal de Log System (Event IDs 7036, 7040, 7045).
🎯 Onde Impacta no Servidor
  • Botão "🛡️ Watchdog ON/OFF": Marca ou desmarca o serviço na lista de vigilância contínua em dados\config.json.
  • Botão "🔄 Reiniciar": Envia comando real de parada e partida (Stop → Start) ao SCM do Windows Server e grava na tabela de auditoria inferior quem reiniciou o serviço e em qual horário.
✅ Cuidados Operacionais ao Reiniciar
  • Seguro reiniciar a qualquer momento: Spooler (destrava impressoras da rede), W32Time (ressincroniza relógio NTP).
  • Atenção em horário de expediente: Reiniciar LanmanServer desconecta brevemente pastas compartilhadas; reiniciar TermService derruba sessões RDP ativas.
Capítulo 06 · Aba 4

Mapa de Portas TCP/UDP & Segurança (Caçador de Conta Bloqueada AD)

A quarta aba reúne três ferramentas avançadas de segurança e diagnóstico de rede do Windows Server em uma única tela:

  1. Caçador de Conta Bloqueada no Domínio/Servidor (Correlação Event 4740 + 4625): Quando um funcionário troca de senha e a conta dele passa a bloquear sozinha a cada 10 ou 15 minutos, descobrir qual computador da rede está causando o bloqueio no Event Viewer comum é penoso. O TuringServer cruza automaticamente os eventos 4740 e 4625 e aponta na tabela: Conta Bloqueada, Quantidade de Bloqueios, Nome da Máquina Causadora e Endereço IP de Origem.
  2. Mapa de Portas Abertas e Conexões (GetExtendedTcpTable): Consulta diretamente a tabela de listeners do kernel tcpip.sys (TCP_TABLE_OWNER_PID_LISTENER = 3 e TCP_TABLE_OWNER_PID_CONNECTIONS = 4), mostrando todas as portas abertas no servidor, qual executável (PID) está escutando na porta e a qual Serviço do Windows ela pertence.
  3. Linha do Tempo de Segurança e Eventos de Energia/Sistema: Traduz logons de Console (Tipo 2), Rede SMB (Tipo 3), Área de Trabalho Remota RDP (Tipo 10), reinicializações (1074/6005/6006), desligamentos inesperados por queda de energia (6008), ataques de exclusão em massa (Freio Anti-Ransomware Burst Guard) e tentativas de limpeza de log (Event 1102).
Aba 4 - Portas de Rede e Auditoria de Segurança do TuringServer
Figura 4: Aba "Portas de Rede & Segurança (AD)" com o Caçador de Conta Bloqueada (Event 4740+4625), o Mapa de Portas TCP LISTEN do Kernel e a Linha do Tempo de Segurança traduzida. Aba 4 do Painel
Capítulo 07 · Aba 5

Configuração de Porta Web (Port Probe) & Pastas Vigiadas (Auto-SACL)

A quinta aba permite administrar as configurações estruturais do próprio TuringServer sem precisar editar arquivos de texto ou abrir telas complexas do Windows Server:

Aba 5 - Configurar Porta Web e Pastas Vigiadas do TuringServer
Figura 5: Aba "Configurar Porta Web & Pastas Vigiadas" com o Validador de Porta TCP (Port Probe), detecção automática dos discos reais do servidor e gerenciamento de pastas SACL + VSS em 1 clique. Aba 5 do Painel

1. Como usar o Configurador de Porta Web com Port Probe

  • Digite qualquer porta TCP entre 1024 e 65535 (ex.: 8485 ou 9090) e clique em "🔍 Testar Disponibilidade".
  • O sistema consulta a tabela do kernel do Windows (GetExtendedTcpTable) e tenta abrir um socket de teste:
    • Se a porta já estiver em uso por outro sistema do servidor (por exemplo, se você digitar 135, 445 ou 3389), o painel avisa imediatamente em vermelho qual serviço e qual processo (PID) é dono daquela porta.
    • Se estiver livre, exibe confirmação em verde. Ao clicar em "💾 Salvar e Aplicar Porta", o sistema grava atomicamente em dados\config.json, atualiza a regra do Windows Firewall para a sub-rede local e mantém a porta anterior como fallback Anti-Lockout.

2. Como incluir, testar e remover Pastas Vigiadas (Auto-SACL NTFS)

Existem três caminhos para informar qual pasta o servidor deve auditar. Os três terminam no mesmo campo Caminho completo no servidor e no mesmo botão + Vigiar Pasta — a diferença é quanto de trabalho o painel faz por você.

Forma de escolherO que acontece ao clicarQuando usar
📂 Navegar…
recomendado
Abre o seletor de pastas do servidor na pasta do caminho atual. Você percorre a árvore real do disco e confirma com Usar esta pasta. Sempre que quiser ver o que existe antes de vigiar. É o único caminho que mostra a realidade do servidor.
💽 C:\ · 957 GB livres Abre o mesmo seletor, já posicionado na raiz daquela unidade. Não preenche caminho nenhum sozinho. Quando você sabe em qual disco está o compartilhamento e quer navegar a partir dele.
📁 C:\Compartilhamentos
atalho real
Preenche o campo com essa pasta e escreve no rodapé do formulário: “Pasta escolhida: … Clique em + Vigiar Pasta”. Um clique a menos. Atalhos verdes só aparecem para pastas que existem de fato no servidor (o backend testa Directory.Exists antes de renderizar).
Digitar / colar Aceita caminho com ou sem aspas e com barra final. O sistema normaliza antes de validar. Colagem vinda do Explorer (“Copiar como caminho”) ou caminho UNC de rede.
Correção importante da v1.2.0: até a versão anterior, os botões de unidade injetavam um caminho fixo inventado (C:\Compartilhamentos\Financeiro_Sindicato) que simplesmente não existia na maioria dos servidores — e o painel ainda criava essa pasta em silêncio. Isso foi eliminado: unidade agora navega, e atalho só aponta para pasta existente.
Seletor de pastas do servidor com breadcrumb, listagem real e botão Usar esta pasta
Figura 6: Seletor de pastas do servidor: breadcrumb clicável, listagem real da unidade, rodapé com a pasta selecionada e confirmação explícita. Novo na v1.2.0

2.1. Como o seletor de pastas se comporta

  • Breadcrumb por nível. Cada segmento do caminho (C:\ › Compartilhamentos › Financeiro) é clicável e leva direto àquele nível.
  • Clique na pasta = entrar nela. Diferente do diálogo do Windows, um clique simples já abre a pasta; a seta › à direita só reforça que ela é navegável.
  • ↑ Subir volta um nível. Fica desabilitado quando você já está na raiz da unidade.
  • Usar esta pasta copia o caminho exibido no rodapé para o campo de texto. Cancelar ou Esc fecha sem alterar nada.
  • Caminho digitado que não existe. Se você chamar o seletor com um caminho inválido, ele não dá erro: sobe até a pasta existente mais próxima, mostra a listagem dela e exibe um aviso âmbar com o caminho que você digitou. Nunca há beco sem saída.
  • Sem permissão de leitura em alguma subpasta: a listagem mostra o que o processo consegue ler. Se o serviço roda como LocalSystem, isso raramente acontece.

2.2. O que o botão “+ Vigiar Pasta” faz — passo a passo

  1. Feedback imediato. O botão vira “Aplicando auditoria…” com indicador giratório e fica desabilitado. Isso evita duplo clique e elimina a impressão de botão travado.
  2. Validação do caminho. Normaliza aspas, barras e espaços. Se a unidade não existir (Z:\), responde em vermelho listando as unidades realmente disponíveis.
  3. Criação com aviso. Se a pasta não existir, ela é criada — mas a resposta vem em âmbar: “⚠ A pasta … NÃO existia e foi criada agora — ✓ incluída e monitorada. Confirme se é este o caminho desejado.” Pasta que já existia recebe a confirmação verde normal.
  4. Aplicação da auditoria. Regra SACL via DirectoryInfo.SetAccessControl (herdada por arquivos e subpastas), habilitação dos GUIDs auditpol de sistema de arquivos e compartilhamento, e início do FileSystemWatcher para captura em tempo real.
  5. Cópia de sombra inicial em segundo plano. O servidor começa a copiar os arquivos existentes para o cofre dados\vss_vault, mas isso roda fora da requisição — a tela responde na hora.
  6. Limite de tempo. Se o servidor não responder em 90 segundos (pasta de rede inacessível, por exemplo), o painel aborta e explica o motivo, em vez de ficar parado.
Por que a cópia de sombra saiu da requisição: ela percorria a árvore inteira e copiava até 250 arquivos de 15 MB. Em medição real, isso chegava a ~60 segundos com a tela parada — era a causa direta do sintoma “o botão Vigiar não funciona”. Hoje a resposta é imediata e o snapshot continua em background.

2.3. Limites do cofre de cópias (para não esperar o que ele não faz)

  • Arquivos acima de 15 MB não são copiados para o cofre rápido. Ainda aparecem na auditoria (quem apagou, de qual máquina), mas a restauração 1-Click depende de snapshot nativo do Windows Volume Shadow Copy.
  • O snapshot inicial é limitado e best-effort: até 250 arquivos novos, no máximo 5.000 verificados, profundidade 6, sem seguir atalhos/junctions. Bibliotecas gigantes não são espelhadas.
  • Não recopia o que já está no cofre — incluir a mesma pasta duas vezes não duplica armazenamento.
  • Pasta sem permissão não interrompe o processo: o snapshot registra as que conseguiu e segue.

2.4. Testar, remover e conferir

  • ⚡ Testar (em cada pasta da lista): o servidor cria, renomeia e apaga um arquivo de verificação dentro da pasta escolhida e reporta o nome do arquivo. É a prova de que a captura ponta a ponta está funcionando naquela pasta — não é simulação.
  • Remover: tira a pasta do monitoramento. Não apaga nada do disco nem desfaz o SACL já aplicado.
  • Eventos de Arquivo (sub-aba ao lado): onde as exclusões, renomeações e alterações capturadas aparecem para investigação.
Capítulo 08 · Referência de Engenharia

Matriz Consolidada: Onde Cada Funcionalidade Impacta e Quais Serviços Usa

Funcionalidade no Painel Serviços / Subsistemas Windows Usados APIs / Comandos Acionados Impacto Real no Windows Server
Vigiar Nova Pasta (1-Click SACL) NTFS.sys, EventLog, VSS DirectoryInfo.SetAccessControl(Audit) + auditpol /set /subcategory:{GUID} + FileSystemWatcher SEGURO Adiciona regra de auditoria (SACL) na pasta e ativa geração de eventos 4663/4660. Não altera permissões de acesso (DACL).
Restaurar Arquivo Apagado (VSS) VSS (Volume Shadow Copy) + Sistema de Arquivos NTFS Cópia a partir de dados\vss_vault\ ou \\?\GLOBALROOT\Device\HarddiskVolumeShadowCopyN SEGURO Recria o arquivo excluído em seu caminho original com o conteúdo íntegro anterior à exclusão.
Radar de Máquinas na Rede Pilha TCP/IP, Tabela ARP, Dnscache NetworkInterface, arp -a, Dns.GetHostEntryAsync SOMENTE LEITURA Consulta o cache ARP e DNS já presentes no servidor. Zero impacto de tráfego na rede.
Destravar Arquivo Preso (SMB Unlocker) LanmanServer (Servidor SMB) netapi32.dll → NetFileEnum / NetFileClose AÇÃO ATIVA Fecha o handle aberto pela estação remota. O computador que segurava o arquivo perde o lock de escrita imediatamente.
Central de Serviços (Inspeção PID/RAM) SCM (Service Control Manager) advapi32.dll → OpenSCManager(0x0001) + OpenService(0x0004) + QueryServiceStatusEx SOMENTE LEITURA Consulta apenas o status e o PID com privilégio mínimo de leitura (0x0004).
Reiniciar Serviço do Windows SCM + Serviço Alvo ServiceController.Stop() → ServiceController.Start() IMPACTO NO SERVIÇO Reinicia o serviço selecionado. Use com cautela em serviços de rede (LanmanServer, DNS, TermService) durante o expediente.
Mapa de Portas TCP/UDP Driver tcpip.sys iphlpapi.dll → GetExtendedTcpTable (Classes 3 = LISTENER e 4 = CONNECTIONS) SOMENTE LEITURA Lê a tabela de sockets do kernel em memória em menos de 10 ms.
Trocar Porta do Painel Web MpsSvc (Windows Firewall) + Kestrel TcpListener Probe + netsh advfirewall firewall add rule + dados\config.json CONFIGURAÇÃO Atualiza a porta do painel e adiciona regra de entrada no Firewall restrita à sub-rede local (localsubnet).
Capítulo 09 · Guia Prático de Gestão

Playbooks: Como Gerenciar um Windows Server de Forma Eficiente com o TuringServer

🕵️ Playbook 1: "Um arquivo importante sumiu da pasta compartilhada da rede!"

  1. Abra o TuringServer na Aba 1 (Detetive de Arquivos).
  2. No seletor de filtro ao lado da busca, escolha "Apenas Arquivos APAGADOS (DELETE)" e digite parte do nome do arquivo (ou da pasta) na caixa de busca.
  3. Em menos de 1 segundo você verá a linha vermelha APAGADO informando: o horário exato, qual conta do Windows apagou, o nome do computador (Hostname) e o endereço IP da máquina.
  4. Clique em "⏪ Restaurar (VSS)" para devolver o arquivo imediatamente ao lugar original, e clique em "🔍 Evidência" (ou exporte o CSV assinado com SHA-256) caso precise documentar o incidente para a diretoria.

🔓 Playbook 2: "Um setor inteiro não consegue salvar uma planilha porque ela está presa por outro usuário"

  1. Vá até a Aba 2 (Máquinas na Rede & Arquivos Presos) e role até a seção "Destravador de Arquivos Abertos / Presos na Rede (SMB File Unlocker)".
  2. Localize o nome do arquivo na tabela: o sistema mostrará qual usuário e qual computador estão segurando o bloqueio de escrita.
  3. Avise o usuário (se estiver presente) ou clique diretamente em "🔓 Destravar Arquivo" para liberar o handle SMB no servidor sem precisar reiniciar nada.

🔑 Playbook 3: "A conta de um colaborador no Active Directory bloqueia sozinha a cada 15 minutos"

  1. Abra a Aba 4 (Portas de Rede & Segurança AD) e olhe a primeira tabela: "Caçador de Conta Bloqueada no Domínio/Servidor (Correlação Event 4740 + 4625)".
  2. Veja a coluna "Máquina Causadora do Bloqueio" e "IP de Origem".
  3. Vá até aquela estação específica, abra o Gerenciador de Credenciais do Windows (ou desconecte uma sessão RDP esquecida aberta naquela máquina) e atualize a senha salva. Problema resolvido na raiz.

🛡️ Playbook 4: Rotina Preventiva Diária (Leva 60 segundos)

  1. Olhe os 5 Cards de KPIs no topo do painel logo ao abrir:
    • Arquivos Apagados (Hoje): Verifique se houve algum pico anormal de exclusões nas pastas compartilhadas.
    • Serviços Críticos do Servidor: Confirme que todos os serviços vitais estão ativos (ex.: 12 / 12) e com o Watchdog ON.
    • Portas TCP em Escuta: Na Aba 4, verifique se todas as portas abertas pertencem a serviços conhecidos do servidor.
Capítulo 10 · Dicionário Técnico

Tabela de Referência dos Event IDs Nativos do Windows Server

Event ID Canal do Windows Significado Técnico Nativo Como o TuringServer Utiliza e Traduz
4624 Security Logon de conta realizado com sucesso Extrai TargetLogonId, IpAddress, WorkstationName e LogonType (2=Console, 3=Rede SMB, 10=RDP) para alimentar o motor de correlação em memória.
4625 Security Falha de logon (senha incorreta / usuário inválido) Registra alerta de tentativa de acesso indevido e alimenta o Caçador de Conta Bloqueada com o IP e nome da máquina de origem.
4656 / 4663 / 4660 Security Acesso e exclusão de objeto em sistema de arquivos NTFS Identifica a máscara de acesso (0x10000 = DELETE, 0x2 = WRITE, 0x40000 = Permissão), cruza o SubjectLogonId com a sessão ativa e revela quem apagou ou modificou o arquivo e de qual IP/máquina.
5140 / 5145 Security Acesso a objeto de compartilhamento de rede (SMB Share) Associa o caminho da pasta compartilhada (\\SERVIDOR\Pasta) e o endereço IP da estação cliente ao SubjectLogonId.
4740 Security Uma conta de usuário foi bloqueada automaticamente Identifica TargetUserName e CallerComputerName para apontar exatamente qual computador causou o bloqueio da conta no domínio.
1102 Security O log de auditoria de segurança foi limpo Gera alerta vermelho de severidade CRITICAL. Todo o histórico anterior permanece intacto no banco SQLite próprio do TuringServer.
7036 / 7040 / 7045 System Serviço mudou de estado, mudou tipo de partida ou novo serviço foi instalado Alimenta o histórico da Central de Serviços e alerta imediatamente caso um serviço novo seja instalado no servidor (7045).
1074 / 6005 / 6006 / 6008 System Eventos de reinicialização, boot e desligamento inesperado Mostra quem solicitou o reboot do servidor (1074) ou alerta se o servidor sofreu queda brusca de energia/tela azul (6008).
Capítulo 11 · Evolução v1.1

Políticas de Domínio & Estações (GPO), Telemetria CPU/RAM/Rede, Controle de Portas e Segurança VPN/RustDesk

A versão v1.1 do TuringServer expande o painel com 6 novos recursos corporativos de alto impacto para administração centralizada do Windows Server e das estações do domínio:

Aba Políticas de Domínio e Estações (GPO) do TuringServer v1.1
Figura 7: Nova Aba "Políticas de Domínio & Estações (GPO)" com comandos de frota (Windows Update / GPUpdate), 8 políticas principais em destaque e catálogo avançado. Captura Real v1.1

11.1. Nova Aba: Políticas de Domínio & Estações (GPO Active Directory)

  • Comandos Rápidos em Frota (Todas as Máquinas do Domínio): Com 1 clique o administrador pode:
    1. 🔄 Rodar Windows Update nas Máquinas: Dispara remotamente UsoClient.exe StartInteractiveScan / StartDownload / StartInstall nas estações do domínio para baixar e instalar atualizações críticas imediatamente.
    2. ⚡ Forçar GPUpdate no Domínio: Executa gpupdate /force para aplicar imediatamente as políticas recém-configuradas sem aguardar o ciclo padrão de 90 minutos do Active Directory.
    3. 🕒 Sincronizar Horário (NTP / w32tm): Alinha o relógio das estações com o servidor (essencial para evitar falhas de login Kerberos).
    4. 🧹 Limpar Cache DNS: Executa ipconfig /flushdns e /registerdns na frota.
  • 8 Políticas Principais em Destaque (Didáticas e 1-Click): Cartões altamente explicativos com botão "🛡️ Proibir / Ativar Política" e "🔓 Liberar Recurso" para:
    • 🔌 Bloquear Pen Drives e HDs Externos USB (proteção contra vazamento de dados / LGPD);
    • 🔄 Forçar Windows Update Automático em todas as máquinas;
    • ⚙️ Proibir Acesso ao Painel de Controle e Configurações do Windows para usuários comuns;
    • 💻 Bloquear Prompt de Comando (CMD) e Scripts Não Assinados;
    • 🚫 Impedir Instalação de Programas por Usuários Comuns (Windows Installer / MSI);
    • 🔒 Bloquear Tela Automaticamente Após 10 Minutos de Inatividade;
    • 🛡️ Impedir Desativação do Windows Defender e Firewall nas estações;
    • 🔑 Exigir Senhas Fortes e Bloqueio contra Força Bruta.
  • Mais 10 Políticas Avançadas de Segurança e Rede + Exportação de Script GPO (.ps1): Inclui desativação de SMBv1 (WannaCry), proteção LSA contra Mimikatz, bloqueio de Registro (regedit), bloqueio de Gerenciador de Tarefas, desativação de AutoRun, NLA obrigatório no RDP e auditoria de processos (Event 4688). O botão "📜 Exportar Script PowerShell GPO Completo (.ps1)" gera o script pronto com todos os Set-GPRegistryValue para importação em qualquer Controlador de Domínio.

11.2. Barra de Telemetria em Tempo Real (CPU, RAM, Rede, Discos, Uptime e Top 5 Processos)

No topo de todas as abas, o painel exibe medidores atualizados automaticamente a cada 4 segundos usando APIs nativas do Windows (GetSystemTimes, GlobalMemoryStatusEx, IPGlobalProperties e DriveInfo):

  • Uso de CPU (%): Medido diretamente nos contadores do kernel do Windows Server.
  • Memória RAM Física: Exibe percentual usado, GB ocupados, GB totais e GB livres em tempo real.
  • Tráfego de Rede (LAN): Mostra a taxa instantânea de Download (↓ KB/s) e Upload (↑ KB/s) e o volume acumulado transferido na placa de rede ativa.
  • Saúde dos Discos e Modal Top 5 Processos: Clicando em "🔥 Top Processos & Discos" no cabeçalho, o administrador vê os 5 processos que mais consomem memória RAM no servidor naquele instante e a saúde detalhada de cada disco.

11.3. Dossiê de Evidência Amigável + Relatório Formatado (HTML/PDF) + Filtros Precisos

  • Dossiê de Evidência em 2 Camadas: Ao clicar em "🔍 Dossiê / Evidência" no Detetive de Arquivos, o sistema abre por padrão a Visão Explicativa (Fácil Leitura) com cartões claros (Quem fez, De qual máquina/IP, Qual arquivo, Qual horário e a cadeia de eventos traduzida). Caso o perito deseje ver o registro técnico original, basta clicar na aba "💻 Dados Brutos Técnicos (JSON)".
  • Relatório Formatado para Impressão / PDF: O botão "📊 Abrir Relatório Formatado (Imprimir / PDF)" gera um documento executivo estilizado com resumo gerencial, tabela auditável e selo de integridade SHA-256, enquanto o botão "📄 Dados Brutos (CSV)" permanece ao lado para exportação em planilhas.
  • Filtros Combinados nas Abas 1, 3 e 4: Pesquisa por Conta/Login do Windows, Máquina/IP, Ação e Dia/Período (Hoje, Ontem, Últimos 7/30 dias ou data específica no calendário) no Detetive de Arquivos, no Histórico de Serviços e na Linha do Tempo de Segurança.

11.4. Controle Ativo de Portas no Windows Firewall e Segurança VPN / Túnel RustDesk / AnyDesk

  • Abrir, Fechar e Reverter Portas pelo Aplicativo: Na Aba 4, o administrador pode fechar/bloquear qualquer porta suspeita com 1 clique (🛑 Fechar Porta), abrir portas para sistemas específicos (restritas à LAN ou Geral) e reverter regras a qualquer momento. O sistema possui Trava Anti-Lockout que impede fechar acidentalmente a própria porta Web do TuringServer ou portas vitais do Windows Server (445 SMB, 3389 RDP, 53 DNS, 88 Kerberos, 135 RPC, 389/636 LDAP).
  • Acesso Remoto Garantido via VPN e Túneis (RustDesk / AnyDesk): O escudo LAN + VPN + Tunnel Guard bloqueia acessos vindos diretamente da Internet pública, mas permite automaticamente conexões de Rede Local (192.168.x.x, 10.x.x.x, 172.16-31.x.x), VPNs Corporativas e Mesh (OpenVPN, WireGuard, Tailscale/ZeroTier 100.64.0.0/10) e Túneis TCP do RustDesk / AnyDesk / SSH (que chegam ao servidor via loopback local 127.0.0.1 / ::1).
Capítulo 12 · Interface v1.2

Arquitetura Visual do Console, Hierarquia de Painéis e Desligamento Seguro

A versão 1.2 reorganiza toda a interface do TuringServer sem remover nenhuma funcionalidade. O objetivo foi eliminar a mistura de componentes: métricas, tabelas, formulários e ações deixaram de dividir o mesmo espaço e passaram a viver em camadas explícitas.

Nova Visão Geral do TuringServer v1.2 com sidebar e painéis
Figura 8: Novo shell com sidebar agrupada, topbar enxuta e Visão Geral como página inicial do console. Captura Real v1.2

12.1. O que mudou na arquitetura visual

  • Navegação lateral agrupada (modelo Windows Admin Center). As abas horizontais deram lugar a uma sidebar fixa de 238 px, organizada em Monitoramento, Administração e Sistema, com contadores contextuais em cada item.
  • Topbar enxuta. A barra superior agora carrega apenas título, subtítulo, identificação do sistema operacional e a ação de atualizar. A CPU, a RAM, a rede e os discos saíram dali.
  • Telemetria concentrada na Visão Geral. Os medidores de recursos, o uptime, os volumes e a postura de segurança passaram a viver em uma página própria — a porta de entrada do console.
  • Sub-abas por módulo. Módulos que antes empilhavam tabelas diferentes na mesma rolagem agora dividem o conteúdo em sub-áreas explícitas: Eventos de Arquivo | Pastas Vigiadas; Serviços & Watchdog | Histórico; Portas & Firewall | Linha do Tempo | Contas Bloqueadas; Comandos de Frota | Principais Políticas | Avançadas | Histórico.
  • Split-panel para separar leitura de escrita. Onde o painel altera o sistema (controle de portas, pastas vigiadas, configurações), o formulário ocupa um painel próprio à esquerda e a tabela de dados fica à direita, com rolagem independente.
  • Surface Panels e tabelas com cabeçalho fixo. Cada tabela vive dentro de um card com título, contador, barra de filtros acoplada e rodapé informativo. O cabeçalho das colunas permanece visível durante a rolagem.
  • Chips de filtro ativo. Ao aplicar filtros, o painel mostra exatamente quais restrições estão em vigor e permite removê-las em um clique.
  • Semáforos honestos. O indicador de serviços críticos muda de verde para âmbar ou vermelho quando existem serviços parados — o painel nunca exibe saúde falsa.

12.2. Como desligar o TuringServer com segurança

O botão ⏻ Desligar está no rodapé da sidebar. O encerramento não é um simples kill: ele executa uma sequência controlada e auditável.

Modal de confirmação de desligamento do TuringServer
Figura 9: O modal descreve os quatro passos do encerramento e alerta que exclusões deixam de ser registradas enquanto o painel estiver desligado. Captura Real v1.2
  1. Script de encerramento (opcional). Se existir scripts\encerrar-turingserver.bat, .cmd ou .ps1 na pasta do aplicativo — ou um caminho definido em ShutdownScriptPath no config.json — ele é executado com limite de tempo (ShutdownScriptTimeoutSeconds, padrão 10 s).
  2. Consolidação do banco. O comando PRAGMA wal_checkpoint(TRUNCATE) grava o WAL no arquivo principal do SQLite. Nenhum evento de auditoria permanece apenas no arquivo temporário.
  3. Liberação dos monitores. Os FileSystemWatcher, as assinaturas de EventLogWatcher e o watchdog de serviços são fechados. O Kestrel para de aceitar conexões.
  4. Registro na auditoria. O desligamento entra na Linha do Tempo com categoria SYSTEM_SHUTDOWN (evento 8002), contendo a conta responsável, o IP de origem, o script executado e o resultado do checkpoint.

Após o encerramento, o navegador exibe uma tela de confirmação com o resumo completo da operação. Para religar, basta executar 1-Iniciar-Painel-Modo-Console.bat ou iniciar novamente o serviço do Windows.

12.3. Evidências de homologação da v1.2

  • Build: dotnet build -c Release -warnaserror → 0 avisos, 0 erros.
  • Testes unitários: 20/20 aprovados (xUnit).
  • Bateria de navegador real (layout): 33/33 verificações aprovadas, incluindo o encerramento destrutivo executado por último.
  • Bateria de navegador real (Detetive de Arquivos): 23/23 verificações aprovadas, 0 erros de JavaScript — cobre presets, seletor de pastas, inclusão por digitação, pasta criada, unidade inexistente, clique duplo e botão Testar.
  • Prova do gancho de encerramento: no pacote publicado, o script foi localizado, executado com código de saída 0 e registrou o desligamento em dados\encerramentos.log.

12.4. Rodapé institucional

Toda tela do console carrega um rodapé fixo de 34 px, sempre visível, independente da aba aberta:

Rodapé institucional do TuringServer com versão, copyright, CNPJ e link para a TuringTec
Figura 10: Rodapé institucional: produto e versão à esquerda; copyright, crédito da desenvolvedora com link para o site e CNPJ à direita. Novo na v1.2.0
  • Versão lida em tempo de execução. O selo v1.2.0 vem do endpoint /api/health, não é texto fixo no HTML. Se o binário e a página divergirem, o rodapé mostra sempre a versão do processo que está servindo a tela.
  • Crédito com link. Desenvolvido por TuringTec LTDA abre https://turingtec.com.br em nova aba, com rel="noopener noreferrer" — a página do painel não recebe referência de volta e não ganha acesso ao window aberto.
  • Identidade legal. Copyright do ano corrente e CNPJ 21.991.747/0001-29 acompanham o rodapé, como em aplicações corporativas licenciadas.
  • Contraste acessível. Todos os textos do rodapé foram medidos contra o fundo #040B18: o pior caso é 6,45:1, acima do mínimo WCAG AA de 4,5:1.
  • Responsivo. Abaixo de 1180 px a descrição do produto é ocultada; abaixo de 900 px saem copyright e CNPJ; abaixo de 640 px fica apenas o crédito com link. Não há rolagem horizontal em nenhuma largura entre 390 px e 1600 px.
Capítulo 13 · Referência de Comportamento

Detetive de Arquivos: o que cada controle faz — e o que ele não faz

Este capítulo existe para eliminar dúvida de expectativa. Cada linha descreve o comportamento verificado em navegador real contra o pacote publicado. Se uma funcionalidade já está descrita aqui como correta, alterá-la é decisão de produto — não correção de defeito.

13.1. Inventário de controles da sub-aba Pastas Vigiadas

Controle O que faz exatamente O que não faz
📂 Navegar… Abre o seletor na pasta do caminho atual (ou na primeira unidade pronta, se o campo estiver vazio). Não altera o campo até você confirmar. Não cria pasta, não tem busca e não preenche nada sozinho.
💽 C:\ · 957 GB livres Abre o seletor na raiz daquela unidade. Não injeta caminho fictício — comportamento corrigido na v1.2.0.
📁 C:\Compartilhamentos Atalho verde: preenche o campo com uma pasta que existe. O backend só renderiza os atalhos cujo Directory.Exists retorna verdadeiro. Não vigia no clique — apenas preenche.
Campo Caminho completo Aceita digitação e colagem, com ou sem aspas, com ou sem barra final. Enter dispara o mesmo efeito do botão Vigiar. Não valida enquanto você digita — a validação acontece ao enviar.
+ Vigiar Pasta Desabilita-se, mostra “Aplicando auditoria…”, aplica SACL + auditpol + watcher, agenda o snapshot e recarrega a lista. Aborta em 90 s com mensagem explicativa. Não permite duplo envio com clique duplo, e não bloqueia a tela enquanto copia arquivos.
⚡ Testar Cria, renomeia e apaga um arquivo real na pasta e informa o nome usado — prova ponta a ponta da captura. Não simula evento nem escreve no banco manualmente.
Remover Desliga e descarta o FileSystemWatcher e apaga o registro da pasta na base. Não apaga arquivos do disco, não reverte a SACL aplicada e não apaga as cópias já guardadas no cofre.
↑ Subir (seletor) Sobe um nível; desabilitado na raiz da unidade. —
Usar esta pasta (seletor) Copia o caminho do rodapé para o campo e fecha o modal. Não vigia automaticamente — você ainda confirma no Vigiar.
Cancelar / Esc / clique fora Fecha o seletor sem tocar no campo. —

13.2. O que acontece no servidor quando você vigia uma pasta

  1. Normalização do caminho (SanitizeFolderPath + Path.GetFullPath): remove aspas, barras duplicadas e barra final.
  2. Validação da unidade via DriveInfo.GetDrives(). Caminho UNC (\\servidor\share) pula essa checagem.
  3. Criação condicional da pasta, com o resultado registrado na resposta (created: true/false) para o painel avisar em âmbar.
  4. SACL NTFS — regra de auditoria para Everyone cobrindo Delete, DeleteSubdirectoriesAndFiles, Write, CreateFiles, ChangePermissions e TakeOwnership, com herança para contêineres e objetos, em sucesso e falha.
  5. auditpol — habilita as subcategorias de File System e File Share pelos GUIDs {0CCE921D…} e {0CCE9224…}.
  6. FileSystemWatcher com IncludeSubdirectories para captura imediata, independente do canal de eventos.
  7. Snapshot em background para o cofre dados\vss_vault, com os limites descritos em 2.3.
  8. Persistência do registro da pasta (caminho, share sugerido, estado da SACL, limiar e janela do Burst Guard, data e conta responsável).
Se a SACL falhar, o monitoramento não morre. Sem elevação suficiente para SeSecurityPrivilege, o sistema registra o aviso, mantém o FileSystemWatcher e o cofre ativos e informa isso na mensagem de sucesso — a captura em tempo real continua, mas o evento nativo 4663 do Windows não é gerado.

13.3. Catálogo de mensagens e o que cada uma significa

MensagemSignificado e ação esperada
✓ Pasta '…' incluída e monitorada com sucesso! Caminho válido e já existente. Nada a fazer.
⚠ A pasta '…' NÃO existia e foi criada agora — ✓ incluída… Houve criação. Confira o caminho: provavelmente erro de digitação. Se estiver errado, remova a pasta do monitoramento e apague a pasta criada.
✗ A unidade 'Z:\' não existe neste servidor (NOME). Unidades disponíveis: C:\, D:\ A letra não existe para a conta que roda o serviço. Em servidor com unidade mapeada, lembre-se: LocalSystem não enxerga mapeamentos do usuário interativo — use o caminho UNC.
✗ Não foi possível acessar ou criar a pasta '…': Access to the path … is denied Permissão insuficiente. O serviço precisa rodar com conta que tenha acesso à pasta (ou como Administrador/LocalSystem).
✗ O servidor demorou mais de 90 segundos para responder… O painel abortou a espera. Normalmente pasta de rede indisponível ou host SMB fora do ar. A pasta não foi incluída.
✗ Informe o caminho completo da pasta no servidor. Campo vazio ou só com espaços.
⚠ A pasta digitada '…' não existe. Exibindo a pasta existente mais próxima. Aviso do seletor (não é erro). Ele subiu até o ancestral válido para você continuar navegando.
✓ Operações reais executadas no disco NTFS ('Arquivo.txt' criado, renomeado e apagado)… O botão Testar funcionou: o servidor escreveu e apagou de verdade naquela pasta.
✓ Pasta '…' removida do monitoramento. Watcher encerrado e registro apagado. SACL e cópias do cofre permanecem.

13.4. Decisões de projeto que parecem detalhe, mas são intencionais

  • Clique simples entra na pasta (em vez de selecionar e exigir duplo clique). O objetivo é percorrer rápido uma árvore de servidor de arquivos; a confirmação fica isolada no botão Usar esta pasta.
  • A pasta digitada nunca gera erro no seletor. Um caminho inválido apenas posiciona você no ancestral existente — evita o beco sem saída típico de diálogos que só dizem “caminho não encontrado”.
  • Pasta inexistente é criada, mas com aviso âmbar. A criação é necessária para compartilhamentos novos; o aviso impede que um erro de digitação passe silencioso.
  • O snapshot não segura a resposta HTTP. Preferimos responder rápido e copiar em background a dar a sensação de botão travado.
  • Remover não desfaz a SACL. Desfazer auditoria é uma operação de segurança com risco próprio; o painel não a executa por um clique em “Remover”.
  • Versão no rodapé vem da API. Evita o clássico “painel diz 1.1, binário é 1.2”.

13.5. Limites declarados do módulo

O que segue não existe hoje — e portanto é funcionalidade nova, não defeito:

  • Seletor não cria pasta (não há botão “Nova pasta”); para criar, digite o caminho e use Vigiar.
  • Seletor não tem campo de busca nem árvore lateral persistente: navegação é por nível.
  • Cofre rápido não guarda arquivos acima de 15 MB; nesses casos a restauração depende do Volume Shadow Copy do Windows.
  • Snapshot inicial não espelha bibliotecas inteiras (250 arquivos novos / 5.000 verificados / profundidade 6).
  • Não há agendamento de janela de vigia por pasta. As configurações por pasta hoje são: Freio Anti-Ransomware ativo, limiar de exclusões e janela de segundos.
  • Remover não apaga as cópias do cofre nem reverte a SACL.

13.6. Como você mesmo reproduz esta verificação

Com o painel no ar, a bateria completa roda em navegador visível e grava vídeo:

"C:/Users/thali/AppData/Local/hermes/cache/pwvenv/Scripts/python.exe" scripts/e2e-detetive-arquivos.py --url http://127.0.0.1:8480 --headed --slow 280 --video

São 23 verificações: presets sem caminho fictício, atalhos apontando para pastas existentes, abertura do seletor, navegação e retorno, breadcrumb, confirmação de pasta, queda no ancestral existente, estado de ocupado, inclusão por digitação, tempo de resposta, restauração do botão, aviso de pasta criada, unidade inexistente, clique duplo, botão Testar, as seis áreas do painel, abertura e cancelamento do modal Desligar, teste de porta e ausência de erros de JavaScript.