Quando si utilizza un servizio di proxy come Cloudflare, è possibile che l'indirizzo IP registrato nei log del server Apache non sia l'IP reale del visitatore, ma quello del proxy. Questo può rendere complesso monitorare il traffico reale verso il sito. Grazie al modulo remoteip di Apache, è possibile ripristinare l'indirizzo IP originale del visitatore nei log. Questa guida illustra come abilitare e configurare correttamente il modulo remoteip per ottenere gli IP reali dei visitatori.

1. Abilitazione del modulo remoteip

Il modulo remoteip deve essere abilitato sulla macchina. Se non lo è già, è possibile attivarlo con il seguente comando:

sudo a2enmod remoteip

Questo comando consente di abilitare il modulo remoteip, necessario per sostituire l'indirizzo IP del proxy con l'IP originale del visitatore.

2. Configurazione del file di configurazione di Apache

È necessario aggiungere l'intestazione RemoteIPHeader al file di configurazione di Apache per specificare quale header HTTP contiene l'IP originale del visitatore. Con Cloudflare, viene utilizzata l'intestazione CF-Connecting-IP.

Si procede con l'apertura del file di configurazione del sito. Ad esempio, se il file di configurazione si trova in /etc/apache2/sites-available/sub.dominio.it-le-ssl.conf, è possibile modificarlo con il seguente comando:

sudo nano /etc/apache2/sites-available/sub.dominio.it-le-ssl.conf

All'interno del blocco , si aggiunge la seguente direttiva:

ServerAdmin webmaster@localhost
DocumentRoot /var/www/html
ServerName remoteip.andy.support
RemoteIPHeader CF-Connecting-IP
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined

Questa configurazione consente ad Apache di leggere l'header CF-Connecting-IP e registrare correttamente l'indirizzo IP originale del visitatore.

3. Aggiornamento del formato dei log di Apache

Per garantire che gli indirizzi IP siano correttamente registrati nei file di log, è necessario aggiornare il formato dei log di Apache. Di default, Apache utilizza il placeholder %h per indicare l'IP dell'host che si connette al server, ma questo potrebbe non riflettere l'IP originale del visitatore. È quindi opportuno sostituire %h con %a, che rappresenta l'IP effettivo corretto dopo l'elaborazione da parte del modulo remoteip.

Il file di configurazione principale di Apache /etc/apache2/apache2.conf deve essere modificato:

sudo nano /etc/apache2/apache2.conf

Si sostituiscono tutte le occorrenze di %h con %a nelle direttive LogFormat. Ad esempio, si modifica la riga seguente:

LogFormat "%h %l %u %t \"%r\" %>s %O \"%{Referer}i\" \"%{User-Agent}i\"" combined

in:

LogFormat "%a %l %u %t \"%r\" %>s %O \"%{Referer}i\" \"%{User-Agent}i\"" combined

In questo modo, gli indirizzi IP originali verranno correttamente registrati nei file di log.

4. Creazione del file di configurazione remoteip.conf

Se non è già stato creato, è necessario generare un nuovo file di configurazione chiamato remoteip.conf in /etc/apache2/conf-available/ per gestire le configurazioni globali del modulo remoteip.

Il file può essere creato eseguendo:

sudo nano /etc/apache2/conf-available/remoteip.conf

Al suo interno va inserita la seguente configurazione:

RemoteIPHeader CF-Connecting-IP
RemoteIPTrustedProxy 127.0.0.1

Questa configurazione indica ad Apache di fidarsi dell'header CF-Connecting-IP fornito da Cloudflare, oltre che del server stesso (127.0.0.1), che potrebbe fungere da proxy locale.

5. Abilitazione del file di configurazione remoteip.conf

Per abilitare la configurazione appena creata, si utilizza il comando:

sudo a2enconf remoteip

Questo comando attiva il file di configurazione remoteip.conf, applicando le modifiche al modulo remoteip.

6. Test della configurazione di Apache

Prima di riavviare Apache, è consigliabile eseguire un test della configurazione per verificare che non siano presenti errori di sintassi. Questo può essere fatto con il comando:

sudo apache2ctl configtest

Se tutto è configurato correttamente, verrà visualizzato il messaggio Syntax OK.

7. Riavvio di Apache

Solo se il test di configurazione ha avuto esito positivo (Syntax OK), è possibile riavviare Apache per applicare tutte le modifiche eseguite:

sudo systemctl restart apache2

Conclusione

Seguendo questi semplici passaggi, è possibile configurare correttamente il modulo remoteip su Apache per ripristinare l'indirizzo IP originale dei visitatori, anche quando si utilizza un servizio di proxy come Cloudflare. Questa configurazione è essenziale per garantire che i log siano accurati, migliorando la gestione e la sicurezza del server.