Guida alle tecnologie

Eseguire AWStats su una connessione SSL e automatizzarne gli aggiornamenti

6 min read DevOps Aggiornato 16 Sep 2025
AWStats su SSL: guida pratica e automazione
AWStats su SSL: guida pratica e automazione

Perché eseguire AWStats su SSL

Eseguire AWStats tramite HTTPS protegge la visualizzazione dei report e impedisce l’intercettazione delle informazioni trasmesse via browser. SSL (Secure Sockets Layer) o il suo successore TLS cifrano il traffico. Se le misure descritte in precedenza non bastano, l’uso di HTTPS è una ulteriore barriera di sicurezza.

Important: se il server già usa certificati validi e aggiornati, preferisci questi a un certificato self-signed in produzione.

Requisiti preliminari

  • Accesso root o sudo sul server Apache.
  • OpenSSL installato.
  • Conoscenza di base di shell e VIM (o editor a scelta).

Nota: questa guida mostra come creare un certificato self-signed per test o ambienti interni. Per ambienti pubblici, considera di usare una CA come Let’s Encrypt per evitare avvisi del browser.

Creare un certificato

Apri una shell sul server. Su CentOS/RHEL il pacchetto mod_ssl fornisce il supporto SSL per Apache. Spostati nella cartella /etc/pki/tls/certs/ quando richiesto.

yum install mod_ssl

Genera una chiave privata RSA del server:

# openssl genrsa -des3 -out server.key 1024

Output previsto (esempio di interazione):

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

Visualizza i dettagli della chiave privata:

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

Crea una Certificate Signing Request (CSR) usando la chiave privata:

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

Durante la procedura ti verranno chieste informazioni (Country, State, Locality, Organization, Common Name, ecc.). Alcuni valori di esempio mostrati nell’originale:

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]  
A challenge password []:  
An optional company name []:

Firma la CSR per ottenere il certificato (valido per 365 giorni nell’esempio):

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

Output di verifica: “Signature ok” e i dettagli del subject.

Copia i file nelle posizioni standard di CentOS/RHEL:

# cp server.crt /etc/pki/tls/certs/  
# cp server.key /etc/pki/tls/private/  
# cp server.csr /etc/pki/tls/private

Imposta permessi restrittivi sui file:

# 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

Fact box: usa chiavi RSA almeno a 2048 bit (preferibile 4096) per sicurezza moderna.

Configurare Apache con SSL

Aggiungi nel tuo httpd.conf (o nel vhost SSL) le seguenti direttive per indicare i file del certificato:

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

Verifica che il server stia ascoltando sulla porta 443:

netstat -aunt

Output di esempio (mostra il porto 443 in LISTEN):

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

Ora puoi usare https:// per accedere alle pagine. Per un certificato self-signed il browser mostrerà un avviso e chiederà di accettarlo. Se non viene chiesto, ricontrolla la configurazione.

Reindirizzare AWStats su HTTPS tramite .htaccess

Nel file .htaccess del sito aggiungi (modifica l’URL secondo la tua installazione):

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

Configurazione AWStats: UseHTTPSLinkForUrl

Nel file awstats.site.conf imposta il parametro che forza la generazione di link HTTPS:

UseHTTPSLinkForUrl
Version : 4.0+

UseHTTPSLinkForUrl=""

Se tutto il sito usa SSL, imposta UseHTTPSLinkForUrl su “/“. Questo parametro viene usato solo quando ShowLinksOnUrl non è 0.

Automatizzare l’aggiornamento di AWStats con cron

Aggiornare AWStats manualmente è noioso. Consiglio di automatizzare l’aggiornamento giornaliero per ridurre l’impatto sul server.

Apri il crontab dell’utente appropriato:

$ crontab -e

Nel VIM premi i per inserire e aggiungi la riga cron. Nell’esempio originale si trova questa riga:

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

Nota importante: la riga di esempio potrebbe essere malformata (manca un campo *). Una forma corretta per eseguire ogni giorno alle 09:45 sarebbe:

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

Questo aggiorna AWStats alle 09:45 ogni giorno. -confdir=”/etc” punta alla directory dei file di configurazione AWStats.

Ricorda di lasciare una riga vuota alla fine del file crontab. In VIM premi [Escape] e poi :x o ZZ per salvare.

Alternativa: logrotate + script di aggiornamento

Puoi integrare l’aggiornamento di AWStats con logrotate modificando /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

Questo approccio esegue l’aggiornamento in corrispondenza della rotazione dei log.

Cron job per molti file di configurazione

Se hai molte configurazioni, non è pratico creare un cron per ciascuna. Usa lo script awstats_updateall.pl incluso in AWStats.

Esempio di cron che aggiorna tutti i siti (riga unica):

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

Quando awstats_updateall.pl invoca awstats.pl, assicurati che gli script siano eseguibili:

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

Questo permette al cron di eseguire awstats.pl con i permessi corretti.

Configurare addon: GeoIP per AWStats

La risoluzione host viene di solito eseguita via DNS con Apache che popola dns.txt e AWStats che la utilizza per risolvere nazioni/host. Con traffico elevato, le ricerche DNS possono impattare le prestazioni. Un’alternativa efficiente è usare l’addon GeoIP che mappa gli indirizzi IP alle nazioni senza richieste DNS costose.

Leggi l’articolo “GeoIP Information for AWStats” per i dettagli sull’installazione dell’addon (link esterno). L’uso di GeoIP riduce l’overhead e aumenta la velocità di generazione dei report.

Alternative e quando SSL non è la soluzione

  • Quando evitarlo: in una rete interna completamente isolata dove la sicurezza della rete è già garantita, l’overhead di SSL potrebbe essere evitato per semplicità.
  • Quando fallisce: se il certificato è scaduto, non valido o la catena di CA è interrotta, i browser mostreranno errori e gli utenti non potranno accedere ai report.
  • Soluzione alternativa: usa VPN o accesso via rete privata per proteggere le pagine AWStats senza HTTPS pubblico.

Mini-metodologia: passi rapidi

  1. Verifica prerequisiti (OpenSSL, mod_ssl).
  2. Genera key + CSR e firma il certificato.
  3. Copia i file nei percorsi corretti e imposta permessi stretti.
  4. Configura Apache e verifica la porta 443.
  5. Aggiorna AWStats per usare link HTTPS (UseHTTPSLinkForUrl).
  6. Automatizza con cron o logrotate.
  7. Considera GeoIP per la geolocalizzazione efficiente.

Checklist per ruoli

  • Amministratore di sistema: verifica permessi, rinnovo certificati, configurazione vhost SSL, firewall (porta 443).
  • SRE/DevOps: crea crontab centralizzato, controlla SELinux/AppArmor, monitora fallimenti cron.
  • Responsabile sicurezza: preferisci CA pubbliche (Let’s Encrypt), rivedi cifrature e disabilita TLS1.0/1.1.

Sicurezza e hardening

  • Usa chiavi RSA >= 2048 bit o chiavi ECC moderne se supportate.
  • Evita di lasciare passphrase su chiavi quando il servizio deve partire automaticamente; invece proteggi i file con permessi e, se possibile, usa un keystore protetto.
  • Disabilita protocolli obsoleti (SSLv2, SSLv3, TLS1.0/1.1).
  • Controlla e limita l’accesso alle directory di AWStats.
  • Automatizza il rinnovo dei certificati (ad esempio con Certbot per Let’s Encrypt).

Glossario in una riga

  • SSL/TLS: protocolli che cifrano il traffico web.
  • CSR: Certificate Signing Request.
  • CA: Certificate Authority, emette certificati.

Riepilogo

Seguendo questi passi puoi servire AWStats su HTTPS, proteggere i report e automatizzare gli aggiornamenti con cron o awstats_updateall.pl. Applica permessi restrittivi, usa chiavi moderne e valuta l’uso di certificati da CA per ambienti di produzione.

Notes: esistono molte estensioni e ottimizzazioni per AWStats (ExtraSections, performance tuning, ecc.). Se gestisci molti siti, centralizza l’aggiornamento con awstats_updateall.pl e monitora i job cron.

Autore
Redazione

Materiali simili

Installare e usare Podman su Debian 11
DevOps

Installare e usare Podman su Debian 11

Guida rapida a apt-pinning su Debian
Linux

Guida rapida a apt-pinning su Debian

Forzare FSR 4 con OptiScaler: guida completa
Guide.

Forzare FSR 4 con OptiScaler: guida completa

Dansguardian + Squid NTLM su Debian Etch
Rete

Dansguardian + Squid NTLM su Debian Etch

Riparare errore installazione SD su Android
Android

Riparare errore installazione SD su Android

Cartelle di rete con KNetAttach e remote:/
Linux

Cartelle di rete con KNetAttach e remote:/