Configuración de Apache para recibir la IP final detrás de un proxy

Artículos Guías Manuales Sistemas Linux Windows Binario 0

Guía paso a paso para activar la recepción de la IP final en Apache cuando estás detrás de un proxy, modificando los registros de logs y activando el módulo mod_remoteip. Esto se aplicará globalmente a través del archivo apache2.conf:

Paso 1: Habilitar el módulo mod_remoteip

  1. Abre una terminal en tu servidor.
  2. Ejecuta el siguiente comando para habilitar el módulo mod_remoteip:

    sudo a2enmod remoteip
  3. Reinicia Apache para cargar el módulo:

    sudo systemctl restart apache2

Paso 2: Configurar el archivo apache2.conf

  1. Abre el archivo de configuración principal de Apache:

    sudo nano /etc/apache2/apache2.conf
  2. Añade las siguientes directivas al final del archivo para configurar mod_remoteip:

    # Configuración para obtener la IP real del cliente final
    RemoteIPHeader X-Forwarded-For
    RemoteIPTrustedProxy 192.168.1.1 10.0.0.1 # Sustituye por las IPs de tus proxies confiables
    RemoteIPProxyProtocol On

    # Redefinir los formatos de logs para registrar la IP real del cliente
    LogFormat "%a %l %u %t \"%r\" %>s %O \"%{Referer}i\" \"%{User-Agent}i\"" combined
    LogFormat "%v:%p %a %l %u %t \"%r\" %>s %O \"%{Referer}i\" \"%{User-Agent}i\"" vhost_combined
    • RemoteIPHeader: Especifica el encabezado HTTP que contiene la IP original del cliente (usualmente X-Forwarded-For).
    • RemoteIPTrustedProxy: Define las IPs de los proxies confiables. Sustituye las IPs por las de tu red. (Esto es opcional)
    • RemoteIPProxyProtocol On: Habilita el uso del protocolo de proxy remoto.

Paso 3: Verificar la configuración de logs

Si deseas que la configuración de logs se aplique globalmente:

  1. Busca en el archivo apache2.conf las líneas relacionadas con LogFormat y CustomLog.
  2. Modifica o reemplaza las directivas existentes para usar el nuevo formato combined o vhost_combined que incluye %a (la IP real del cliente):

    CustomLog ${APACHE_LOG_DIR}/access.log combined

Esta linea también podemos encontrarla en los virtual hosts que tengamos configurados, pero solo definirlo en uno de los dos sitios.

Paso 4: Reiniciar Apache

Aplica los cambios reiniciando Apache:

sudo systemctl restart apache2

Paso 5: Verificar la configuración

  1. Realiza una solicitud HTTP desde un cliente detrás del proxy.
  2. Revisa los registros de acceso para confirmar que ahora se registra la IP real del cliente:

    sudo tail -f /var/log/apache2/access.log

    Deberías ver la IP real del cliente registrada en lugar de la IP del proxy.

Con estos pasos, la configuración estará habilitada globalmente en tu servidor Apache, independientemente de los hosts virtuales configurados.