Mostrando entradas con la etiqueta servidor. Mostrar todas las entradas
Mostrando entradas con la etiqueta servidor. Mostrar todas las entradas

jueves, 27 de julio de 2023

NGINX Reverse Proxy y Granja de Servidores IPv6 Only

 Introducción

En el presente trabajo presentaremos una manera muy sencilla de ofrecer acceso Web Dual Stack a una granja de servidores IPv6 Only utilizando NGINX. Con el crecimiento continuo de la red y la adopción gradual del protocolo IPv6, es esencial garantizar la conectividad y accesibilidad para aquellos clientes que utilizan tanto IPv4 como IPv6.


Explicaremos cómo configurar NGINX para admitir acceso web Dual Stack; veremos cómo configurar NGINX como un proxy inverso que escucha tanto en direcciones IPv4 como IPv6, y cómo direccionar correctamente las solicitudes entrantes a los servidores backend que solo tienen direcciones IPv6.  Por cierto, lo que estudiaremos en el siguiente artículo es un importante paso para lograr el ansiado ahorro de direcciones IPv4, entre muchos otros beneficios.



¿Qué es un reverse proxy?


Cloudflare define en [1] un Servidor Proxy Inverso o Reverso como:


“Un proxy inverso es un servidor que se sitúa delante de los servidores web y reenvía las solicitudes del cliente (por ejemplo, el navegador web) a esos servidores web. Los proxies inversos suelen implementarse para ayudar a aumentar la seguridad, el rendimiento y la fiabilidad. Para entender mejor cómo funciona un proxy inverso y las ventajas que puede aportar, definamos primero qué es un servidor proxy.”


¿Qué es un servidor proxy?


Nuevamente Cloudflare define en [1] un Servidor Proxy como:


“Un proxy de reenvío, con frecuencia conocido como proxy, servidor proxy o proxy web, es un servidor que se sitúa delante de un grupo de máquinas cliente. Cuando esos ordenadores realizan solicitudes a sitios y servicios en Internet, el servidor proxy intercepta esas peticiones y luego se comunica con los servidores web en nombre de esos clientes, como un intermediario.”



¿Cuáles son los beneficios de un Reverse Proxy?


  •     Ofrecer IPv4 o IPv6 transparente a clientes provenientes desde Internet servidos desde una granja de servidores IPv6 Only (en esto nos enfocaremos)


  •     Escalabilidad: Al utilizar un proxy inverso, es posible agregar o eliminar servidores backend según sea necesario sin afectar a los usuarios finales. Esto facilita la escalabilidad horizontal de las aplicaciones, lo que permite manejar un mayor número de solicitudes y usuarios simultáneos.


  •     Cacheo de contenido estático: NGINX puede almacenar en caché contenido estático como imágenes, archivos CSS y JavaScript, lo que reduce la carga en los servidores backend y acelera la entrega de contenido a los usuarios. Esto mejora el tiempo de carga de las páginas y reduce el ancho de banda necesario.


  •     Seguridad: NGINX actúa como un punto de entrada a la aplicación, lo que proporciona una capa adicional de seguridad. Puede realizar funciones como filtrado de solicitudes, prevención de ataques DDoS, protección contra inyecciones SQL y autenticación de clientes. Además, NGINX puede habilitar el uso de SSL/TLS para cifrar la comunicación entre los clientes y el servidor backend.


  •     Enrutamiento avanzado: Un proxy inverso permite realizar enrutamiento avanzado según diferentes criterios, como el nombre de dominio, la URL o las cabeceras HTTP. Esto es útil en casos donde se necesite dirigir el tráfico a diferentes servidores backend según las características de la solicitud.


  •     Consolidación de servicios: NGINX puede actuar como un punto de entrada único para varios servicios backend. Esto simplifica la infraestructura al consolidar múltiples servicios en un solo servidor, lo que facilita la administración y el mantenimiento.


  •     Mejora del rendimiento: NGINX está diseñado para ser liviano y eficiente en el uso de recursos. Su arquitectura optimizada y su capacidad para manejar grandes cantidades de conexiones simultáneas lo convierten en una opción popular para mejorar el rendimiento de las aplicaciones web.


  •  Balanceo de carga: Un proxy reverso como NGINX puede distribuir el tráfico entrante a través de varios servidores backend. Esto ayuda a equilibrar la carga de trabajo y garantiza que ningún servidor esté sobrecargado, lo que mejora el rendimiento y la capacidad de respuesta de la aplicación. 




Topología que vamos a usar



¿Qué vamos a lograr el día de hoy?

El servidor en el borde (Servidor Proxy Reverso) va a ser capaz de recibir peticiones HTTP en IPv4 e IPv6, y dependiendo del sitio Web que se desea visitar (dominio) re-enviará la consulta al servidor correcto. En el ejemplo actual ocurrirá lo siguiente:


El Cliente visita      Petición enviada a:

server-a.com   →   2001:db8:123::101

server-b.com   →   2001:db8:123::102

server-c.com   →   2001:db8:123::103



Prerrequisitos

  • Linux con Nginx en el Servidor Proxy Reverso 

  • Acceso super usuario

  • Servidor Web en cada uno de los servidores de la granja

  • Conectividad a Internet IPv4 e IPv6

  • Conectividad interna en IPv6


Manos a la obra

1) Instalar nginx en todos los servidores 

   #apt update

   #apt install nginx


2) Crear los sitios Web en el Proxy Reverso NGINX 


Archivo  /etc/nginx/sites-available/server-a.com


server {

listen 80;

listen [::]:80;


    server_name server-a.com;

    location / {

        proxy_pass http://[2001:db8:123::101];

    }


}



Archivo  /etc/nginx/sites-available/server-b.com

server {

listen 80;

listen [::]:80;


    server_name server-b.com;

    location / {

        proxy_pass http://[2001:db8:123::102];

    }


}




Archivo  /etc/nginx/sites-available/server-c.com

server {

listen 80;

listen [::]:80;


    server_name server-c.com;

    location / {

        proxy_pass http://[2001:db8:123::103];

    }


}



3) Crear links simbólicos para habilitar los sitios configurados:


root@ProxyReverseSRV:/etc/nginx/sites-enabled# ln -s /etc/nginx/sites-available/server-a.com /etc/nginx/sites-enabled/server-a.com


root@ProxyReverseSRV:/etc/nginx/sites-enabled# ln -s /etc/nginx/sites-available/server-b.com /etc/nginx/sites-enabled/server-b.com


root@ProxyReverseSRV:/etc/nginx/sites-enabled# ln -s /etc/nginx/sites-available/server-c.com /etc/nginx/sites-enabled/server-c.com



4) Recordemos reiniciar nginx:

$sudo systemctl restart nginx


Sobre los logs

Los registros de conexión (logs) son de suma importancia para cualquier empresa e ISP que desea realizar alguna revisión de las conexiones entrantes.

  Lo que ocurre es que NGINX por defecto utilizará su propia dirección IP cuando realice las conexiones salientes, lo que trae como consecuencia que se pierde la dirección del cliente que originó la solicitud HTTP.  Pero no se preocupen, NGINX tiene la solución, se llama proxy_set_header y la configuración se divide en el servidor final y en el servidor Proxy Reverso.


  1. En el Servidor Proxy Reverso, archivo del sitio web.


# Ejemplo de  nginx reverse proxy que permite conservar la dirección

# y puerto de original del cliente

location /examples {

  proxy_pass http://[2001:db8:123::103];

  proxy_buffering off;

  proxy_set_header X-Real-IP $remote_addr;

  proxy_set_header X-Forwarded-Host $host;

  proxy_set_header X-Forwarded-Port $server_port;

  proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

}


  1. En el servidor final en el archivo: /etc/nginx/nginx.conf agregar en la sección http lo siguiente:


   set_real_ip_from 2001:db8:123::100; #sustituir la dirección IP por la del Proxy

   real_ip_header X-Forwarded-For;

   real_ip_recursive on;


Ejemplo:


http {

    …

    set_real_ip_from 2001:db8:123::100;

    real_ip_header X-Forwarded-For;

    real_ip_recursive on;

   …

}


  Luego de estas configuraciones el servidor final confiará en la cabecera llamada X-Forwarded-For que provenga del IP 2001:db8:123::100 y en sus registros (/var/log/nginx/access.log) se podrá apreciar la dirección origen del cliente.



Conclusiones

Se puede percibir que con el diseño propuesto podemos administrar una granja de servidores web 100% IPv6 Only con acceso al mundo tanto IPv4 e IPv6 de una manera muy sencilla, escalable y eficiente. Lo anterior trae consigo diferentes beneficios tales como: administrar solo un stack TCP/IP, simplicidad, seguridad e incluso ahorro de direcciones IPv4.


Referencias



ortodoncia invisible madrid

miércoles, 6 de febrero de 2019

DNS: Bloquear o no bloquear las direcciones IPv6 6to4


Introducción
  El servicio de DNS es sin duda alguna uno de los pilares de Internet, sin DNS el Internet no sería ni remotamente como lo conocemos hoy en día.
  DNS es el servicio que permite -entre otras funciones- convertir nombres de dominios a direcciones IP y viceversa.


Sobre el proyecto IPv6 Open Resolvers:
  Dentro de Lacnic, desde comienzos del año 2018 [1] estamos en la búsqueda de servidores DNS sobre IPv6 que son consideraciones “Open Resolvers” [2]

¿Que tiene que ver 6to4 con Open Resolvers y seguridad?
  Durante el tiempo que tiene este proyecto en funcionamiento hemos tenido la oportunidad de exponer el estudio y sus resultados [3] en sitios como DNS-OARC 28 , LACNIC 29 y NANOG 74. En esta última, recibimos muy buenos comentarios y quizás el más significativo fue el de George Wes donde él indicaba la existencia de muchos servidores DNS con direcciones IP 6to4 [4] las cuales utilizan direcciones IP de túneles automáticos dentro del prefijo 2002::/16.
  En base a lo anterior, decidimos profundizar en este concepto y estudiar con más detalle los resolvers con direcciones IPv6 6to4 y obtuvimos información muy interesante.

  Por ejemplo, el día 2 de Diciembre del 2018 estudiamos: 6248 servidores, de los cuales 61 estaban contenidos en el prefijo 2002::/16, y de aquí tuvimos 20 servidores abiertos, es decir, casi un 33%. Todos ellos potenciales para realizar diferentes ataques de DNS como de amplificación, cache poisoning, DDoS, DNS hijacking, entre otros.

  Aquí tenemos dos gráficos de lo arriba expuesto:






   Conclusión
   Primero, el problema per sé no es el 6to4, son los Open Resolvers. Segundo, como administrador de servidores DNS ustedes deben querer responder a la mayor cantidad de queries posibles de clientes válidos, nuestra recomendación no se ajusta solo a redes 6to4, sino básicamente la implementación de RLL (Response Rate Limit) a los queries según el origen, claro prestarle mayor atención a las provenientes del prefijo 2002::/16 no es mala idea.

Referencias


vivo v15 pro
beautiful Rohini escorts for you

lunes, 21 de mayo de 2018

Todos los root servers DNS con soporte IPv6 - Un hito que pasó desapercibido

Introducción

En esta oportunidad quiero hablar sobre un detalle que considero pasó en el mundo de Internet desapercibido, tanto así que yo mismo ni me dí cuenta tarde.

Un poco de historia

Recientemente estuve revisando unas presentaciones de hace pocos años (aprox 2015) y noté que en las mismas mencionaban que solo 11 de los 13 root servers tenían direccionamiento IPv6. Por ello quise chequear y para mi sorpresa hoy -Mayo 2018- los 13 Root Servers cuentan con direccionamiento IPv6.
Los últimos nuevos glues IPv6 fueron modificados de la siguiente manera y en la siguiente fecha: 20 octubre 2016: g.root-servers.net . AAAA 2001:500:12::d0d 25 agosto 2016: e.root-servers.net . AAAA 2001:500:a8::e
Y fue anunciado el 2 de diciembre del 2016: http://root-servers.org/news/announcement-of-ipv6-addresses.txt
Actualmente los root servers tienen estas direcciones -Tomado de https://www.internic.net/domain/named.root -
A.ROOT-SERVERS.NET. 3600000 A 198.41.0.4
A.ROOT-SERVERS.NET. 3600000 AAAA 2001:503:ba3e::2:30
B.ROOT-SERVERS.NET. 3600000 A 199.9.14.201
B.ROOT-SERVERS.NET. 3600000 AAAA 2001:500:200::b
C.ROOT-SERVERS.NET. 3600000 A 192.33.4.12
C.ROOT-SERVERS.NET. 3600000 AAAA 2001:500:2::c
D.ROOT-SERVERS.NET. 3600000 A 199.7.91.13
D.ROOT-SERVERS.NET. 3600000 AAAA 2001:500:2d::d
E.ROOT-SERVERS.NET. 3600000 A 192.203.230.10
E.ROOT-SERVERS.NET. 3600000 AAAA 2001:500:a8::e
F.ROOT-SERVERS.NET. 3600000 A 192.5.5.241
F.ROOT-SERVERS.NET. 3600000 AAAA 2001:500:2f::f
G.ROOT-SERVERS.NET. 3600000 A 192.112.36.4
G.ROOT-SERVERS.NET. 3600000 AAAA 2001:500:12::d0d
H.ROOT-SERVERS.NET. 3600000 A 198.97.190.53
H.ROOT-SERVERS.NET. 3600000 AAAA 2001:500:1::53
I.ROOT-SERVERS.NET. 3600000 A 192.36.148.17
I.ROOT-SERVERS.NET. 3600000 AAAA 2001:7fe::53
J.ROOT-SERVERS.NET. 3600000 A 192.58.128.30
J.ROOT-SERVERS.NET. 3600000 AAAA 2001:503:c27::2:30
K.ROOT-SERVERS.NET. 3600000 A 193.0.14.129
K.ROOT-SERVERS.NET. 3600000 AAAA 2001:7fd::1
L.ROOT-SERVERS.NET. 3600000 A 199.7.83.42
L.ROOT-SERVERS.NET. 3600000 AAAA 2001:500:9f::42
M.ROOT-SERVERS.NET. 3600000 A 202.12.27.33
M.ROOT-SERVERS.NET. 3600000 AAAA 2001:dc3::35

¿Cómo algo tan importante pudo pasar desapercibido?

Desde nuestro punto de vista fue increíble que este hecho no tuviese más difusión, pero las cosas fueron así y no podemos hacer nada al respecto. Se nos ocurren algunas razones por qué hubo esa falta de difusión:
  1. IPv6 ya se encuentra tan avanzado y estable que no pasó a ser noticia. Por ejemplo, en el 2008 cuando se colocó la primera dirección IPv6 si existió mucha noticia por muchas listas de correo y otros medios.
  2. Algunas noticias pasan sin pena ni gloria sobretodo cuando no hay pena como en esta oportunidad (que viene a ser bueno !!)
    Una comparación que suena exagerada pero cala perfectamente en este contexto es cuando llegó el Apollo 11 a la luna en el año 1969, fue una gran noticia, en los posteriores proyectos Apollo ya la misma novedad no tenía mucho impacto.

¿Qué significa que ahora todos los Root Servers DNS cuenten con IPv6?

Para este renglón existen dos cosas que podemos mencionar que son muy significativas, 1) es un mensaje adicional a la comunidad que IPv6 es un protocolo estable y funcional 2) podemos esperar resoluciones más rápidas y con menores rata de falla.
Un punto adicional, es importante indicar que la ausencia de NAT en IPv6 dentro del mundo DNS tiene particular y mayor relevancia motivado a que los traductores no necesitan Natear las respuestas DNS.
Por último, esto también empuja a crear demanda por IPv6 en todo el mundo. No olvidemos que los root servers utilizan anycast desde hace muchos años, y cada uno de los más de 1.000 nodos tienen requerimiento de servicio IPv6 en las decenas de países y redes en que son hosteados.
El siguiente paso entonces es... ir apagando IPv4 en alguno de los root servers! ;)

Referencias

Por

Alejandro Acosta
Colaborador: Hugo Salgado

BGP Stream: un año de análisis sobre incidentes BGP

BGP Stream: un año de análisis sobre incidentes BGP 04/03/2024 Por  Alejandro Acosta , Coordinador de I+D en LACNIC LACNIC presenta  la prim...