Table of Contents

Appunti sparsi su Apache e Apache 2

Estrarre il numero di get per ip dal log

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

Configurazione minimale di Apache 2 su Devuan Jessie e Debian 8

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.

Configurazione minimale di Apache 2 per servire http e https:

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.

<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]]>

A questo punto possiamo creare un named virtual che non sia il default, se ci serve

* 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]]>

Redirect da un sito a un altro

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]]>

Hardening dell' SSL

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

Gestione del charset

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.

Creazione di un certificato SSL self-signed per Apache2

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.

Statistiche di accesso e uso

Configurazione di apache 1.3 con mod_ssl

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.