Boa noite á todos, antes de iniciar o tópico, gostaria de lembrar que todo o esforço vale muito a pena ; ), pois passei na LPI 2 com 730/800 mtoo SHOW! (Felizaço).

 

Como demonstrado no artigo anterior, o WPAD facilita e muito a vida do administrador, porém pode surgir ainda alguns desafios para ambientes mais restritivos, alem e claro de amplos cenários com mais de um servidor proxy.

E e por isso. que dou continuidade no artigo, pois precisei de alguns recursos novos que não foram exemplificados anteriormente. Bom vamos ao problema primeiramente:

  1. Bypass de sites, domínios ou endereços IP’s independente de protocolo (HTTP, HTTPS, etc.)
  2. Bypass para alguns usuários específicos, possibilitando o uso de proxy somente para uma rede e outra não ou para um endereço específico.
  3. Forçar o usuário a usar proxy X se for da rede Y ou proxy Z se for da rede W.

 

Para solucionar os problemas, mudamos um pouco o script wpad.dat com algumas novas funções, portanto vamos a solução do problema 1:

if (isInNet(host, "200.215.44.244", "255.255.255.255")) return "DIRECT";

 

Na função “isInNet” deve ser especificado o endereço IP e a máscara de rede (255.255.255.255 (CIDR /32), caso seja um endereço e não um range), após a ação que o protocolo deve tomar, no caso usamos a função “DIRECT” que caso o usuário acesse este endereço via Browser não seria repassado ao proxy, mas também poderia ser usado a variável “proxy_no” como utilizado no tópico anterior.

Mas a função em si não resolveria caso o usuário digitasse no browser o nome DNS deste IP, pois com esta função especificamos somente um endereço ou range, a resolução não é feita por ele (pelo menos em meus testes não funcionaram corretamente).

if (localHostOrDomainIs(host, "200.215.44.244")) return "DIRECT";

 

Para resolver a questão 1, podemos utilizar tranquilamente a função “localHostOrDomainIs” que procura pelo endereço IP (não pelo range) diretamente ou resolvido através do DNS, a função é bem mais inteligente, porém não abrange um range de endereços, portanto pode-se utilizar os dois para satisfazer ambos os problemas : ).

Como disse anteriormente, há ambientes que possuem mais de um proxy (no meu caso), mas é realmente chato ficar configurando o browser do usuário o tempo todo para usar certo proxy ou aquele, até mesmo ficar mudando as regras de firewall para forçar o redirect de certo usuário, tornando a tarefa cansativa e lenta. Além disso, digamos que você precisa aplicar uma GPO para forçar o uso do proxy em toda a rede, MAS em todo o domínio há diversas redes que utilizam proxies distintos, há formas de se resolver, porém leva-se muito tempo e muitas vezes a solução não é 100%.

 

Para resolver o problema 2 e 3 segue o exemplo:

if (isInNet(myIpAddress(), "10.15.10.0", "255.255.255.0")) { return proxy_no ; }
if (isInNet(myIpAddress(), "10.15.11.0", "255.255.255.0")) { return proxy_yes ; }
if (isInNet(myIpAddress(), "10.15.12.2", "255.255.255.255")) { return proxy_yes2 ; }

 

A função “isInNet(myIpAddress())” identifica qual é o endereço IP do usuário pelo browser e aplica as ações para um range ou endereço específico. Vendo por este lado, fica fácil colocarmos quantos servidores proxy quisermos, criando variáveis no início do arquivo , como por exemplo:

var proxy_yes = "PROXY 10.15.11.10:8080";
var proxy_yes2 = "PROXY 10.15.12.10:3128";

 

Desta forma, especificamos que a rede “10.15.10.0” não passará pelo proxy, a rede “10.15.11.0” utilizará o proxy 1 (10.15.11.10) e o endereço IP “10.15.12.2” utilizará outro proxy. Neste caso as restrições de filtro são feitas pelo proxy ou um filtro de conteúdo a parte como “dansGuardian, WebSense, squidGuard, etc”.

 

Há outras funções interessantes que podem ser utilizadas no script, porém estas são as mais usadas e que provavelmente encaixarão em seu ambiente : ).

Mais informações sobre outras funções??

Referência: http://findproxyforurl.com/

 

Espero ter ajudado as pessoas que procuram tanto este assunto, porém há sempre um pouco de informação em cada site, mas agora.. centralizado!

Att.
Heitor Lessa

Anúncios