Bloqueando sites com IPtables

Esse tutorial foi feito por dois colegas de trabalho que encontravam alguns problemas em bloquear o site de relacionamento Facebook em sua rede wirelless. Após alguns dias de estudo e quebra cabeças eles conseguiram resolver o problema e me enviaram a dica que segue abaixo:

Tutorial criado por: Jocemar Luis Wammes com participação de Vitor Hugo de Souza.

Imagem simulando a rede:

Bloqueando Facebook por HTTPS (porta 443).

Como todo o administrador de rede sabe, o bloqueio de alguns sites é regra, até mesmo para o bom andamento do trabalho. Se for o caso de uma empresa ou a sobrecarga que as redes sociais como o facebook podem trazer quando nós nos referimos a uma instituição de ensino que é o nosso caso. Para começar vou descrever a situação que a gente enfrentava até poucos dias atrás.

Temos em nosso servidor de REDE o OS Suse , ótimo sistema operacional, e para controlar o bloqueio de sites optamos por instalar o Squid, até ai tudo bem não fizemos nada mais que redirecionar a porta 80 e a 8080 para a 3128(porta do Proxy), criamos também uma lista de sites de bloqueio que o squid analisa antes de rotear e duas ACLs dentro do Squid para liberar alguns IPs que poderiam acessar qualquer site. De um tempo para cá percebemos que o Facebook não obedecia a essa restrição simplesmente passava nosso Proxy (que é transparente), podemos observar então que a rede social passou a usar criptografia o HTTPS que sai pela porta 443, tentamos bloquear a porta 443, porém voltamos atrás devido ao pessoal que necessitava acessar sites de banco, começamos a buscar conteúdos e tutoriais até que encontramos algo que nos deu uma luz, então fizemos o seguinte.

1- Como nossa rede é separada fisicamente (diferentes placas de rede), a idéia é bloquear somente as redes wireless distribuídas para os alunos, optamos por bloquear pelo IPTABLES começamos com uma linha de comando mesmo, no SHELL:

Após isso desse mesmo computador que recebeu esse ip pingamos para esse servidor do Facebook e observamos que os pacotes não chegavam, tínhamos conseguido fazer a restrição, então apenas melhoramos a idéia.

2- Criamos um arquivo dentro de /etc/init.d chamado face, que nada mais é do que uma lista de servidores do facebook que estamos negando, a lista ficou gigantesca pois o facebook parece ter mais servidores do que habitantes na terra(hahaha). A lista ficou assim:

A regra toda:

*OBS: Por vezes percebemos que não bastava apenas dar um REJECT mas sim DROP para um mesmo IP,o memso aconteceu com o FORWARD
por vezes ele não bastava então aplicávamos INPUT E OUTPUT. Essa lista necessita ser atualizada frequentemente, pois com toda a certeza a facebook irá adquirir mais servidores.

3- Faça o arquivo se tornar um executável através do comando chmod +x nome_do_arquivo. Então no SHELL vá em /etc/init.d e digite o comando para reiniciar o arquivo ./nome_do_arquivo restart

4- Faça o arquivo iniciar junto com o SO quando for reiniciado através do comando. chkconfig nome_do_arquivo

5- Por final crie uma associação desse arquivo com o seu Firewall para que quando você reinicia-lo ele reiniciar junto.

Para restringir outros acessos como o twitter, Orkut é só implementar a lista com os determinados ips dos servidores dessas redes sociais ou qualquer outro site que você quiser bloquear. Se você quiser bloquear para toda a rede sem especificar faixa de rede é só fazer o seguinte:

Iptables -A OUTPUT -d 66.220.149.11 -j REJECT
Iptables -A INPUT -d 66.220.149.11 -j DROP

Bom é isso ai! Espero que esse tutorial ajude a todos que passam pela mesma situação que nós enfrentamos.

Para entrar em contato com o autor utilizem o email abaixo:

jocemarwammes[arroba]hotmail[ponto]com

Anúncios
por ferpinheiro Postado em Redes

3 comentários em “Bloqueando sites com IPtables

  1. #Bloqueio do facebook com time
    iptables -t filter -I FORWARD -p tcp –dport 443 -m string –algo bm –string “facebook.com” -m time –timestart 07:30 –timestop 11:45 -j DROP
    iptables -t filter -I FORWARD -p tcp –sport 443 -m string –algo bm –string “facebook.com” -m time –timestart 07:30 –timestop 11:45 -j DROP
    iptables -t filter -I FORWARD -p tcp –dport 443 -m string –algo bm –string “facebook.com” -m time –timestart 13:30 –timestop 16:50 -j DROP
    iptables -t filter -I FORWARD -p tcp –sport 443 -m string –algo bm –string “facebook.com” -m time –timestart 13:30 –timestop 16:50 -j DROP

    Funciona perfeito!

    Você define os horarios para bloqueio e liberação

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s