Pular para o conteúdo

Bloqueando Facebook pelo IPtables

Dica publicada em Linux / Segurança
Daniel Lara Souza danniel-lara
Hits: 31.245 Categoria: Linux Subcategoria: Segurança
  • Indicar
  • Impressora
  • Denunciar
O Viva o Linux depende da receita de anúncios para se manter. Ative os cookies aqui para nos patrocinar.
Não conseguimos carregar os anúncios. Se usa bloqueador, considere liberar o Viva o Linux para nos patrocinar.

Bloqueando Facebook pelo IPtables

Uma dica rápida sobre como bloquear o Facebook em sua rede.

Bom, eu fiz dessa maneira, pois utilizo proxy transparente:

Crie uma lista com os IPs do Facebook:

# vim /root/list.txt

Contendo:

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

E adicionei essas linhas no meu script de IPtables:

iptables  -N FACEBOOK
iptables  -I FORWARD -s $REDE_INTERNA -j FACEBOOK
for face   in `cat /root/list.txt`;do
iptables  -A FACEBOOK -d $face -j REJECT
done
O Viva o Linux depende da receita de anúncios para se manter. Ative os cookies aqui para nos patrocinar.
Não conseguimos carregar os anúncios. Se usa bloqueador, considere liberar o Viva o Linux para nos patrocinar.

E libero somente por MAC. Caso a diretoria queira acessar o Facebook, adiciono essa linha antes do "done":

iptables -I FORWARD -m mac --mac-source 00:26:18:F7:84:E0 -d $face -j ACCEPT

Um exemplo de como ficou meu script de firewall:

#!/bin/bash

REDE_INTERNA="10.0.0.0/8"


iptables -F
iptables -X
iptables -t nat -F
iptables -t nat -X
iptables -t mangle -F
iptables -t mangle -X
iptables -P INPUT ACCEPT
iptables -P OUTPUT ACCEPT
iptables -P FORWARD ACCEPT


modprobe iptable_nat
echo "1" > /proc/sys/net/ipv4/ip_forward
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

iptables -N FACEBOOK
iptables -I FORWARD -s $REDE_INTERNA -j FACEBOOK
for face in `cat /root/list.txt`;do
iptables -A FACEBOOK -d $face -j REJECT

#LIBERANDO FACEBOOK PARA ALGUMAS MAQUINAS POR MAC NA REDE
iptables -I FORWARD -m mac --mac-source 00:26:18:F7:84:E0 -d $face -j ACCEPT

done

iptables -t nat -A PREROUTING -i eth1 -p tcp --dport 80 -j REDIRECT --to-port 3128


O Viva o Linux depende da receita de anúncios para se manter. Ative os cookies aqui para nos patrocinar.
Não conseguimos carregar os anúncios. Se usa bloqueador, considere liberar o Viva o Linux para nos patrocinar.

PHP 7.2 no Fedora 27

Restando senha de root no CentOS/RHEL/Fedora

Layout Teclado ABNT2 no Fedora 18 [Resolvido]

Instalando Cloudstack no CentOS

Rodando o ManageIQ via podman

theHarvester - Vamos colher alguns e-mails?

Squid com usuários X computadores por setor usando endereço MAC

Firewall rápido e simples no Debian

Recuperar/modificar passwords do Windows através do Linux

OCS Inventory NG: Instalação de Agentes Linux e Windows + Autenticação HTTP

#1 Comentário enviado por andguihofros em 15/08/2013 - 11:03h
Bom dia Daniel, gostei muito do script, porem a liberação de determinada maquina, por mac, não funciona...
Alguma solução?
#2 Comentário enviado por danniel-lara em 15/08/2013 - 11:17h

[1] Comentário enviado por andguihofros em 15/08/2013 - 11:03h:

Bom dia Daniel, gostei muito do script, porem a liberação de determinada maquina, por mac, não funciona...
Alguma solução?


bom no caso a liberação é para o acesso ao facebook , tu colocou as letras do MAC em maiúsculo ?
testa assim
iptables -t filter -A FORWARD -d 0/0 -m mac --mac-source xx:xx:xx:xx:xx:xx -j ACCEPT
#3 Comentário enviado por andguihofros em 15/08/2013 - 11:57h
GNU nano 2.2.4 Arquivo: /etc/init.d/firewall

#!/bin/sh
REDE_INTERNA="192.168.0.0/24"

iptables -F
iptables -X
iptables -t nat -F
iptables -t nat -X
iptables -t mangle -F
iptables -t mangle -X
iptables -P INPUT ACCEPT
iptables -P OUTPUT ACCEPT
iptables -P FORWARD ACCEPT

modprobe iptable_nat
echo "1" > /proc/sys/net/ipv4/ip_forward
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
#


######
iptables -N FACEBOOK
iptables -I FORWARD -s $REDE_INTERNA -j FACEBOOK
for face in `cat /etc/squid/bloqfirewall`;do
iptables -A FACEBOOK -d $face -j REJECT
######
#Liberando Face por mac
######
iptables -t filter -A FORWARD -d 0/0 -m mac --mac-source 00:18:F3:6F:4E:0F -j ACCEPT
#iptables -I FORWARD -m mac --mac-source 00:18:F3:6F:4E:0F -d $face -j ACCEPT
iptables -I FORWARD -m mac --mac-source 6C:FD:B9:23:D7:4D -d $face -j ACCEPT
done
#
######
#Redireciona para Squid
#####
iptables -t nat -A PREROUTING -i eth1 -p tcp --dport 80 -j REDIRECT --to-port 3$





#4 Comentário enviado por andguihofros em 15/08/2013 - 11:59h
Meu script....
Ele bloqueia o FACEBOOK na rede, porem não consigo liberar para mac especifico.
#5 Comentário enviado por danniel-lara em 15/08/2013 - 13:12h

[4] Comentário enviado por andguihofros em 15/08/2013 - 11:59h:

Meu script....
Ele bloqueia o FACEBOOK na rede, porem não consigo liberar para mac especifico.


ok , seguinte , mais a noite vou fazer uns teste e de respondo
abraço
#6 Comentário enviado por andguihofros em 15/08/2013 - 13:41h
Blz! Vou tentando aqui tb...abraço!
#7 Comentário enviado por andguihofros em 16/08/2013 - 17:51h
Boa tarde Danniel,

Consegui!!!

Adicionei um for, dos mac´s que não poderão acessar o face, criando uma lista "/etc/firewall/bloqmac", em seguida continuando com seu script:

for bloqmac in `cat /etc/squid/bloqmac`;do
iptables -I FORWARD -m mac --mac-source $bloqmac -d -j ACCEPT
for face in `cat /etc/squid/bloqfirewall`;do
iptables -A FACEBOOK -d $face -j REJECT
done

Como foi feito numa das empresas que presto suporte, semana que vem posto ele inteiro!

Abraco, valeu!
#8 Comentário enviado por cesar em 19/09/2013 - 15:08h

[7] Comentário enviado por andguihofros em 16/08/2013 - 17:51h:

Boa tarde Danniel,

Consegui!!!

Adicionei um for, dos mac´s que não poderão acessar o face, criando uma lista "/etc/firewall/bloqmac", em seguida continuando com seu script:

for bloqmac in `cat /etc/squid/bloqmac`;do
iptables -I FORWARD -m mac --mac-source $bloqmac -d -j ACCEPT
for face in `cat /etc/squid/bloqfirewall`;do
iptables -A FACEBOOK -d $face -j REJECT
done

Como foi feito numa das empresas que presto suporte, semana que vem posto ele inteiro!

Abraco, valeu!


Poderia postar como você fez?

[]'s
#9 Comentário enviado por cesar em 19/09/2013 - 17:07h
Não deu certo, instalei uma máquina do zero e coloquei estas configurações baseando no meu ambiente, mas não bloqueou o Facebook.

Se mais alguém souber de algo, me avise.

Obrigado,

[]'s
#10 Comentário enviado por adonisgarces em 19/11/2013 - 10:41h

Bloqueia o facebook assim óh:

uso essa regra direto no meu script de firewall:

###### LIBERA PRA DIRETORIA (exemplo) - DE ACORDO COM OS IPS DELES########

#iptables -t filter -A FORWARD -p tcp --dport 443 -m iprange --src-range 192.168.20.1-192.168.20.10 -m string --algo bm --string "facebook.com" -j ACCEPT

#iptables -t filter -A FORWARD -p tcp --sport 443 -m iprange --src-range 192.168.20.1-192.168.20.10 -m string --algo bm --string "facebook.com" -j ACCEPT

############### BLOQUEIA GERAL ########################


#iptables -t filter -A FORWARD -p tcp --dport 443 -m string --algo bm --string "facebook.com" -j DROP
#iptables -t filter -A FORWARD -p tcp --sport 443 -m string --algo bm --string "facebook.com" -j DROP



Vale ressaltar que no meu caso fiz a liberaçao por range de ip: sugiro que crie reserva no seu dhcp.conf

E outro detalhe importante é que esse metodo bloqueia o facebook através da porta 443 (HTTPS).

Teste ai e envie o feedback.

Abs.
#11 Comentário enviado por cabralwms em 29/11/2013 - 20:19h
Essa Regra funciona realmente, mais eu tive o problema com envio de database.mdb com a palavra facebook no meio deles, não vai qualquer arquivo com a palavra facebook, alguem tem ideia de como resolver isso? Bloquear apenas o HTTPS para o Facebook, outra coisa que acontece com essa regra, se eu colocar o proxy na mão tambem passa. Entra no Facebook com HTTPS://www.facebook.com.br pode testar que vai, testei em um Servidor Proxy transparente 2.7 Stable e Debian squeeze.
#12 Comentário enviado por aslisboa em 08/02/2014 - 23:43h
Está de parabéns. Funcionou perfeitamente, basta seguir fielmente que vai funcionar.
Para bloquear via proxy, basta criar a regra abaixo no squid.conf e o arquivo block.txt no local especifico.

#Bloqueio de sites não permitido
acl bloqueio url_regex -i "/etc/squid3/block.txt"
http_acces bloqueio deny


Crie o arquivo block.txt e adicione os sites que serão bloqueados por linha

#vi /etc/squid3/block.txt
facebook.com
orkut.com
youtube.com
sexo
[*****]


Abraços.
#13 Comentário enviado por aslisboa em 08/02/2014 - 23:48h
**Corrigindo**
http_access deny Bloqueio

Faltou um "S" em http_access

Abraços.
#14 Comentário enviado por ziasrodrigues em 06/10/2014 - 14:23h
A regra bloqueia mas tbm bloqueia os emaisl que vem com qualquer coisa q se refira a face, alguem conseguiu contornar?

Contribuir com comentário

Entre na sua conta para comentar.