Bloqueando Facebook com IPtables (de forma fácil, intuitiva e eficiente)

Publicado por Marllus em 25/09/2013

[ Hits: 29.650 ]

 


Bloqueando Facebook com IPtables (de forma fácil, intuitiva e eficiente)



Olá, pessoal!

Pela coleção de scripts que vejo na Net, uns que funcionam, outros que ficam (erradamente) bloqueando também outros sites (como o Gmail) e, cuja função é só de realizar o bloqueio de Facebook com IPtables, resolvi deixar minha contribuição à comunidade com um script muito eficiente que montei.

Baseado em um código IPtables que vi no Brazilfw:
#Lista de IPs liberados para acessar o Facebook
IPS_ACCEPT=$(cat /home/scripts/ips_accept.txt)

#Sub-rede interna do ambiente em questão
REDE_INTERNA="192.168.0.0/24"

#Criando nova regra FACEBOOK
iptables -N FACEBOOK

#Transferindo todo tráfego fonte da rede interna para a regra FACEBOOK
iptables -I FORWARD -s $REDE_INTERNA -j FACEBOOK

#Percorre o arquivo dos IPs do Facebook (facebook.txt) e vai colocando REJECT em todos os IPs da rede interna, exceto os liberados.
for i in `cat /home/scripts/facebook.txt`; do

        #O acesso dos IPs (que caíram na regra FACEBOOK) ao Facebook vai ser rejeitado
    iptables -A FACEBOOK -d $i -j REJECT

    #Percorre lista de IPs liberados e vai colocando ACCEPT neles
        for liberados in $IPS_ACCEPT; do
        iptables -I FORWARD -s $liberados -d $i -j ACCEPT
    done

done

Obs.: segue abaixo, a lista de sub-redes para colocar no arquivo facebook.txt:
  • 65.201.208.24/29
  • 65.204.104.128/28
  • 66.93.78.176/29
  • 66.92.180.48/28
  • 67.200.105.48/30
  • 69.63.176.0/20
  • 69.171.224.0/19
  • 74.119.76.0/22
  • 204.15.20.0/22
  • 204.15.20.0/22
  • 66.220.144.0/20
  • 173.252.64.0/18
  • 65.201.208.24/29
  • 65.204.104.128/28
  • 66.93.78.176/29
  • 66.92.180.48/28
  • 67.200.105.48/30
  • 69.63.176.0/20
  • 69.171.224.0/19
  • 74.119.76.0/22
  • 204.15.20.0/22
  • 204.15.20.0/22
  • 66.220.144.0/20
  • 173.252.64.0/18
  • 31.13.24.0/21
  • 31.13.64.0/18
  • 66.220.144.0/20
  • 69.63.176.0/20
  • 69.171.224.0/19
  • 74.119.76.0/22
  • 103.4.96.0/22
  • 173.252.64.0/18
  • 204.15.20.0/22

Segue abaixo, um exemplo dos IPs do arquivo ips_accept.txt:
  • 192.168.0.84
  • 192.168.0.30
  • 192.168.0.35
  • 192.168.0.156
  • 192.168.0.78

Espero que tenham gostado!

Quaisquer dúvidas, críticas ou sugestões, podem postar!
Abraços.

Outras dicas deste autor
Nenhuma dica encontrada.
Leitura recomendada

GNU parallel - Um ferramenta para execução de processos em paralelo

Processos rivais

Limpando o .recycle do Samba

Filtrando sites navegados por máquinas no log do Squid

Usando o script alertaTwitter

  

Comentários
[1] Comentário enviado por px em 25/09/2013 - 10:47h

ou pode simplesmente usar isto:

whois -h whois.radb.net '!gAS32934' | tr ' ' '\n' | grep ^[0-9] > facebook.ip
for i in $(cat facebook.ip); do route add -net $i reject; done

[2] Comentário enviado por phoemur em 27/09/2013 - 16:20h


[1] Comentário enviado por px em 25/09/2013 - 10:47h:

ou pode simplesmente usar isto:

whois -h whois.radb.net '!gAS32934' | tr ' ' '\n' | grep ^[0-9] > facebook.ip
for i in $(cat facebook.ip); do route add -net $i reject; done


whois -h whois.radb.net '!gAS32934' | tr ' ' '\n' | grep ^[0-9] | xargs -L1 -i route add -net {} reject


[3] Comentário enviado por px em 29/09/2013 - 09:29h


[2] Comentário enviado por phoemur em 27/09/2013 - 16:20h:


[1] Comentário enviado por px em 25/09/2013 - 10:47h:

ou pode simplesmente usar isto:

whois -h whois.radb.net '!gAS32934' | tr ' ' '\n' | grep ^[0-9] > facebook.ip
for i in $(cat facebook.ip); do route add -net $i reject; done

whois -h whois.radb.net '!gAS32934' | tr ' ' '\n' | grep ^[0-9] | xargs -L1 -i route add -net {} reject



melhor ainda hehe...

também pode-se usar a primeira linha (whois -h whois.radb.net '!gAS32934' | tr ' ' '\n' | grep ^[0-9] > facebook.ip) para obter os ips e sub-redes do face e usar uma acl no squid pra bloquear todos eles. Pois iptables usa banda, e o route bloqueia para todos usuários, já com squid pode-se bloquear só o necessário sem interferir na rede...

[4] Comentário enviado por marlluslustosa em 30/09/2013 - 09:50h

Legais os comentários! Nunca tinha feito nenhuma regra de bloqueio e/ou consulta de subredes utilizando o radb ou outro IRR (Internet Routing Registry).

Apesar de o tópico ser direcionado para o Iptables, dicas sempre são bem-vindas!

Abraços.

[5] Comentário enviado por SaBuJo em 24/03/2014 - 19:13h

Solução funciona perfeitamente. Já coloquei no rc.local e no cron pra rodar, por, enquanto diariamente.

Parabéns pelo post. Simples, objetivo e o mais importante funciona 100%.

[6] Comentário enviado por marlluslustosa em 24/03/2014 - 20:41h


[5] Comentário enviado por SaBuJo em 24/03/2014 - 19:13h:

Solução funciona perfeitamente. Já coloquei no rc.local e no cron pra rodar, por, enquanto diariamente.

Parabéns pelo post. Simples, objetivo e o mais importante funciona 100%.


Obrigado. Fico feliz por ter ajudado!

[7] Comentário enviado por jardel1981 em 21/07/2014 - 16:33h

Boa tarde pessoal,

Quando rodo esse script, as regras de proxy (Squid) param e a internet fica liberada. Quando rodo o script de Iptables, os bloqueios de proxy voltam a funcionar, mas esse script de bloqueio de facebook deixa de funcionar.

Quando rodo esse script, o seguinte aviso aparece:
iptables: Chain already exists.

Essa regra dá algum conflito com o Iptables?

[8] Comentário enviado por marlluslustosa em 21/07/2014 - 17:25h

Amigo, se vc já tem um script de firewall, tente colocar esse script dentro do arquivo do seu firewall. De preferência antes da linha que ativa o proxy transparente, se seu Squid estiver neste modo.

A intenção é utilizar esse código dentro do próprio arquivo do firewall, não separado.

[9] Comentário enviado por edinaldof em 12/09/2014 - 19:01h

Gostaria de dar os parabéns pelo artigo.
Muito bom mesmo, e, como não utilizo proxy, apenas firewall, pela primeira vez consegui bloquear o Facebook.
Bom, como a lista acima tem uma série de IP's/Redes repetidas, segue abaixo a relação única dos mesmos.

31.13.24.0/21
31.13.64.0/18
65.201.208.24/29
65.204.104.128/28
66.92.180.48/28
66.93.78.176/29
66.171.0.0/16
66.220.0.0/16
66.220.144.0/20
67.200.105.48/30
69.63.0.0/16
69.63.176.0/20
69.171.0.0/16
69.171.224.0/19
69.220.0.0/16
74.119.76.0/22
103.4.96.0/22
173.252.64.0/18
173.252.110.27
204.15.20.0/22
204.74.0.0/16
208.93.0.0/16

[10] Comentário enviado por marlluslustosa em 14/09/2014 - 17:19h

Obrigado pelo comentário com as subredes, edinladof. Fico feliz também que tenha lhe ajudado!



Contribuir com comentário