Executando o AWStats por conexão SSL
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_sslGerar uma chave privada RSA para o servidor:
# openssl genrsa -des3 -out server.key 1024Exemplo 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.keyEnter 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.csrVocê 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.crtSaída esperada:
Signature ok
subject=/C=JO/ST=State/L=Your Location/O=My Company/CN=ns.somewhere.com/emailAddress=[email protected] Getting Private keyCopie 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.csrConfigurar 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.keyReinicie ou recarregue o Apache e verifique se o servidor está escutando na porta 443:
netstat -auntExemplo 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:* LISTENForç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 -eNo 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
endscriptCron 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.plIsso 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)
- Gerar chave e CSR.
- Assinar o CSR para gerar server.crt (ou obter cert de CA).
- Copiar e proteger arquivos em /etc/pki/tls/.
- Atualizar httpd.conf com SSLCertificateFile/SSLCertificateKeyFile.
- Reiniciar Apache e verificar porta 443.
- Testar acesso AWStats via HTTPS e ajustar UseHTTPSLinkForUrl.
- 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.
Materiais semelhantes
Instalar e usar Podman no Debian 11
Apt‑pinning no Debian: guia prático
Injete FSR 4 com OptiScaler em qualquer jogo
DansGuardian e Squid com NTLM no Debian Etch
Corrigir erro de instalação no Android