Guia de tecnologias

Executando o AWStats por conexão SSL

6 min read DevOps Atualizado 16 Sep 2025
AWStats via SSL: configuração e cron
AWStats via SSL: configuração e cron

Introdução

Se as medidas de segurança já aplicadas não forem suficientes, você pode executar o AWStats sobre uma conexão SSL para proteger o acesso ao painel. Antes de configurar o AWStats, confirme que o servidor web está preparado para suportar SSL/TLS.

Abaixo estão as instruções para criar um certificado SSL autofirmado para Apache (exemplos em CentOS/RHEL5). Mantenha os caminhos e comandos como no ambiente de destino.

Criar um certificado

Abra o terminal no servidor. O OpenSSL será usado para gerar chaves e certificados; instale-o se necessário. No CentOS/RHEL instale o módulo SSL e entre no diretório /etc/pki/tls/certs/:

yum install mod_ssl

Gerar uma chave privada RSA para o servidor:

# openssl genrsa -des3 -out server.key 1024

Exemplo de saída durante a geração da chave:

Generating RSA private key, 1024 bit long modulus  
Enter pass phrase for server.key:  
Verifying - Enter pass phrase for server.key:

Verifique a chave privada (será solicitada a pass phrase):

# openssl rsa -noout -text -in server.key
Enter pass phrase for server.key:

Crie um Certificate Signing Request (CSR) usando a chave privada RSA do servidor:

# openssl req -new -key server.key -out server.csr

Você será solicitado a fornecer campos que compõem o Distinguished Name (DN). Alguns campos podem ser deixados em branco pressionando ‘.’

Exemplo de preenchimento (ajuste para seu ambiente):

Country Name (2 letter code) [GB]:JO  
State or Province Name (full name) [Berkshire]:State  
Locality Name (eg, city) [Newbury]: Your Location  
Organization Name (eg, company) [My Company Ltd]:My Company  
Organizational Unit Name (eg, section) []:  
Common Name (eg, your name or your server's hostname) []:ns.somewhere.com  
Email Address []: [email protected]  
Please enter the following 'extra' attributes  
to be sent with your certificate request  
A challenge password []: If you hit enter here, it will be empty  
An optional company name []:

Assine o CSR com a chave para gerar um certificado válido por 365 dias:

# openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt

Saída esperada:

Signature ok

subject=/C=JO/ST=State/L=Your Location/O=My Company/CN=ns.somewhere.com/emailAddress=[email protected] Getting Private key

Copie os arquivos para os diretórios padrão do sistema e restrinja permissões:

# cp server.crt /etc/pki/tls/certs/  
# cp server.key /etc/pki/tls/private/  
# cp server.csr /etc/pki/tls/private
# chmod go-rwx /etc/pki/tls/certs/server.crt  
# chmod go-rwx /etc/pki/tls/private/server.key  
# chmod go-rwx /etc/pki/tls/private/server.csr

Configurar o Apache para SSL

Edite seu httpd.conf (ou o arquivo de configuração SSL apropriado) e adicione/aponte para os arquivos do certificado:

SSLCertificateFile /etc/pki/tls/certs/server.crt
SSLCertificateKeyFile /etc/pki/tls/private/server.key

Reinicie ou recarregue o Apache e verifique se o servidor está escutando na porta 443:

netstat -aunt

Exemplo de saída:

Active Internet connections (servers and established)

Proto Recv-Q Send-Q Local Address Foreign Address State

tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN  
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN  
tcp 0 0 0.0.0.0:443 0.0.0.0:* LISTEN

Forçar AWStats a usar HTTPS

Use https:// ao acessar a página em vez de http://. Ao usar um certificado autofirmado será solicitado que aceite o certificado no navegador. Se não houver solicitação para aceitar o certificado, revise a configuração do Apache.

No seu .htaccess adicione (modifique a URL conforme sua instalação):

# redirect awstats to https
RewriteCond %{REQUEST_URI} ^/awstats(.*)
RewriteRule ^/rawe/awstats(.*)$ https://example.com/awstats$1 [R,L]

No arquivo awstats.site.conf ajuste a entrada para refletir a conexão SSL. O parâmetro UseHTTPSLinkForUrl permite que o AWStats gere links começando por HTTPS quando aplicável:

UseHTTPSLinkForUrl
Version : 4.0+
   
# When AWStats build HTML links in its report pages, it starts thoose link
# with "http://". However some links might be HTTPS links, so you can enter
# here the root of all your HTTPS links. If all your site is a SSL web site,
# just enter "/".
# This parameter is not used if ShowLinksOnUrl is 0.
# Example: "/shopping"
# Example: "/"
# Default: ""
#
UseHTTPSLinkForUrl=""

Deixe este parâmetro com “/“ se todo o site usar SSL, ou com o prefixo apropriado.

Automatizar atualização do AWStats com cron

Para evitar atualizações manuais, crie um job cron. Recomenda-se executar diariamente para reduzir sobrecarga em sites com alto tráfego.

Abra o crontab com:

$ crontab -e

No VIM pressione i (insert) e adicione a linha do cron. Exemplo (atualizar às 09:45 diariamente):

45 9 * */usr/bin/awstats_updateall.pl now -confdir="/etc" -awstatsprog="/var/www/awstats/awstats.pl"

Observações importantes:

  • Esse job atualiza o AWStats às 9h45 diariamente.
  • -confdir=”/etc” refere-se aos arquivos de configuração do AWStats.
  • Mantenha uma linha vazia ao final do arquivo crontab.

Para salvar no VIM: pressione [Escape], depois digite :x ou ZZ.

Você também pode usar logrotate para acionar atualizações via Apache. Exemplo em /etc/logrotate.d:

/var/log/httpd/*log {
missingok
notifempty
sharedscripts
prerotate
/var/www/awstats/awstats.pl-update -config=somesite.net
postrotate
/etc/init.d/httpd reload > /dev/null 2>&1 || true
endscript

Cron para muitos arquivos de configuração

Se houver muitos arquivos de configuração, em vez de vários jobs cron use awstats_updateall.pl (ferramenta do AWStats). Exemplo de entrada cron (uma linha):

15 4 * * * perl $HOME/awstats/tools/awstats_updateall.pl now -awstatsprog=$HOME/awstats/cgi-bin/awstats.pl -configdir=$HOME/awstats/cgi-bin/

Esta chamada fará com que awstats.pl seja executado para cada arquivo de configuração encontrado no diretório especificado. Garanta permissões de execução adequadas:

$ chmod 504 awstats/cgi-bin/awstats.pl

Isso permite que o usuário (e o cronjob) execute o script awstats.pl.

Configurar addons para AWStats (GeoIP)

Por padrão, resolução de hostnames e localização geográfica pode ser feita via DNS; o Apache popula um dns.txt que o AWStats usa. Em sites com tráfego alto, essas consultas podem introduzir overhead. Uma alternativa é usar o módulo GeoIP para mapear IP → país/localidade sem consultas DNS contínuas.

Um bom artigo sobre GeoIP para AWStats detalha os passos de integração (todos os créditos ao autor original). Use GeoIP quando:

  • Você precisar de resolução geográfica rápida.
  • Houver alta taxa de consultas DNS que degradam desempenho.

Checklist de implantação (por função)

Administrador de sistema:

  • Verificar OpenSSL e mod_ssl instalados.
  • Gerar e proteger server.key e server.crt.
  • Configurar httpd.conf e reiniciar Apache.

Equipe de segurança:

  • Validar políticas de chave (passphrase, armazenamento).
  • Avaliar substituição por certificado emitido por CA pública.

DevOps / Operações:

  • Criar cron job diário ou awstats_updateall.pl.
  • Configurar logrotate para acionar updates quando necessário.

Hardening e recomendações de segurança

  • Substitua certificados autofirmados por certificados emitidos por uma CA pública (Let’s Encrypt) em produção.
  • Proteja a chave privada com permissões estritas (chmod 600 ou 400 conforme necessidade).
  • Desative protocolos TLS antigos no Apache (ex.: SSLv2/SSLv3) e force TLS 1.2+ se possível.
  • Habilite HSTS se o domínio estiver pronto para HTTPS permanente.
  • Evite expor a interface AWStats publicamente; coloque-a atrás de autenticação (HTTP basic com HTTPS) ou restrinja por IP.

Observação: certificados autofirmados são aceitáveis para ambientes de teste, mas não recomendados em produção devido a warnings e riscos de confiança.

Quando isso pode falhar (contraexemplos)

  • O navegador não solicitará aceitação do certificado se o Apache não estiver servindo corretamente via 443.
  • Se as permissões dos arquivos de chave forem muito restritivas para o usuário do Apache, o serviço pode falhar ao iniciar.
  • Usar um cron sem o caminho correto para awstats.pl causará falhas silenciosas; sempre use caminhos absolutos e testes manuais antes de ativar cron.

Mini-metodologia de deploy (passos rápidos)

  1. Gerar chave e CSR.
  2. Assinar o CSR para gerar server.crt (ou obter cert de CA).
  3. Copiar e proteger arquivos em /etc/pki/tls/.
  4. Atualizar httpd.conf com SSLCertificateFile/SSLCertificateKeyFile.
  5. Reiniciar Apache e verificar porta 443.
  6. Testar acesso AWStats via HTTPS e ajustar UseHTTPSLinkForUrl.
  7. Criar cron job diário e validar logs de execução.

Critérios de aceitação

  • O Apache responde na porta 443 sem erros e serve páginas HTTPS.
  • AWStats gera links HTTPS corretos ou redirecionamentos funcionam.
  • Cron job atualiza relatórios diariamente (verifique timestamps nos relatórios).
  • Permissões de chave privada restringem leitura a administradores.

Testes e casos de verificação

  • Acesse https://seu-domínio/awstats e confirme que o relatório carrega.
  • Execute manualmente o script de atualização e confirme geração de novos relatórios: perl /var/www/awstats/awstats.pl -config=seusite.net
  • Simule falha de permissão na chave e verifique logs do Apache para mensagens claras.
  • Verifique logrotate e cron.log para entradas esperadas após rotação/execução.

Considerações de compatibilidade e migração

  • AWStats 4.0+ entende UseHTTPSLinkForUrl. Para versões antigas, verifique a documentação da versão.
  • Em migrações para containers, adapte caminhos de certificado e cron para o contêiner ou use um job centralizado.

Privacidade e GDPR (notas rápidas)

  • AWStats processa logs do servidor que podem conter endereços IP. Trate esses dados conforme a política de privacidade aplicável e, se necessário, anonimizar IPs antes do armazenamento/relatórios.

Resumo

Seguindo os passos acima você habilita SSL para AWStats, automatiza atualizações e melhora segurança. Em produção prefira certificados de CA pública e restrinja acesso ao painel AWStats. Use GeoIP para reduzir sobrecarga de DNS em sites com tráfego elevado.

Importante: teste cada etapa em um ambiente de ensaio antes de aplicar em produção.

Autor
Edição

Materiais semelhantes

Instalar e usar Podman no Debian 11
Containers

Instalar e usar Podman no Debian 11

Apt‑pinning no Debian: guia prático
Administração de sistemas

Apt‑pinning no Debian: guia prático

Injete FSR 4 com OptiScaler em qualquer jogo
Tecnologia

Injete FSR 4 com OptiScaler em qualquer jogo

DansGuardian e Squid com NTLM no Debian Etch
Infraestrutura

DansGuardian e Squid com NTLM no Debian Etch

Corrigir erro de instalação no Android
Android

Corrigir erro de instalação no Android

KNetAttach: Pastas de Rede remota no KDE
KDE

KNetAttach: Pastas de Rede remota no KDE