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

Publicado por Marllus em 25/09/2013

[ Hits: 32.912 ]

 


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

Curso de Shell Script Avançado

Bloquear servidor por falta de pagamento

Usando find para expandir listas de arquivos em argumentos de modo seguro

Como fazer diff entre duas imagens

Como criar um cronômetro em modo texto

  

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




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts