Onde Encontrar Logs de Acesso do Nginx e Apache

Onde Encontrar Logs de Acesso do Nginx e Apache

SOC Prime Team
SOC Prime Team linkedin icon Seguir

No Debian e Ubuntu, Nginx registra em /var/log/nginx/access.log e error.log, e Apache em /var/log/apache2/access.log e error.log. No RHEL, Rocky e Alma, Apache usa /var/log/httpd/access_log e error_log, com underscores e sem extensão. Em contêineres construídos a partir da imagem oficial do Nginx, não há arquivos de log: tudo vai para stdout e stderr, então os logs do docker são a sua exportação.

O log do servidor web é frequentemente o primeiro lugar onde uma intrusão deixa um rastro: o scanner procurando por arquivos .env, a string de exploit, o POST para um arquivo que não deveria existir. O Prime Core tem 812 regras de detecção para logs de servidor web, mapeadas para 337 técnicas MITRE ATT&CK. Entre elas: exploração de aplicativos voltados para a internet (T1190), web shells (T1505.003) e varredura de vulnerabilidades (T1595.002).

Comece Gratuitamente

Antes de começar

Encontre os caminhos reais. Hosts virtuais costumam registrar em locais personalizados. Pergunte ao próprio servidor:

# Nginx: descarte a configuração efetiva completa e destaque as diretivas de log

sudo nginx -T 2>/dev/null | grep -E 'access_log|error_log'


# Apache

sudo apachectl -S

sudo grep -Ri -E 'CustomLog|ErrorLog' /etc/apache2/ /etc/httpd/ 2>/dev/null

No Apache baseado em Debian, hosts virtuais sem seu próprio CustomLog terminam em other_vhosts_access.log. As pessoas sempre perdem esse.

Verifique de quem você está registrando o IP. Atrás de um balanceador de carga, CDN ou proxy reverso, cada requisição pode parecer vir do proxy. Isso ocorre a menos que o servidor esteja configurado para registrar o cliente real: set_real_ip_from e real_ip_header no Nginx, mod_remoteip no Apache. Se cada linha mostra os mesmos poucos IPs internos, o endereço do invasor está apenas no X-Forwarded-For, se você registrá-lo, ou nos próprios logs do proxy.

Verifique o formato. Ambos os servidores têm como padrão o formato “combined”, mas muitas configurações o personalizam (log_format no Nginx, LogFormat no Apache). Note como o seu se parece antes de fazer upload.

Permissões. No Debian e Ubuntu, esses logs são legíveis pelo root e pelo grupo adm; em outros lugares, planeje usar sudo.

Exportar de arquivos de log

Os logs rodam diariamente ou semanalmente, então inclua os arquivos rotacionados. zcat -f lê arquivos plain e gzip comprimidos igualmente:

# Nginx, atuais e rotacionados, do mais antigo para o mais recente

sudo zcat -f $(ls -tr /var/log/nginx/access.log*) > web-03_nginx_access.log



# Apache no RHEL

sudo zcat -f $(ls -tr /var/log/httpd/access_log*) > web-03_httpd_access.lo

Para um único dia, timestamps no formato combinado tornam grep suficiente:

grep '19/Out/2026' web-03_nginx_access.log > web-03_access_1019.log

Leve também o log de erros. Falhas a montante, erros PHP e algumas tentativas de exploração aparecem apenas lá.

Exportar de contêineres

# Docker: stdout é o log de acesso, stderr o log de erros

docker logs --since 2026-10-19T00:00:00 --until 2026-10-20T00:00:00 nginx > nginx_access.log 2> nginx_error.log


# Kubernetes

kubectl logs deploy/nginx --since=24h > nginx.log

Logs de contêiner desaparecem com o contêiner a menos que algo os colete. Se o pod foi substituído, verifique o coletor de logs do seu cluster.

O que procurar

PadrãoO que geralmente significa
Explosões de 404s para /.env, /.git/config, /wp-login.php, /phpmyadminVarredura automatizada
../, ${jndi:, union select, <script> na URLTentativas de exploração: travessia, Log4Shell, injeção SQL, XSS
200 em um POST para um arquivo estranho em um diretório de uploadPossível shell web; veja o que mais aquele IP requisitou
Agentes de usuário como sqlmap, nikto, nucleiFerramentas que não se preocuparam em se esconder
Um pico de 5xx logo após solicitações estranhasAlgo quebrou, possivelmente porque um exploit foi aplicado

Faça upload, sanitização e revisão no LogTotal

  1. Upload. Abra logtotal.com e solte o ficheiro.
  2. Sanitizar. [what gets masked: client IPs, hostnames, usernames and tokens in URLs]. Look it over before you continue. Query strings often carry session tokens.
  3. Revisar.

Quando dá errado

SintomaCausa provávelFix
Sem /var/log/nginxCaminho personalizado, ou está em um contêinernginx -T, ou logs do docker
access.log existe mas está vazioLogs vão para stdout, ou access_log desativadoVerifique a configuração e o container
Toda solicitação vem dos mesmos IPsProxy ou balanceador de carga na frente; IP real não configuradoUse X-Forwarded-For ou os logs do proxy
Apenas os últimos diasArquivos rotacionados não incluídosUse o comando zcat -f com o * glob
Permissão negadaNão é root, não está no grupo admsudo

FAQ

Qual importa mais, o log de acesso ou o log de erros?

O log de acesso diz o que foi requisitado. O log de erros diz o que quebrou. Em um caso de exploração, você quer ambos, lado a lado.

E quanto ao IIS?

O IIS escreve logs W3C em C:inetpublogsLogFiles por padrão. Isso ganha seu próprio guia.

Junte-se à plataforma Detection as Code da SOC Prime para melhorar a visibilidade das ameaças mais relevantes para o seu negócio. Para ajudá-lo a começar e gerar valor imediato, agende uma reunião agora com os especialistas da SOC Prime.