martes, mayo 30, 2006

SNMP y Squid

Para ver los diferentes parametros que podemos monitorizar con squid en mrtg.

snmpwalk host:3401 -v 1 -c public .1.3.6.1.4.1.3495 -m /usr/local/squid/share/mib.txt

Para lo que previamente tendremos que haber configurado el acceso snmp en squid.conf
para que permita consultas a host.

viernes, mayo 19, 2006

Ocultar la versión de squid

Para ocultar la versión de squid que se muestra en una página de error;

Edita src/errorpage.c
Linea:69 :)

>De
"Generated %T by %h (%s)\n"
a
"Generated %T by %h \n"

Y vuelve a compilar squid.

Update on 6th September
From 2.6Stable1 it's available the httpd_supress_version_string directive (default off)

Bloquear Malware con Squid

Hoy en día existen URLS que ocultan todo tipo de efectos dañiños tales como Virus, troyanos gusanos y todo lo denominado malware.
Un usuario desea saber como se puede conseguir con squid filtrar archivos peligrosos por su extensión, pero las típicas reglas que bloquean
\.com$
\.scr$
\.bat$
estas extensiones no sirven cuando hoy en día existen multitud de técnicas para ocultar archivos en urls tales como
http://www.mikes.educv.ro/albums/cartao.scr?4d325356ae47122a6e7b8f1f07cae26d
La solución para esto pasa por integrar squid con listas de URLs disponibles para él.
Aquí se explica la configuración de squid.

jueves, mayo 11, 2006

SELINUX y SQUID

Un usuario de squid pregunta que su proxy no le permite navegar por sitios diferentes a los conectados a través del puerto 80, por ejemplo a un puerto destino 2004.
Habiendo habilitado localmente el squid para que se lo permita, sigue sin poder, pero ve un log tal que asi;


>> kernel: audit( 1147336762.851:321): avc: denied
>> >> > > { name_connect } for pid=10074 comm="squid" dest=2004
>> >> > > scontext=root:system_r:squid_t:s0
>> tcontext=system_u:object_r:port_t:s0
>> >> > > tclass=tcp_socket

La solución es deshabilitar la política SELINUX que tiene en el sistema y provoca que no le permita a squid crear conexiones salientes a puertos diferentes del web.

Otra solución menos sencilla sería actualizar la política de SELINUX para squid.

viernes, mayo 05, 2006

Conceptos varios -squid- -proxy-

Squid es un proxy cache de HTTP, no de otros protocolos. Sólo clientes HTTP (principalmente servidores web) pueden usar squid, y sólo para cosas que puedan ser encapsuladas a través de HTTP (HTTP, HTTPS, FTP and Gopher).

Squid puede coexisistir felizmente con proxys de otros protocolos si así es necesario. No hay conflictos posibles en ejecutar varios tipos de proxys en un mismo servidor (respetando unas reglas básicas.)

SSL en squid proxy normal
Https es el metodo CONNECT, es un caso especial de protocolo tunelizado a traves
del proxy, no proxyado.

Nat puede ser utilizado en muchos casos en sustitución de proxy, Nat es simple, ligero, y trabaja con la mayoría de las cosas, (no es estrictamente compliant con el protocolo TCP/IP, fuerza ligeramente algunas reglas). Es una técnica muy común en pequenas redes y redes caseras para compartir la conexión a internet. Por ejemplo NAT es lo que llevan todos aquellos routers de "banda ancha" que puedes encontrar en tu tienda de ordenadores más cercana.

Socks es un método de proxy genérico para TCP/IP y está bien soportado en la mayoría de clientes. Winsock es una variante extendida especifica para el nivel de transporte del proxy de operaciones de red en aplicaciones windows.

La diferencia entre Nat y proxy, es que NAT se tiene lugar a nivel de paquete reescribiendo los paquetes conforme viajan hacia y desde internet , mientras que los proxys operan al nivel de protocolo de aplicación (con la excepción de socks que pueden estar situados más cerca del nivel de la capa de transporte, pero no se complica mucho las cosas).

Resumiendo:

- Existen proxis de aplicación específicos como squid que tienen una gran conocimiento del protocolo HTTP y añade funcionalidades extra más alla de la simple compartición de la conexión a internet.

- Socks es un tipo de proxy de protocolo genérico. Normalmente hace poco más que de pasarela para el tráfico y quizas un poco de control de acceso sobre quien puede utilizarlo.

miércoles, mayo 03, 2006

Forzando HTTPS

En una configuración de squid en modo reverse-proxy, ¿es posible forzar una conexión no segura para que sólo sea segura?. De la forma;

http://site.com/user (http o https)

http://site.com/admin (sólo https)

Con apache, la solución es trivial.
Pero en squid, tambien se puede conseguir con un redirector.

Otra solución es utilizar la ACL myport para diferenciar entre las peticiones aceptadas en los diferentes puertos. (443 y 80). De esta forma, se pueden denegar accesos HTTP a recursos que sólo pueden ser accedidos mediante HTTPs y con la ayuda de deny_info crear una redirección automática al https.

No tiene sentido tener un proxy delante de un servidor web que sólo hace de pasarela de las peticiones HTTPs. Para ello vale más publicar el puerto HTTPs del servidor web directamente en internet mediante NAT o similar.

(al hilo con el post anterior)
Uno de los principales beneficios de terminar las conexiones SSL en el reverse proxy, es que el servidor web no necesita manejar la carga de SSL y se puede centrar en su propósito principal, que es servir contenido. Tambien permite el cache de el contenido del servidor web, en el reverse proxy, reduciendo la carga en el backend.
La desventaja, es que no tienes forma de saber que la URL que el cliente solicito era HTTPs, ya que la petición que llegó al servidor web fué HTTP.
Esto si es necesario para estadísticas de acceso y demás, se puede solucionar colocando el pgrograma de análisis de logs en el reverse proxy.