Eseguire AWStats su una connessione SSL e automatizzarne gli aggiornamenti
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
- Verifica prerequisiti (OpenSSL, mod_ssl).
- Genera key + CSR e firma il certificato.
- Copia i file nei percorsi corretti e imposta permessi stretti.
- Configura Apache e verifica la porta 443.
- Aggiorna AWStats per usare link HTTPS (UseHTTPSLinkForUrl).
- Automatizza con cron o logrotate.
- 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.
Materiali simili

Rimuovere i tuoi dati dai data broker

Sfondi diversi per ogni schermata Android

Monitorare e gestire Apache Tomcat

Disney Plus non funziona? Guida rapida di risoluzione

Pianificare script Python con Task Scheduler
