Drupal y CloudFlare (x-forwarded-for y las ip que no se ven)

Esto no quiere ser un manual o escrito rigurosamente técnico, pretendo, en lo básico, que sea una ayuda rápida para quien necesite que Drupal lea la ip, supuestamente real, de la solicitud al sitio. Si se requiere información mas técnica o concreta hay mucho en la web y en el mismo sitio de ayuda de Drupal.

De manera predeterminada Drupal (CMS drupal.org) no lee los encabezados x-forwarded-for. Entre otras cosas puede resultar una discordia si se tiene la loca idea de controlar algo teniendo en cuenta la ip del visitante. Todos los pedidos al sitio los hace CloudFlare por lo que la ip que ve Drupal es la de este ultimo y no la original del usuario. Para tal loca necesidad, la de saber la ip del usuario, debemos pedirle a Drupal que mire el encabezado x-forwarded-for.

Donde ?, Donde ?

simple: editar “settings.php”, y agregar dos lineas:

$settings[‘reverse_proxy’] = TRUE;

$settings[‘reverse_proxy_addresses’] = [‘173.245.48.0/20’,‘103.21.244.0/22’,‘103.22.200.0/22’,‘103.31.4.0/22’,‘141.101.64.0/18’,‘108.162.192.0/18’,‘190.93.240.0/20’,‘188.114.96.0/20’,‘197.234.240.0/22’,‘198.41.128.0/17’,‘162.158.0.0/15’,‘172.64.0.0/13’,‘131.0.72.0/22’,‘104.16.0.0/13’,‘104.24.0.0/14’];

listo. esto debería estar funcionando.

con una “vuelta de tuerca”:

todo esta explicado en el mismo archivo “settings.php” (a partir de la linea 343)

en “$settings[‘reverse_proxy’] = TRUE;” le decimos a Drupal que esta detrás de un “Proxy Inverso” que para nuestro caso es una de las funciones que cumple CloudFlare y, para este caso, justamente la que nos interesa.
en “$settings[‘reverse_proxy_addresses’] =…” le decimos a Drupal cuales son las direcciones ip el “Proxy Inverso” en este caso la lista de direcciones ip que usa CloudFlare.

el archivo en cuestión, “settings.php”, suele estar dentro de la carpeta “default” que encontramos dentro de “sites”. ( /public_html/sites/default/settings.php ).
si se tiene un Drupal configurado como sitio múltiple, “MultiSite” distintos dominios o subdominios con distintas configuraciones de Drupal, se debe editar cada archivo “settings.php” de cada sitio (en MultiSite, si bien tenemos una única instalación, Drupal funciona de manera totalmente independiente para cada dominio).

supongo que esta mas o menos claro. minimamente da una idea para buscar info al respecto.

agradezco la buena voluntad de quien encuentre un grosero error en esta explicación, sobre todo si puede comprometer la seguridad de algún sitio, y lo comente o aclare mejor, supongo que acá debajo. si no lo hace no le agradecemos nada.

espero sea util.

1 Like