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

Rimuovere i tuoi dati dai data broker
Privacy

Rimuovere i tuoi dati dai data broker

Sfondi diversi per ogni schermata Android
Android Personalizzazione

Sfondi diversi per ogni schermata Android

Monitorare e gestire Apache Tomcat
Monitoraggio

Monitorare e gestire Apache Tomcat

Disney Plus non funziona? Guida rapida di risoluzione
Supporto streaming

Disney Plus non funziona? Guida rapida di risoluzione

Pianificare script Python con Task Scheduler
Automazione

Pianificare script Python con Task Scheduler

Revoca app Google, Drive e dispositivi
Sicurezza Account

Revoca app Google, Drive e dispositivi