Dicas

Guarda de logs no provedor: Marco Civil, CGNAT e porta de origem

Cofre de arquivos com registros de conexão, relógio e servidor de logs em cinza e azul

A guarda de logs é a parte do provedor que ninguém olha até chegar o primeiro ofício. Aí descobrimos se o relógio estava certo, se o log do CGNAT tinha porta e em que fuso está o horário que o juiz mandou.

Este texto é técnico: o que as normas pedem, com artigo e link oficial, e como montar a guarda de logs na rede. Os exemplos usam Mikrotik, rsyslog no Debian e o schema do FreeRADIUS, com endereços de documentação.

Não é parecer jurídico. A interpretação para o seu caso (prazo, quem guarda, o que entregar, o que apagar) tem de ser confirmada com a assessoria jurídica do provedor. Normas mudam: confira a versão vigente no Planalto e na Anatel.

Resposta rápida: o que entra na guarda de logs

  1. Registro de conexão de cada assinante: início, fim, duração e o IP usado. Prazo de 1 ano, em sigilo (Lei 12.965/2014, art. 13; Anatel RGST, art. 120).
  2. Com CGNAT, a porta lógica de origem associada ao IP público. O Decreto 12.975/2026 incluiu isso no Decreto 8.771/2016 (art. 15-A), e o RGST da Anatel já define o registro com as portas quando o IP é compartilhado.
  3. Data e hora com fuso, de equipamentos sincronizados por NTP. Sem fuso, o registro não fecha com o horário do ofício.
  4. O provedor de conexão não guarda registro de acesso a aplicações (art. 14). Guarde o que identifica a conexão, não os sites que o cliente visitou.
  5. Entregue registros só com ordem judicial (art. 10, § 1º, e art. 13, § 5º). Dados cadastrais têm regra própria (art. 10, § 3º).

O que o Marco Civil chama de registro de conexão

A Lei 12.965/2014, o Marco Civil da Internet, define no art. 5º, inciso VI, o registro de conexão: o conjunto de informações sobre data e hora de início e término de uma conexão, a duração e o endereço IP usado pelo terminal. No PPPoE, é o que o accounting do RADIUS já grava.

O art. 13 diz que, na provisão de conexão, cabe ao administrador de sistema autônomo respectivo manter os registros de conexão, sob sigilo, em ambiente controlado e de segurança, pelo prazo de 1 ano. Os parágrafos completam a regra:

  • § 1º: a responsabilidade pela manutenção dos registros não pode ser transferida a terceiros.
  • § 2º a § 4º: autoridade policial ou administrativa ou o Ministério Público pode pedir, de forma cautelar, guarda por prazo maior. O pedido é sigiloso e perde a eficácia se o pedido judicial não for feito em 60 dias ou for negado.
  • § 5º: a entrega dos registros ao requerente depende de autorização judicial.

O texto fala em administrador de sistema autônomo (art. 5º, IV). Como isso se aplica a um provedor sem ASN próprio, que usa IP do upstream, é pergunta para o jurídico.

Conexão não é aplicação

O art. 14 proíbe o provedor de conexão de guardar os registros de acesso a aplicações, que o art. 5º, inciso VIII, define como data e hora de uso de uma aplicação a partir de um IP. Quem guarda esse tipo de registro, por 6 meses, é o provedor de aplicação (art. 15). Na guarda de logs do provedor de conexão, o log não deveria virar histórico de sites visitados.

Uma linha de NAT dinâmico costuma trazer o destino da conexão. Se manter esse campo é compatível com o art. 14 é discussão jurídica; a saída técnica mais simples é não precisar dele, com CGNAT determinístico.

Porta de origem: o que mudou no decreto e na Anatel

A lei fala em IP, mas o CGNAT faz o mesmo IP servir dezenas de clientes. Em 2025 e 2026 a porta de origem entrou no texto das normas, por dois caminhos.

O Decreto 12.975, de 20 de maio de 2026 incluiu o art. 15-A no Decreto 8.771/2016. Ele diz que o dever de guarda de registros de endereço IP, dos provedores de conexão e de aplicações, abrange a porta lógica de origem associada sempre que ela for necessária para a identificação inequívoca do terminal de origem ou do próximo enlace de rede. O § 1º diz que esse dever não depende de requisição prévia e recai sobre cada provedor. O decreto foi publicado no DOU de 21/05/2026 e entrou em vigor 60 dias depois da publicação.

O § 2º do art. 15-A manda que o fornecimento da porta siga os arts. 10 e 22 da lei, ou seja, também depende de ordem judicial.

Na Anatel, o Regulamento Geral dos Serviços de Telecomunicações (RGST), aprovado pela Resolução 777/2025, manda manter registros de conexão à internet por no mínimo 1 ano (art. 120, IV). O parágrafo único define o registro com início, fim, duração, IP e as portas lógicas usadas quando há compartilhamento de IP público. A resolução entrou em vigor 180 dias depois da publicação (DOU de 30/4/2025). Os dispositivos que tiveram a vigência adiada por acórdão são outros, mas confira a situação atual na página da Anatel.

NormaO que diz (resumo)Fonte
Lei 12.965/2014, art. 5º, VIDefine registro de conexão: início, fim, duração e IPplanalto.gov.br
Lei 12.965/2014, art. 13Provedor de conexão guarda por 1 ano, em sigilo e ambiente seguroplanalto.gov.br
Lei 12.965/2014, art. 14Provedor de conexão não guarda registro de acesso a aplicaçõesplanalto.gov.br
Decreto 8.771/2016, art. 13Padrões de segurança: acesso restrito, autenticação, inventário de acessos, inviolabilidade; reter o mínimoplanalto.gov.br
Decreto 8.771/2016, art. 15-AGuarda do IP abrange a porta lógica de origem quando necessária para identificar de forma inequívoca o terminal ou o próximo enlace (incluído pelo Decreto 12.975/2026)planalto.gov.br
Anatel, RGST (Res. 777/2025), art. 120, IVRegistros de conexão por no mínimo 1 ano, com as portas lógicas quando há IP público compartilhadoanatel.gov.br

Guarda de logs com CGNAT: IP, porta, data e fuso

Com CGNAT, o ofício traz IP público, porta e horário; o CGNAT diz qual IP 100.64 usava a porta; o RADIUS diz qual assinante estava com aquele 100.64. A tradução está em o que é CGNAT e como ele funciona.

Diagrama: cliente atrás do CGNAT, registro no RADIUS, tabela de portas e servidor de logs até o ofício
Três registros precisam fechar: IP público e porta, tabela do CGNAT e sessão PPPoE, no mesmo fuso.
CenárioO que guardarVolume
IP público fixo por clienteCadastro do IP e histórico de trocaBaixa
PPPoE com IP público dinâmicoAccounting do RADIUS (usuário, IP, início, fim)Baixa
CGNAT determinísticoAccounting do RADIUS + versão datada da tabela de portasBaixa
CGNAT dinâmico ou por blocos (BPA)Accounting + log de cada sessão ou de cada bloco alocadoAlta (volume grande)
IPv6 com prefixo delegadoUsuário, prefixo delegado, início e fimBaixa

O CGNAT determinístico é o que deixa a guarda de logs mais leve: cada IP 100.64 tem sempre o mesmo IP público e a mesma faixa de portas, calculados por fórmula. Em vez de milhões de linhas por dia, você guarda a tabela com a data em que entrou em produção. O passo a passo está em CGNAT no Mikrotik com netmap determinístico.

No IPv6 a porta deixa de importar, porque cada cliente tem o próprio prefixo, mas o prefixo delegado precisa estar registrado com usuário e horário (IPv6 no PPPoE com prefixo delegado). Dual stack são duas trilhas na guarda de logs.

Relógio certo antes de tudo: NTP e fuso

O ofício costuma vir em UTC, às vezes em horário de Brasília, às vezes sem dizer qual. Se o concentrador está dois minutos adiantado, a sessão que você acha pode ser a do cliente anterior naquele IP. A guarda de logs começa pelo tempo: NTP em todos os equipamentos e fuso gravado na linha.

No servidor de logs Debian, o fuso e o NTP ficam assim:

timedatectl set-timezone America/Sao_Paulo
apt install chrony
timedatectl
chronyc tracking

O set-timezone grava o fuso, o chrony mantém o relógio ajustado e o chronyc tracking mostra o desvio. Saída esperada, resumida:

               Local time: Mon 2026-09-14 10:45:29 -03
           Universal time: Mon 2026-09-14 13:45:29 UTC
                Time zone: America/Sao_Paulo (-03, -0300)
System clock synchronized: yes
              NTP service: active

A linha que importa é System clock synchronized: yes. Se aparecer no, confira a saída UDP 123. O NTP.br mantém servidores como a.st1.ntp.br. Sem horário de verão desde 2019, America/Sao_Paulo fica em -03, mas grave o fuso mesmo assim: a regra pode mudar.

Servidor de logs com rsyslog

O servidor de logs recebe o syslog dos concentradores e do CGNAT, um arquivo por equipamento e por dia. Este é o arquivo /etc/rsyslog.d/10-remoto.conf, na sintaxe atual do rsyslog (RainerScript):

module(load="imudp")
module(load="imtcp")

template(name="PorOrigem" type="string"
    string="/var/log/remoto/%fromhost-ip%/%$year%-%$month%-%$day%.log")
template(name="Linha" type="string"
    string="%timegenerated:::date-rfc3339% %fromhost-ip% %msg%\n")

ruleset(name="remoto") {
    action(type="omfile" dynaFile="PorOrigem" template="Linha"
           dirCreateMode="0750" fileCreateMode="0640")
    stop
}

input(type="imudp" port="514" ruleset="remoto")
input(type="imtcp" port="514" ruleset="remoto")
  • module(load="imudp") e imtcp: recepção por UDP e TCP.
  • template PorOrigem: monta o caminho do arquivo com o IP de quem mandou (fromhost-ip) e a data do servidor. O resultado é /var/log/remoto/192.0.2.1/2026-09-14.log.
  • template Linha: grava a hora em que o servidor recebeu a mensagem (timegenerated) no formato RFC 3339, com microssegundos e fuso, seguida do IP de origem e da mensagem.
  • ruleset remoto e stop: o que chega pela rede não se mistura com o /var/log/syslog do servidor.
  • dirCreateMode e fileCreateMode: sem leitura para outros usuários.

Antes de reiniciar, valide a configuração e confira se a porta abriu:

install -d -m 0750 -o root -g adm /var/log/remoto
rsyslogd -N1
systemctl restart rsyslog
ss -lntup 'sport = :514'

O rsyslogd -N1 valida a configuração sem subir o serviço. O ss deve mostrar a 514 em UDP e TCP. No firewall, aceite a 514 só dos concentradores e do CGNAT: syslog aberto deixa qualquer um escrever no seu registro.

Mandando o log do Mikrotik

No concentrador PPPoE (o mesmo do post de PPPoE server no Mikrotik v7), ajuste relógio, NTP e a ação remota. A sintaxe segue a documentação do RouterOS v7; teste em laboratório antes de aplicar:

/system clock set time-zone-autodetect=no time-zone-name=America/Sao_Paulo
/system ntp client set enabled=yes
/system ntp client servers add address=a.st1.ntp.br
/system ntp client servers add address=b.st1.ntp.br
/system logging action
add name=guardalog target=remote remote-port=192.0.2.10:514 \
    remote-log-format=syslog syslog-time-format=iso8601 \
    syslog-facility=local5 src-address=192.0.2.1
/system logging
add topics=ppp action=guardalog

time-zone-autodetect=no evita que o roteador escolha o fuso pelo IP público. A ação guardalog manda para o servidor saindo pela loopback (src-address), o que mantém o mesmo diretório no servidor. Em versões antigas do v7, o endereço vai em remote e a porta em remote-port; confira o help da sua versão. Exemplo do que chega:

2026-09-14T08:02:11.512034-03:00 192.0.2.1 <pppoe-cliente0137>: connected
2026-09-14T19:40:03.118520-03:00 192.0.2.1 <pppoe-cliente0137>: disconnected

Esse syslog é a segunda trilha da guarda de logs. A fonte principal do registro de conexão continua sendo o accounting do RADIUS, com início, fim e IP de cada sessão.

Formatos: log por sessão ou tabela determinística

O log por sessão grava cada conexão traduzida: IP e porta privados, IP e porta públicos, horário. Funciona com qualquer CGNAT, mas o volume é enorme e costuma trazer o destino. A alocação por blocos (BPA) loga só quando um bloco de portas é entregue e liberado. A tabela determinística não loga a tradução: você guarda a fórmula, ou a tabela, com a data de vigência.

Mudou o pool ou a proporção? É uma versão nova da tabela. Guarde todas, com início e fim, pelo mesmo prazo da guarda de logs. Um ofício de março pergunta pela tabela que valia em março.

Armazenamento e integridade

O Decreto 8.771/2016, art. 13, lista diretrizes de segurança para quem guarda esses dados: controle estrito de acesso, autenticação para acessar os registros (o texto cita autenticação dupla como exemplo), inventário dos acessos com momento, duração, quem acessou e qual arquivo, e técnicas que garantam a inviolabilidade, como encriptação. O § 2º manda reter o mínimo e excluir quando a finalidade acabar ou o prazo legal terminar.

No servidor de logs, um cron diário comprime o arquivo do dia anterior e grava o hash SHA-256 numa lista. Salve como /etc/cron.daily/logs-remoto:

#!/bin/sh
# /etc/cron.daily/logs-remoto: comprime o dia anterior e grava o hash
set -e
ONTEM=$(date -d yesterday +%F)
cd /var/log/remoto
for f in */"$ONTEM".log; do
    [ -f "$f" ] || continue
    gzip -9 "$f"
    sha256sum "$f.gz" >> SHA256SUMS
done
chmod 0640 SHA256SUMS

O date -d yesterday +%F gera a data no mesmo formato do template do rsyslog. O sha256sum anota o hash; arquivo alterado deixa de bater.

chmod 0755 /etc/cron.daily/logs-remoto
cd /var/log/remoto && sha256sum -c --quiet SHA256SUMS
rsync -a /var/log/remoto/ backup@192.0.2.20:/srv/logs-remoto/
find /var/log/remoto -name '*.log.gz' -mtime +400 -print
  • chmod 0755: o run-parts só executa script executável.
  • sha256sum -c --quiet: confere todos os hashes e só imprime os que falharam. Rode antes de entregar qualquer dado.
  • rsync: cópia para outro servidor, com acesso separado. Perder o disco também é perder a guarda de logs.
  • find ... -mtime +400 -print: lista os arquivos com mais de 400 dias. O comando só lista de propósito: apagar depende de não haver pedido de preservação (art. 13, § 2º, da lei) e da política definida com o jurídico.

Registre quem acessa o servidor: contas nominais, SSH com chave e segundo fator, log de autenticação enviado para outro lugar. É o inventário do inciso III do art. 13 do decreto.

Como atender um ofício judicial

O ofício chega com algo como: IP 203.0.113.5, porta 4100, 14/09/2026 às 13:45:29 UTC. Antes de consultar, confira com o jurídico se é ordem judicial e o que ela pede.

1. Converter o horário para o fuso dos seus registros

from datetime import datetime
from zoneinfo import ZoneInfo

utc = datetime(2026, 9, 14, 13, 45, 29, tzinfo=ZoneInfo('UTC'))
print(utc.astimezone(ZoneInfo('America/Sao_Paulo')))
2026-09-14 10:45:29-03:00

O zoneinfo acerta inclusive datas da época do horário de verão. Conta de cabeça é o erro mais comum.

2. Achar o IP 100.64 pela tabela do CGNAT

Com o script cgnat_tabela.py do post de CGNAT no Mikrotik com netmap determinístico, usando a versão da tabela que valia na data do ofício:

python3 -c "import cgnat_tabela as t; print(t.quem('203.0.113.5', 4100))"
100.64.0.37

3. Achar a sessão no RADIUS

No schema padrão do FreeRADIUS, a tabela radacct guarda cada sessão. A consulta procura quem estava com aquele IP no horário, com a sessão aberta ou já encerrada depois dele:

SELECT username, callingstationid, nasipaddress,
       acctstarttime, acctstoptime
FROM radacct
WHERE framedipaddress = '100.64.0.37'
  AND acctstarttime <= '2026-09-14 10:45:29'
  AND (acctstoptime IS NULL OR acctstoptime >= '2026-09-14 10:45:29');
username     callingstationid   nasipaddress  acctstarttime
cliente0137  00:00:5E:00:53:37  192.0.2.1     2026-09-14 08:02:11
(acctstoptime: 2026-09-14 19:40:03)

Confira em que fuso o seu RADIUS grava acctstarttime; em muitas instalações é o horário local do servidor do banco.

4. Responder e registrar

O que vai na resposta, em que formato e para quem, é decisão do jurídico. Do lado técnico, registre quem consultou, quando e quais arquivos, e guarde a evidência junto do processo.

Erros comuns na guarda de logs

  • Hora sem fuso. Linha com Sep 14 10:45:29 não diz o ano nem o fuso. Grave RFC 3339 no servidor e use syslog-time-format=iso8601 onde o equipamento permitir.
  • Relógio fora. NTP em todos os equipamentos.
  • Só o log do CGNAT. Sem o accounting do RADIUS, você chega no IP 100.64 e para.
  • Tabela determinística sem versão. Sobrescreveu a tabela? O período anterior fica sem resposta.
  • Syslog por UDP sem conferência. UDP perde pacote sem avisar. Alarme quando um equipamento parar de mandar.
  • Disco cheio. rsyslog sem espaço é registro perdido.
  • Guardar demais. URL ou destino de cada conexão não é registro de conexão, e mais dado é mais risco se o servidor for invadido.

Perguntas frequentes

Por quanto tempo o provedor precisa fazer a guarda de logs de conexão?

O art. 13 da Lei 12.965/2014 fala em 1 ano, e o RGST da Anatel fala em no mínimo 1 ano. Autoridade policial ou administrativa ou o Ministério Público pode pedir, de forma cautelar, que os registros sejam guardados por prazo maior (art. 13, § 2º). Confirme a política de retenção com a assessoria jurídica.

Com CGNAT, preciso guardar a porta de origem?

O Decreto 8.771/2016, art. 15-A, incluído pelo Decreto 12.975/2026, diz que a guarda do IP abrange a porta lógica de origem quando ela for necessária para a identificação inequívoca do terminal de origem ou do próximo enlace de rede. O RGST da Anatel também inclui as portas no registro quando há IP compartilhado. Tecnicamente, sem a porta não há como separar os clientes de um mesmo IP público.

Posso terceirizar a guarda de logs?

Pode contratar servidor ou sistema de terceiros, mas o art. 13, § 1º, diz que a responsabilidade pela manutenção dos registros não pode ser transferida. Se o fornecedor perder os dados, o problema continua sendo do provedor.

A polícia pode pedir os registros sem ordem judicial?

Pela lei, a entrega dos registros de conexão depende de ordem judicial (art. 10, § 1º, e art. 13, § 5º). Dados cadastrais (qualificação pessoal, filiação e endereço) podem ser requisitados por autoridades administrativas com competência legal (art. 10, § 3º). Na dúvida, consulte o jurídico antes de responder.

Quanto espaço ocupa a guarda de logs com CGNAT?

Depende do formato. Com tabela determinística, o volume é o do accounting do RADIUS e algumas versões da tabela. Com log por sessão, cada conexão vira uma linha e o disco cresce rápido; meça uma semana antes de dimensionar.

Conclusão

A guarda de logs que funciona no dia do ofício tem quatro peças: relógio sincronizado com fuso, accounting do RADIUS completo, a tradução do CGNAT registrada (de preferência por tabela determinística versionada) e um servidor de logs com acesso controlado, hash e cópia. Teste com um ofício simulado: IP, porta e horário em UTC, e veja se a equipe chega ao assinante.

As normas mudaram em 2025 e 2026 e podem mudar de novo. Valide cada decisão de retenção e entrega da guarda de logs com a assessoria jurídica do provedor.

Fontes oficiais: Lei 12.965/2014, Decreto 8.771/2016, Decreto 12.975/2026 e Resolução Anatel 777/2025 (RGST).

Leitura recomendada: Log de portas de origem em servidores web e Servidor de Logs, da wiki do Brasil Peering Forum (CC BY-NC 4.0).

Compartilhar:

Sobre o autor

Ivan Alves

Especialista em redes de provedores (ISP)

Ivan Alves trabalha há mais de 15 anos com redes de provedores de internet, do NOC ao backbone e à borda BGP. Coordena infraestrutura e tecnologia em um provedor regional e escreve aqui os tutoriais que gostaria de ter encontrado quando começou: comandos testados, cenário explicado e o porquê de cada linha.

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *