Re: consulta X-Forwarded-For de Apache

2020-06-08 Por tema Camaleón
El 2020-06-08 a las 12:17 +0200, miguel angel gonzalez escribió:

(...)

> @camaleon:
> ¿No sería más conveniente guardar la IP del cliente y la de los
> proxies, y procesar/filtrar después ese registro para que te muestre
> sólo la IP que quieres?
> 
> Pues si no encuentro otra solución va a ser la opción.

Por aquí¹ indican esa vía pero sobre un servidor Nginx, quizá te dé 
alguna pista. Básicamente proponen hacer un «grep» de la variable que 
contiene las IP en formato de lista separada por comas y mapear la 
nueva variable al log combinado con el resultado de la extracción.

> Sigo buscando porque la opción que comentas de «%h» por «%a» la probé y no
> es exactamente lo que busco.

El tutorial que has seguido lo que permite es que la IP del cliente se 
registre tembién en el log de Apache, y eso es precisamente lo que has 
conseguido... pero no es lo que buscabas :-)

¹ 

Saludos,

-- 
Camaleón 



Re: consulta X-Forwarded-For de Apache

2020-06-08 Por tema miguel angel gonzalez
Hola Ángel,

Justo es lo que comento, sólo como prueba:
Con remoteip añadir ese servidor a un listado* (sólo como prueba porque no
es un servidor confiable por lo menos no nos pertenece a nosotros)*
La idea no es mía, es necesario ya que se procesa el fichero después por
otra aplicación, es decir, sólo necesito la ip final del cliente no por los
servidores que pasa.

@camaleon:
¿No sería más conveniente guardar la IP del cliente y la de los
proxies, y procesar/filtrar después ese registro para que te muestre
sólo la IP que quieres?

Pues si no encuentro otra solución va a ser la opción.

Sigo buscando porque la opción que comentas de «%h» por «%a» la probé y no
es exactamente lo que busco.

Gracias, un saludo.

El lun., 8 jun. 2020 a las 4:53, Ángel (<
debian-user-span...@debian.16bits.net>) escribió:

> On 2020-06-07 at 18:03 +0200, miguel angel gonzalez wrote:
> > Localizado donde está el problema, esa ip de la derecha es un proxy
> > por el que pasa pero en el log necesito que sólo registre la del
> > cliente final, la de la izquierda.
>
> No. Lo que pretendes hacer es muy mala idea.
>
> Lo que deberías hacer es, o bien guardar las dos direcciones IP (o tres,
> o cinco...), indicando que la conexión vino de X, que afirmó estar
> haciendo de proxy para Y. O guardar solo la IP de ese proxy desconocido.
>
> El motivo es muy simple. Si te fias de cualquiera que diga ser un proxy,
> y le crees el cliente que afirma ser el responsable e la petición, es
> posible falsear la dirección de origen. Solo debes creerte la cabecera
> de X-Forwarded-For si la dirección anterior de la que te viene (sea de
> esa cabecera, o la ip que se conecta) es de un proxy de confianza (por
> ejemplo, sabes que tu balanceador te da la dirección real).
>
> Un saludo
>
>

-- 
/m.a.


Re: consulta X-Forwarded-For de Apache

2020-06-07 Por tema Ángel
On 2020-06-07 at 18:03 +0200, miguel angel gonzalez wrote:
> Localizado donde está el problema, esa ip de la derecha es un proxy
> por el que pasa pero en el log necesito que sólo registre la del
> cliente final, la de la izquierda.

No. Lo que pretendes hacer es muy mala idea.

Lo que deberías hacer es, o bien guardar las dos direcciones IP (o tres,
o cinco...), indicando que la conexión vino de X, que afirmó estar
haciendo de proxy para Y. O guardar solo la IP de ese proxy desconocido.

El motivo es muy simple. Si te fias de cualquiera que diga ser un proxy,
y le crees el cliente que afirma ser el responsable e la petición, es
posible falsear la dirección de origen. Solo debes creerte la cabecera
de X-Forwarded-For si la dirección anterior de la que te viene (sea de
esa cabecera, o la ip que se conecta) es de un proxy de confianza (por
ejemplo, sabes que tu balanceador te da la dirección real).

Un saludo



Re: consulta X-Forwarded-For de Apache

2020-06-07 Por tema Camaleón
El 2020-06-07 a las 18:03 +0200, miguel angel gonzalez escribió:

> Estoy con un problema puntual en Apache, tengo un servidor Apache detrás de
> un balanceador,
> para obtener la ip real del cliente he configurado X-Forwarded-For, pero a
> veces registra el log dos ip's
> 
> *35.195.xxx.xxx*, *35.195.xxx.xxx* - [06/Jun/2020:11:50:14 +0200] "POST
> /Aplicación/web HTTP/1.1" 200 405 "-" "Go-http-client/1.1"
> 
> En el ejemplo anterior son la misma otras veces son diferentes.
> Buscando por internet localizo esto:
> 
> X-Forwarded-For: , , 
> 
> La dirección IP del cliente , 
> Si una solicitud pasa por varios proxies, las direcciones IP de cada
> proxy se listan en forma sucesiva.
> Esto significa que la IP de más a la derecha es la IP del proxy más
> reciente, y la IP de más a la izquierda es la IP del cliente
> originador.
> 
> https://developer.mozilla.org/es/docs/Web/HTTP/Headers/X-Forwarded-For
> 
> Localizado donde está el problema, esa ip de la derecha es un proxy por el
> que pasa pero en el log necesito que sólo registre la del cliente final, la
> de la izquierda.

No te recomendaría alterar los registros originales del servidor web, 
te pueden hacer falta. 

¿No sería más conveniente guardar la IP del cliente y la de los 
proxies, y procesar/filtrar después ese registro para que te muestre 
sólo la IP que quieres?

> He probado varios escenarios pero no me funcionan:

(...)

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

(...)

Apache doesn't log remoteIP when RemoteIPHeader X-Forwarded-For is 
present


Apuntan a cambiar «%h» por «%a».

Pero con eso conseguirás que almacene todas las IP, entiendo que no es lo que 
buscas, 
pues sólo quieres una IP, la del cliente.

Sólo se me ocurre, pero no lo recomiendo, ver si el servidor web te 
permite manipular (filtrar) los registros que genera antes de que se 
guarden en el disco. Con cualquier aplicación de manipulación de textos 
(p. ej., awk) podrías recortar las IP que no quieras y quedarte con el bloque 
que 
necesites.

Saludos,

-- 
Camaleón 



consulta X-Forwarded-For de Apache

2020-06-07 Por tema miguel angel gonzalez
Buenos días,
Estoy con un problema puntual en Apache, tengo un servidor Apache detrás de
un balanceador,
para obtener la ip real del cliente he configurado X-Forwarded-For, pero a
veces registra el log dos ip's

*35.195.xxx.xxx*, *35.195.xxx.xxx* - [06/Jun/2020:11:50:14 +0200] "POST
/Aplicación/web HTTP/1.1" 200 405 "-" "Go-http-client/1.1"

En el ejemplo anterior son la misma otras veces son diferentes.
Buscando por internet localizo esto:

X-Forwarded-For: , , 

La dirección IP del cliente , 
Si una solicitud pasa por varios proxies, las direcciones IP de cada
proxy se listan en forma sucesiva.
Esto significa que la IP de más a la derecha es la IP del proxy más
reciente, y la IP de más a la izquierda es la IP del cliente
originador.

https://developer.mozilla.org/es/docs/Web/HTTP/Headers/X-Forwarded-For

Localizado donde está el problema, esa ip de la derecha es un proxy por el
que pasa pero en el log necesito que sólo registre la del cliente final, la
de la izquierda.
He probado varios escenarios pero no me funcionan:
1) Con remoteip añadir ese servidor a un listado (sólo como prueba porque
no es un servidor confiable)
https://www.globo.tech/learning-center/x-forwarded-for-ip-apache-web-server/

2)Por último he probado con SetEnvInf
Hay varios cambios que va a querer hacer en el formato predeterminado para
registrar la dirección ip del cliente X-Forwarded-For o la dirección ip
real del cliente si el encabezado X-Forwarded-For no existe.
Esos cambios se indican a continuación:
En apache.conf
1 LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\""
combined
2 LogFormat "%{X-Forwarded-For}i %l %u %t \"%r\" %>s %b \"%{Referer}i\"
\"%{User-Agent}i\"" proxy
3 SetEnvIf X-Forwarded-For "^.*\..*\..*\..*" forwarded
En el virtualhost:
4 CustomLog "logs/access_log" combined env=!forwarded
5 CustomLog "logs/access_log" proxy env=forwarded
https://www.techstacks.com/howto/log-client-ip-and-xforwardedfor-ip-in-apache.html

Dejo los enlaces consultados que he aplicado, he consultado otros tantos
pero por no enmarañar el hilo.
¿Se os ocurre alguna idea? Normalmente registra sólo una ip del cliente
pero dos o tres clientes pasan por un proxy y registra dos ip' s.

Muchas gracias, un saludo.

-- 
/m.a.