MAL - Memória Auxiliar do Lutieri

quarta-feira, fevereiro 07, 2007

Gtalk liberado para poucos

Introdução:

Recentemente postei a respeito do bloqueio do Gtalk integrado no Gmail. Consegui bloquear o acesso.
Não demorou uma semana e tem gente aqui na empresa que arrumou uma justificativa pra usar o mesmo... hehehe
assim como já tiveram aqueles que justificaram o uso do google earth.. uaheua mas enfim.. eu só executo ;-)

Meu cenário:


                                                          `.....`    
``` `..
`- -
````````````` ```` `-`
- - .` `.`
- LAN - `. . Internet -
- - .. `.
- - : -`
```````:````` - `.
- .` ...``````.`
- `.````..` ````
- .```````````````- ````-
- - - -
- - - -
- - FIREWALL - -
..````````````````.: + -```````````````````-
- Proxy(Squid) -
- ` `````` -
- -
- -
.```````````````.


O desenho eu coloquei só porque achei bunitinho e dá um outro ar ao blog =)

Como as coisas funcionam:

Todas as conexões são encaminhadas para o proxy. Ele por sua vez, acessa o conteúdo na "rua" e devolve pra quem fez a solicitação. Portanto, os clientes que estão atrás do proxy não tem contato direto com a internet. Isso todos sabemos =)

Portanto para bloquear o Gtalk quando se está usando um proxy é só negar na Chain OUTPUT o acesso a chatenabled.mail.google.com(acho que é isso). Com isso o proxy não vai conseguir consultar a internet.


Problema:

Como eu disse no início eu preciso fazer a liberação o Gtalk para algumas criaturinhas aqui, lê-se usuários. =)


Façamos uma análise:

Quem acessa a internet é o Squid e não o cliente diretamente. certo?! sim.

Quando alguém quiser teclar no GTalk no pacote tcp o endereço de origem vai ser o do próprio squid ex.: 200.1.2.3 e o endereço de destino vai ser chatenabled.mail.google.com (64.233.185.189) por exemplo.
Pense comigo como eu vou poder liberar para um determinado IP se eu não tenho o IP de origem(do host na lan)?!? Quem tem o ip de origem é o squid, mas isso não me ajuda. A não ser que eu criasse um ACL no squid pra bloquear. Mas eu já tentei e não dá.

Se fosse na chain FORWARD(fosse só gateway e não proxy) era beleza. O IP de origem seria, por exemplo, 192.168.1.10 e o de destino seria chatenabled.mail.google.com(64.233.185.189). Perfeito!!!!


Pus-me a pensar:

...Não demorou muito, me imaginei um pacote tcp e logo achei uma solução.


Ressaltando:

Vou falar de novo para que fiquei bem claro: Todas as conexões são enviadas para o proxy sendo assim se eu bloquer a chain OUTPUT ninguém vai ter acesso ao Gtalk já que o proxy atende todo mundo.


A solução(vamos ser práticos):

No navegador do usuário devemos configurar o acesso ao endereço do Gtalk para que não seja usado proxy. Lá na configuração do navegador onde vai o endereço do proxy tem um espaço pra colocar os endereços que não devem passar pelo proxy(conexão direta com a internet). Coloca lá o endereço do Gtalk(chatenabled.mail.google.com).

Agora sim.. o navegador vai tentar conectar diretamente com a internet. Vamos ter esse pacote na chain FORWARD. Agora sim teremos um host da rede fazendo a solicitação diretamente ao endereço que deseja acessar.

Portanto, crie uma regra liberando esse host ao acesso. Ex:

iptables -A FORWARD -s 192.168.1.10 -d chatenabled.mail.google.com -j ACCEPT

Como o netfilter é stateful não precisa se preocupar criando uma regra pro pacote voltar.



Resumo:

No navegador sete para que não seja usado proxy para o endereço:
chatenabled.mail.google.com.

No firewall crie a regra liberado o host que pode ter acesso ao gtalk:
iptables -A FORWARD -s 192.168.1.10 -d chatenabled.mail.google.com -j ACCEPT
E a chain OUTPUT deve continuar negando para todos.


Espero ter conseguido expressar-me.

Marcadores: , ,

0 Comentários:

Postar um comentário

<< Home



Chat with Lutieri G. B.

Subscribe in a reader