alexmontoanelli

a place to have some fun..

Squid Multiple Remote Denial of Service Vulnerabilities

Bugtraq ID:35812
Class:Unknown
CVE: CVE-2009-2621 – CVE-2009-2622
Remote:Yes
Local:No
Published: Jul 27 2009 12:00AM
Updated: Jul 28 2009 06:15PM

Credit: Alex Montoanelli of www.unetvale.net, Rob Middleton of Centenary Institute, Tuomo Untinen, Ossi Herrala, and Jukka Taimisto from the CROSS project at Codenomicon Ltd.

Vulnerable: Squid Web Proxy Cache 3.1 5,Squid Web Proxy Cache 3.1 4,Squid Webroxy Cache 3.0,Squid Web Proxy Cache 3.1.0.11,Squid Web Proxy Cache 3.1,
Squid Web Proxy Cache 3.0.STABLE7,Squid Web Proxy Cache 3.0.STABLE6,Squid Web Proxy Cache 3.0.STABLE5,Squid Web Proxy Cache 3.0.STABLE4,Squid Web Proxy Cache 3.0.STABLE3,Squid Web Proxy Cache 3.0.STABLE2,Squid Web Proxy Cache 3.0.STABLE16,Squid Web Proxy Cache 3.0.STABLE13,Squid Web Proxy Cache 3.0.STABLE12,Squid Web Proxy Cache 3.0.STABLE1,MandrakeSoft Linux Mandrake 2009.1 x86_64,MandrakeSoft Linux Mandrake 2009.1,MandrakeSoft Linux Mandrake 2009.0 x86_64,MandrakeSoft Linux Mandrake 2009.0,MandrakeSoft Linux Mandrake 2008.1 x86_64,MandrakeSoft Linux Mandrake 2008.1,Debian Linux 5.0 sparc,Debian Linux 5.0 s/390,Debian Linux 5.0 powerpc,Debian Linux 5.0 mipsel,Debian Linux 5.0 mips,Debian Linux 5.0 m68k,Debian Linux 5.0 ia-64,Debian Linux 5.0 ia-32,Debian Linux 5.0 hppa,
Debian Linux 5.0 armel,Debian Linux 5.0 arm,Debian Linux 5.0 amd64,Debian Linux 5.0 alpha,Debian Linux 5.0

Not Vulnerable: Squid Web Proxy Cache 3.1.0.12,Squid Web Proxy Cache 3.0.STABLE17

Reference: SecurityFocus

July 29th, 2009 by alexm
Posted in linux | No Comments »

Cisco + Squid 2.6 + FreeBSD 6.3 = WCCP2

Buenas.

Depois de sofridas semanas apanhando para fazer essa implantação, lendo muito manual, snifando tudo que dava, lendo código da interface ‘GRE’ tá ai um mini how-to de com colocar tudo isso pra funcionar.

Pra quem não conheçe muito, WCCP (Web Comunication Cache Protocol ) é um protocolo criado pela Cisco que visa diminuir seu tráfego web, redirecionando eles para servidores Cache na sua rede, de forma transparente.

Ai você me diz, ‘tá mais eu já tenho isso com meu Linux/Bsd usando iptables/pf, tudo transparente e de forma perfeita’, então te respondo, e se teu Squid cair, oque acontece ? Sua navegação pára certo ?

Então com o wccp isso não acontece, pois o roteador antes de encaminhar os pacotes, verifica se existe algum servidor cache disponivel, se sim, ai então ele faz o redirecionameto do pacote, via tunel GRE, mantendo a requisição intacta.

A requisição chegando no Cache, então ela é redirecionada para a porta do Squid, usando a mesma técnica de proxy transparente que você já usa hoje. Se o squid tiver a página no cache, a mesma é devolvida para o cliente, se ele não tiver, então ele busca, cacheia, e devolve para o cliente.

Vamos lá, passos nescessários:

No Cisco, no modo ‘configure’ faça o seguinte:

ip wccp web-cache
interface fastEthernet 0/1 #sua interface LAN
ip wccp web-cache redirect in
exit
exit

Compile o kernel do BSD com suporte a gre, adicionando a seguinte linha no seu arquivo de configuração do kernel:

device                  GRE

Detalhes de como compilar um kernel BSD, você encontra aqui.

Após compilado e rebootado o Server vamos criar o tunnel GRE:

ifconfig gre0 create
ifconfig gre0 IP_DESTE_SERVER 10.20.30.40 \
       netmask 255.255.255.255 link1 link2 \
       tunnel IP_DESTE_SERVER IP_INTERFACE_WAN_DO_CISCO up

No Firewall no caso pf.conf, vá as seguintes linhas redirecionando o trafego para o squid:

rdr on gre0 proto tcp from any to any port www -> 127.0.0.1 port 3128

Agora a configuração do squid, adicione o seguinte no seu squid.conf

wccp2_router IP_LAN_CISCO
wccp2_forwarding_method 1
wccp2_return_method 1
wccp2_service standard 0
wccp2_address IP_DESTE_SERVER

Ok, restarte seu squid, e veja no cisco com o comando ‘show ip wccp’ se ele está registrado, você vê isso, no item ‘Number of Service Group’, se estiver igual a 1, muito bem, está tudo pronto, e em teoria funcionando. Só fazer a requisição que o router vai interceptar e enviar para o squid.

Lembre-se este é um exemplo bem simples, onde não há preocupação com segurança.
Você pode e deve, incrementar o cisco para permitir que apenas um grupo de Caches se registre nele, isso tudo via acl, e aplicando mais algumas regras no pf.conf para dar mais segurança ao servidor.

Um detalhe importante é a versão da IOS do Cisco.
Nesse exemplo foi usada a versão 12.4(18), versão antigas a 12.4.11, possuem alguns bugs, entre eles um que você deve criar uma acl para excluir o ‘cache’ da lista da rede a ser roteada, caso contrario entrará em loop.

Bom é isso, qualquer dúvida é só entrar em contato.

Abraços

June 18th, 2008 by alexm