Proxy Invertido usando Squid para cualquier servidor WEB ( Apache, IIS, ETC )
By: Date: julio 1, 2011 Categories: Consultoria y Manuales,Hackers, Tools y Retos

En el articulo anterior de el fracaso de Anonymous contra Iniciativa México, un comentario proveniente de Armando, me pregunta si la cueva esta preparada para un ataque de Anonymous.

Es muy difícil prepararse para millones de conexiones, no se trata de no saber como defender la cueva, se trata de infraestructura y dinero, el conocimiento lo tengo, aunque no tanto dinero como para armar una infraestructura como la de televisa, aquí voy a mostrar como armar un sitio distribuido con proxy inverso, la combinación que puso en jaque a Anonymous, según sus propias declaraciones. Sin embargo con mis conocimientos y las redes que tengo bajo mi control creare la distribución de carga junto proxy invertido, anonymous no pudo con 5 servidores distribuidos, yo solo usare 3 por que es lo que tengo en este momento disponible a la hora de escribir el articulo.

Requerimiento 1

1 Configurar tu servidor WEB para escuchar en un puerto diferente al 80, yo usare en este articulo el 85, el puerto 80 lo usara el SQUID para Proxy Invertido

2 evitar que las conexiones lleguen al puerto 85 de forma directa, solo los proxys deben alcanzar este puerto, si es posible por medio de VPN, para este ejemplo no usare VPN, pero sería lo ideal

3 Los usuarios ni los atacantes deben conocer la IP real del servidor, en este caso no voy a ocultarla, la ip real al momento de escribir esto es 189.204.51.51, pero en una zona militarizada, no debe conocerse, por eso se usan VPN ya que todos los atacantes están ciegos, no saben donde está el servidor realmente y como le paso a Anonymous, intentaran atacar IPs al azar, pero son superficiales, jamás tocaron la ip real, no la conocen ni la conocerán

Requerimiento 2

Contar con los servidores a los cuales de preferencia, se les debe instalar GNU/Linux y el software de proxy inverso, yo uso SQUID, se configuran de forma similar, según el caso en el archivo squid.conf

http_port 80 accel defaultsite=www.lastdragon.net vhost
forwarded_for on

cache_peer 189.204.51.51 parent 85 0 no-query no-digest originserver name=apache login=PASS
acl sites_apache dstdomain www.lastdragon.net lastdragon.net
acl our_sites dstdomain www.lastdragon.net lastdragon.net
cache_peer_access apache allow sites_apache

acl all src 0.0.0.0/0.0.0.0
acl manager proto cache_object
acl localhost src 127.0.0.1/255.255.255.255
acl to_localhost dst 127.0.0.0/8
acl SSL_ports port 443
acl Safe_ports port 80 # http
acl CONNECT method CONNECT

http_access allow our_sites

http_access allow manager all
http_access allow manager
http_access deny !Safe_ports
http_access deny CONNECT !SSL_ports
http_access deny all

access_log /var/log/squid/access.
cache_mgr david@lastdragon.net

Repites la configuración que de hecho será idéntica en cada servidor que vayas sumando para distribuir la carga, desde 2 hasta N cantidad

Requerimiento 3

Configuración de tu DNS como round robin para que resuelva en cada vez una de las ips del arreglo, cada ip es uno de los servidores distribuidos

Para este articulo la configuración es de 3 servidores para distribuir la carga

Non-authoritative answer:
Name: www.lastdragon.net
Address: 189.204.51.51
Name: www.lastdragon.net
Address: 75.125.15.77
Name: www.lastdragon.net
Address: 174.123.118.202

Video demostrando la situación.

Otros beneficios que ocurren al usar proxy inverso en sitios distribuidos, cada Proxy almacena un cache de la pagina WEB que despacha, incluso si es un proxy inverso, esto significa que el Squid no va a molestar al servidor WEB, mientras la pagina no cambie, cada vez que haga un cliente una consulta, será despachada directamente por el proxy dejando fresco al servidor WEB, si recibe un ataque SYNCOOKIE, será el servidor WEB quien reciba de frente el golpe lo mismo con conexiones TCP, si estas no son validas para un servidor WEB, el Proxy no las transfiere al servidor WEB, por lo que se mantiene muy fresco y sin estrés el servidor WEB, esta protección es exponencial, mientras mas proxys inversos estén arreglados para un sitio, este sitio soportara mejor los ataques DDoS

Durante unos días estará funcionando el Proxy Inverso en la cueva del dragón con carga distribuida.

17 thoughts on “Proxy Invertido usando Squid para cualquier servidor WEB ( Apache, IIS, ETC )

  1. Safari 6533.18.5 iOS 4.3.1

    Checate nginx,lo he estado usando para balanceo de cargas y funciona excelente,implementa el mismo un mecanismo de roundrobin y puedes redireccionar ciertas ip o rangos a servidores en especifico y también implementa cache,no se que tantas features lo diferencia de squid,pero funciona bastante bien,si usas la opción iphash y tienes un ataque por igual mandas todos los ataques a la fregada redireccionandolos al vacío je je.

  2. Mozilla Firefox 4.0.1 Linux

    Si he oído buenos comentarios de nginx, aunque el articulo es para hacerlo y aplicarlo a cualquier web server como una solucion general, igual vere que ofrece el nginx

  3. Google Chrome 12.0.742.112 Windows 7

    Buenísima solución, esta no me la sabía! 😀

    Aunque tengo una duda, por ejemplo tu que llevas un log de las últimas IPs conectadas ahora solo te registra las IPs de los proxys, existe alguna forma de realmente guardar la IP del visitante?

  4. Internet Explorer 9.0 Windows 7

    Rodrigo

    Si se siguen almacenado solo que ahora los logs los cruzo con los logs de squid, tendria que reprogramar mi logeador de ips para que las tome de squid, pero como es temporal solo como muestrade que uncion en produccion, no tiene cao en unos dias lo regreso a lo normal

  5. Mozilla Firefox 4.0.1 Windows 7

    Anonymous no ataca esta clase de sitios, va en contra de nuestros intereses y en contra de nuestros ideales. Saludos a LastDragon y buena vibra para todos. Red libre por siempre.

  6. Google Chrome 14.0.835.202 Windows XP

    Yo tuve un problema con un servidor Apache 2.2 montado en un sistema operativo windows 2003 server, constantes ataques DDOS ponian lenta la web, entonces despues de investigar tuve dos alternativas , la primera un servidor Linux con Nginx como servidor Web. y la Segunda permanecer el servidor Apache bajo windows pero instalando tambien un nginx pero como proxy en el puerto 80 y la el apache en el 8080, desinstale IIS y ya van varios dias sin problemas, y las paginas estan mucho mas rapidas ( esta segunda alternativa la tengo implementada hasta que tenga lista la primea)

  7. Mozilla Firefox 20.0 Ubuntu Linux

    esto puede permitir a usuarios de una red accesar de forma externa a recursos limitados a la red interna estos recursos no pertenecen a la red sino que son sitios web independientes con filtrado de ip? espero puedas ayudar

  8. Google Chrome 48.0.2564.82 Linux

    El balanceador de carga HAproxy para estos casos es lo mejor. y sobre todo, lo que es mejor aun es separar todos los servicios (BBDD, frontales web, etc…)

  9. Mozilla Firefox 50.0 Ubuntu Linux

    yo puedo usar squid como proxy inverso y normal, o sea una honda bidireccional?? que escucha trafico de un lado para otro??

Responder a Alexander Cancelar respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *