Trucchetto per leggere il log ed estrarre il numero di connessioni per ogni indirizzo ip remoto univoco, in ordine di numero di connessioni.
cat il-tuo-log | cut -d' ' -f1 | sort | uniq -c | sort -g | less
Di default Apache 2 si avvia senza supporto https e senza named virtual.
Io preferisco usare sempre dei named virtual, quindi imposto un default che non porti a nulla (una directory con un index.html senza niente) e poi tanti named virtual quanti ne servono.
Attenzione: se imposti un named virtual che ha lo stesso nome del FQDN del server (che so, mail.example.com) questo named virtual non funzionera`. I named virtual devono SEMPRE avere un nome diverso dal FQDN del server.
Se vogliamo anche https, occorre abilitare il modulo con il comando a2enmod ssl
e creare i certificati. Se non abilitiamo il modulo ssl le configurazioni di ssl verranno ignorate.
sites-available/default.conf
con dentro le configurazioni per il sito di default:<VirtualHost *:80> ServerAdmin postmaster@example.com DocumentRoot /var/www/default <[[/VirtualHost]]> <IfModule mod_ssl.c> <VirtualHost *:443> SSLEngine on SSLCertificateFile /etc/letsencrypt/example.cert SSLCertificateKeyFile /etc/letsencrypt/example.key ServerAdmin postmaster@example.com DocumentRoot /var/www/default <[[/VirtualHost]]> <[[/IfModule]]>
000-default.conf
, creando i link dentro a sites-enabled
o usando i comandi a2ensite
e a2dissite
/var/www/default
(o quella che vogliamo usare) e magari metterci dentro un index.html con qualche avviso che dice che questo non e` il server che state cercando.
* Creare un file sites-available/default.conf
con dentro le configurazioni per nostro named virtual, poniamo che sia "webmail.example.com":
<VirtualHost *:80> ServerAdmin postmaster@example.com ServerName webmail.example.com ErrorLog ${APACHE_LOG_DIR}/webmail-error.log CustomLog ${APACHE_LOG_DIR}/webmail-access.log combined DocumentRoot /var/www/webmail <[[/VirtualHost]]> <IfModule mod_ssl.c> <VirtualHost *:443> SSLEngine on SSLCertificateFile /etc/letsencrypt/webmail-example.cert SSLCertificateKeyFile /etc/letsencrypt/webmail-example.key ServerAdmin postmaster@example.com ServerName webmail.example.com ErrorLog ${APACHE_LOG_DIR}/webmail-error.log CustomLog ${APACHE_LOG_DIR}/webmail-access.log combined DocumentRoot /var/www/webmail <[[/VirtualHost]]> <[[/IfModule]]>
sites-enabled
o usando il comandio a2ensite
/var/www/webmail
e metterci dentro cio` che serve.
Per, per esempio, forzare un redirect da un sito http all'equivalente https, posso usare il comando "redirect" o il comando "redirectmatch" dentro alla configurazione. Posso usarlo anche per fare altri redirect non necessariamente fra http e https. Notare che devo indicare l' url di partenza (/) e quello di arrivo. Per evitare problemi con il rinnovo dei certificati di Let's Encrypt e` opportuno usare un redirect che NON ridiriga le richieste dei files sotto /.well-known/acme-challenge/
.
Esempio:
<VirtualHost *:80> ServerName www.pippo.com ServerAdmin email@pippo.com RedirectMatch 301 ^(?!/\.well-known/acme-challenge/).* https://www.pippo.com$0 DocumentRoot /var/www/dovevuoitu <[[/VirtualHost]]> <VirtualHost *:443> SSLEngine on SSLCertificateFile /etc/apache2/ssl/pippo.crt SSLCertificateKeyFile /etc/apache2/ssl/pippo.key Eccetera eccetera <[[/VirtualHost]]>
Questa e` la configurazione suggerita per Apache 2.4 o superiore per disabiltare i protocolli meno sicuri:
SSLProtocol ALL -SSLv2 -SSLv3 SSLHonorCipherOrder On SSLCipherSuite ECDH+AESGCM:DH+AESGCM:ECDH+AES256:DH+AES256:ECDH+AES128:DH+AES:RSA+AESGCM:RSA+AES:!aNULL:!MD5:!DSS
Se le pagine del sito contengono caratteri non-standard che non sono codificati correttamente in HTML (tipo le lettere accentate), e queste nel browser vengono male, occorre definire il charset standard. Per farlo, editare /etc/apache2/conf.d/charset
e modificarlo in modo che contenga AddDefaultCharset ISO-8859-1
.
openssl req -new -x509 -days 3650 -nodes -out server.crt -keyout server.key chmod 400 server.key
I due files server.crt e server.key vanno definiti nella config di apache.
Dopo aver installato apache 1.3 e mod_ssl, per avere il supporto per http e https occorre come minimo una configurazione con due virtualhosts, cosi`:
Listen 80 Listen 443 NameVirtualHost *:80 NameVirtualHost *:443 <VirtualHost *:80> <[[/VirtualHost]]> <VirtualHost *:443> # Configurazione SSL SSLEngine on SSLCertificateFile /etc/apache/ssl/server.crt SSLCertificateKeyFile /etc/apache/ssl/server.key <[[/VirtualHost]]>
Questa ovviamente e` superminimale, ma funziona se si ha di fatto un solo host (niente virtuali davvero) che vuole fare sia http che https.