Pesquisar neste blog

sábado, 5 de maio de 2012

Bloqueando o facebook com proxy transparente ((Ubuntu, RedHat e Opensuse)

No mundo da informática onde os usuários avançados do uso de tecnologia sempre foi uma pessoa individual e que muitas vezes sempre esta sozinho numa sala altas horas da noite, sem ter ninguém para conversar, ou ate mesmo conhecer outras pessoas, surgiu a ideia de salas de bate-papo, lista de discussão,  onde teríamos a possibilidade de conversar com outras pessoas no anonimato, com o passar do tempo foram criados as REDES SOCIAIS, onde podemos falar com outras pessoas, postar fotos, tirinhas, pensamentos etc, hoje em  dia o mais famoso das redes sociais é o FACEBOOK, porem o que deveria ser uma forma de expressão e convite para outras pessoas tornou-se uma incrível dor de cabeça para os administradores de redes, que por muitas vezes é solicitado pela Direção da empresa para bloquear sites da internet evitando o acesso não permitido a alguns desses conteúdos, normalmente é usado o squid para fazer esse trabalho, muitas vezes usamos o proxy na forma não transparente e dai conseguimos fazer o controle dos sites visitados e conseguimos fazer o bloqueio do site do facebook, as vezes não podemos usar desse procedimento, e precisamos usar o proxy como transparente e principalmente quando usamos a opção de lista negra (neste caso vamos classificar essa lista como toda a internet aberta e temos uma lista de sites onde o usuário não pode visitar) , neste caso o usuário simplesmente usa a url https://www.facebook.com e a pagina principal do facebook irá aparecer mesmo que você tenha regras especificas para esse bloqueio. Por que isso acontece, quando usamos a opção https a informação sai do computador de origem empacotados e criptografados fazendo com que o squid não consiga "ver" o seu conteúdo; agora para resolver esse problema devemos usar o firewall para fazer esse tipo de bloqueio, conforme descrito abaixo.

Deverá ser executado como root.

// Bloqueando a origemiptables -I INPUT -s AS54115 -j DROP
iptables -I INPUT -s AS32934 -j DROP
iptables -I INPUT -s 74.119.76.0/22 -j DROP
iptables -I INPUT -s 69.63.184.0/21 -j DROP
iptables -I INPUT -s 69.63.176.0/24 -j DROP
iptables -I INPUT -s 69.63.176.0/21 -j DROP
iptables -I INPUT -s 69.171.255.0/24 -j DROP
iptables -I INPUT -s 69.171.240.0/20 -j DROP
iptables -I INPUT -s 69.171.239.0/24 -j DROP
iptables -I INPUT -s 69.171.224.0/20 -j DROP
iptables -I INPUT -s 66.220.159.0/24 -j DROP
iptables -I INPUT -s 66.220.152.0/21 -j DROP
iptables -I INPUT -s 66.220.144.0/21 -j DROP
iptables -I INPUT -s 31.13.77.0/24 -j DROP
iptables -I INPUT -s 31.13.76.0/24 -j DROP
iptables -I INPUT -s 31.13.75.0/24 -j DROP
iptables -I INPUT -s 31.13.73.0/24 -j DROP
iptables -I INPUT -s 31.13.72.0/24 -j DROP
iptables -I INPUT -s 31.13.69.0/24 -j DROP
iptables -I INPUT -s 31.13.64.0/19 -j DROP
iptables -I INPUT -s 31.13.24.0/21 -j DROP
iptables -I INPUT -s 2a03:2880::/32 -j DROP
iptables -I INPUT -s 2620:0000:1c00::/40 -j DROP
iptables -I INPUT -s 204.15.20.0/22 -j DROP
iptables -I INPUT -s 173.252.96.0/19 -j DROP
iptables -I INPUT -s 173.252.70.0/24 -j DROP
iptables -I INPUT -s 173.252.64.0/19 -j DROP
// Bloqueando o destino
iptables -I FORWARD -d AS54115 -j DROP
iptables -I FORWARD -d AS32934 -j DROP
iptables -I FORWARD -d 74.119.76.0/22 -j DROP
iptables -I FORWARD -d 69.63.184.0/21 -j DROP
iptables -I FORWARD -d 69.63.176.0/24 -j DROP
iptables -I FORWARD -d 69.63.176.0/21 -j DROP
iptables -I FORWARD -d 69.171.255.0/24 -j DROP
iptables -I FORWARD -d 69.171.240.0/20 -j DROP
iptables -I FORWARD -d 69.171.239.0/24 -j DROP
iptables -I FORWARD -d 69.171.224.0/20 -j DROP
iptables -I FORWARD -d 66.220.159.0/24 -j DROP
iptables -I FORWARD -d 66.220.152.0/21 -j DROP
iptables -I FORWARD -d 66.220.144.0/21 -j DROP
iptables -I FORWARD -d 31.13.77.0/24 -j DROP
iptables -I FORWARD -d 31.13.76.0/24 -j DROP
iptables -I FORWARD -d 31.13.75.0/24 -j DROP
iptables -I FORWARD -d 31.13.73.0/24 -j DROP
iptables -I FORWARD -d 31.13.72.0/24 -j DROP
iptables -I FORWARD -d 31.13.69.0/24 -j DROP
iptables -I FORWARD -d 31.13.64.0/19 -j DROP
iptables -I FORWARD -d 31.13.24.0/21 -j DROP
iptables -I FORWARD -d 2a03:2880::/32 -j DROP
iptables -I FORWARD -d 2620:0000:1c00::/40 -j DROP
iptables -I FORWARD -d 204.15.20.0/22 -j DROP
iptables -I FORWARD -d 173.252.96.0/19 -j DROP
iptables -I FORWARD -d 173.252.70.0/24 -j DROP
iptables -I FORWARD -d 173.252.64.0/19 -j DROP


a fonte dos ip do facebook você encontrará aqui Link dos ips do facebook .

ate a próxima..


13 comentários:

Marcio Gomes disse...

Eu fiz testes reais para um empresa cliente e tudo foi em conformidade ao descrito no blogue,mais uma vez Parabéns Professor Alexandre.

Glauber Alexandre disse...

obrigado marcio, estamos sempre pesquisando para ajudar a quem preisa

Rubão disse...

Amigo tem como colocar alguma exceção?! para um ip ou outro?!
obrigado!

Glauber Alexandre disse...

sim, tem como fazer uma execeção, basta incluir o seguinte iptables -t nat -I -s IP-ESCOLHIDO -j ACCEPT, essa regra deve ser aplicada apos as outras do facebook.

Anônimo disse...

Boa tarde Amigos ... realmente a regra funciona ... porem com relação as exceções .... não consegui fazer de jeito nenhum ...tenho aqui iptables+squid ( transparente ) ...

S0ulHunt3r By eDupoPov disse...

Amigos, aproveitando a oportunidade, isso funciona também para o Endian ?
Tentei de diversas formas porém sem sucesso...

Obrigado desde já pela ajuda e excelente material.

Glauber Alexandre disse...

Me perdoe cometi um engano, para fazer uma exceção nas regras do face proceda da seguinte forma.

iptables -A FORWARD -s IP -p tcp --dport 80 -j ACCEPT
iptables -A FORWARD -d IP -j ACCEPT ,

Essa regra tem que ser feita antes das regras do face.

Glauber Alexandre disse...

acredito que se vc colocar esas regras dentro do endian, ira funcionar.

Cristian disse...

Olá, muito bom esse tutorial, o bloqueio funcionou perfeitamente. Só a questão quanto à exceção de um IP, tipo diretoria, pois adicionei as regras acima das de bloqueio, a página inicial até abre, porém não passa dela. Por acaso alguém teria alguma sugestão de como resolver.

Glauber Alexandre disse...

so um detalhe que devo acrescentar esta na configuração das regras do iptables é o parametro -I ele faz com que as regras fiquem acima de todas as regras sugiro que faca a troca para o parametro -A dai a liberação para um IP funcionará perfeitamente. Uso aqui na empresa e funciona normalmente. Vou dar um exemplo.

ip do diretor : 10.20.20.111

IPTABLES -I INPUT -s 10.20.20.111 -j ACCEPT
IPTABLES -I FORWARD -s 10.20.20.111 -j ACCEPT
IPTABLES -I FORWARD -d 10.20.20.111 -j ACCEPT

o parametro -I faz com que as regras sejam as primeiras, ou coloque-as antes das regras do face (lembre-se de trocar os "-I" por "-A" caso contrario nao vai funcionar.

Valdiney Teixeira disse...

Alexandre, fiz um script que resolve este problema com o modulo "string", testei e funciona perfeitamente para qualuqer site https.

#Bloqueio de sites facebook e live https e liberar ip da regra por Valdiney Teixeira
#Bloquear url HTTP use o squid ou dansguardian
#Teste executado com sucesso distribuicao SUSE
#versao do kernel 2.6.34-12

iptables -t filter -I FORWARD -m string --string "login.live.com" --algo bm --to 65535 -j DROP
iptables -t filter -I FORWARD -m string --string "facebook.com" --algo bm --to 65535 -j DROP
iptables -t filter -I FORWARD -s 192.168.2.72/32 -p tcp -m string --string "facebook.com" --algo bm --to 65535 -j ACCEPT
iptables -t filter -I FORWARD -s 192.168.2.72/32 -p tcp -m string --string "login.live.com" --algo bm --to 65535 -j ACCEPT
iptables -t filter -I FORWARD -d 192.168.2.72/32 -p tcp -m string --string "facebook.com" --algo bm --to 65535 -j ACCEPT
iptables -t filter -I FORWARD -d 192.168.2.72/32 -p tcp -m string --string "login.live.com" --algo bm --to 65535 -j ACCEPT

Ighugo disse...

Bom dia,
Pessoal, coloquei a regra de exceção e não funcionou para mim.
Segue abaixo a regra que coloquei acima das regras de bloqueio.

iptables -A INPUT -s 192.168.0.39 -j ACCEPT
iptables -A FORWARD -s 192.168.0.39 -j ACCEPT
iptables -A FORWARD -d 192.168.0.39 -j ACCEPT

Mudei para -I e também foi sem sucesso.
Att
Igor

Anônimo disse...

Valdiney Teixeira disse...
Alexandre, fiz um script que resolve este problema com o modulo "string", testei e funciona perfeitamente para qualuqer site https.

#Bloqueio de sites facebook e live https e liberar ip da regra por Valdiney Teixeira
#Bloquear url HTTP use o squid ou dansguardian
#Teste executado com sucesso distribuicao SUSE
#versao do kernel 2.6.34-12

iptables -t filter -I FORWARD -m string --string "login.live.com" --algo bm --to 65535 -j DROP
iptables -t filter -I FORWARD -m string --string "facebook.com" --algo bm --to 65535 -j DROP
iptables -t filter -I FORWARD -s 192.168.2.72/32 -p tcp -m string --string "facebook.com" --algo bm --to 65535 -j ACCEPT
iptables -t filter -I FORWARD -s 192.168.2.72/32 -p tcp -m string --string "login.live.com" --algo bm --to 65535 -j ACCEPT
iptables -t filter -I FORWARD -d 192.168.2.72/32 -p tcp -m string --string "facebook.com" --algo bm --to 65535 -j ACCEPT
iptables -t filter -I FORWARD -d 192.168.2.72/32 -p tcp -m string --string "login.live.com" --algo bm --to 65535 -j ACCEPT

Este funcionou no meu firewall, valeu obrigado pela ajuda.