Nesta dica veja como bloquear de forma seletiva o WhatsApp ou Facebook usando apenas o Iptables. Esse bloqueio é ideal em ambientes onde é usado proxy transparente. Você vai precisar conhecer bem a rede de sua empresa ou ambiente, pois terá que ter os IP’s que vai querer bloquear ou liberar. O Script abaixo é uma dica do Thiago Ferreira, ele disponibilizou um script muito eficiente e fácil de entender, ele comentou e apresentou cada item inclusive o que cada comando faz. Nesta dica, saiba como fazer um bloqueio do WhatsApp e Facebook com o Iptables!
Como fazer um bloqueio seletivo do WhatsApp e Facebook usando Iptables
Para poder fazer o bloquei crie os arquivos, bloqueio_seletivo, ipsliberados e ipsinterno
nano /usr/share/bloqueio_seletivo
No arquivo criado insira o seguinte script:
#!/bin/sh
#Faz bloqueios seletivo de facebook e whatsapp liberando somente
#o que estiver declarado a ser liberado
#Script adaptado conforme necessidades a partir de linhas pegas em linuxquestions.org
#Ips whatsapp disponível https://www.whatsapp.com/cidr.txt
# versão 1.0
#Lista de ips externos permitidos "ipsliberados
#Lista dei ips privados liberados e bloqueados ipsinterno
##########################################################################
#Adicionamos a lista de ips externos que serão tratados em uma variavel
IPSLIVRE=$(cut -f 1 -d" " /usr/share/ipsliberados |grep -v ^#)
#O cut jogará no IPSLIVRE(cadeia do iptables - logo abaixo) tudo que não tiver "#" como inicio.
#Declaramos a rede interna em uma variavel para ser tratada pelo iptables
NETLOCAL="10.10.10.0/25"
#Invocamos o iptables, e adicionamos uma cadeia chamada INTERCEPTA
iptables -N INTERCEPTA
#Proximo passo é redirecionar todos os trafego da rede interna para a nova cadeia
iptables -I FORWARD -s $NETLOCAL -j INTERCEPTA
#Com esse passo acima todo o trafego agora passa pela nova regra
#Vamos (abaixo) fazer uma captura dos ips listados no arquivo ipsinterno e
#jogar esses endereços em uma regra que rejeite todos os ips da rede "NETLOCAL" que estejam na regra com o "#".
for i in `grep -v ^# /usr/share/ipsinterno`; do
#(Acima) Para tudo em ipsinterno que comecem com "#" então faça
iptables -A INTERCEPTA -d $i -j REJECT
#o Iptables vai jogar tudo que tiver em INTERCEPTA em um REJECT contendo o conteúdo da saida do cut, então
#todos os ips que tiver como inicio o "#" irão para a cadeia bloqueio
#Agora vamos dizer pro iptables liberar os ips que não fazem parte das regras de bloqueio nos ips contidos em um arquivo
#onde consta o destino a ser liberado, eventualmente os que já declaramos em "ipsliberados"
for livres in $IPSLIVRE; do
iptables -I FORWARD -s $livres -d $i -j ACCEPT
#Acima pedimos para o iptables liberar tudo que for de origem "$livres"(ipsliberados=ips que são do whats ou outro) com destino a "$i" que é nossa
#lista de ips internos
# Com isso todos os demais ips que não estiverem no arquivo de ips locais marcados "#" serão liberados!!!
done
Na lista de ips liberados entre com os ips disponíveis no próprio site do WhatsApp:
Basta adicionar a lista a um arquivos em “/usr/share” :
nano /usr/share/ipsliberados
Como exemplo, poderíamos ter uma série de ips nessa ordem:
31.13.58.55
31.55.44.77
178.88.14.100
Adicione os ips, e crie um novo arquivo para inserirmos os ips da rede interna:
nano /usr/share/ipsinterno
Em ipsinterno insiram os ips da sua rede, lembrando de seguir a seguinte regra. Ips que serão bloqueados devem conter o “#” antes, pois o cut fará a leitura levando em consideração que esses são os únicos que devem ser tratados:
#10.10.10.44
#10.10.10.24
10.10.10.8
No caso acima, somente os dois primeiros serão bloqueados de acessar os serviços dos “ipsliberados”, o “10.10.10.8” terá total acesso ao trafego.
Caso deseje, liste apenas os ips permitidos, sem a necessidade de usar o “#” antes do ip, ficando assim:
10.10.10.55
10.10.10.22
#!/bin/sh
#Thiago ferreira - thiago@thiagoferreira.net
IPSLIVRE=$(cut -f 1 -d" " /usr/share/ipsliberados |grep -v ^#)
NETLOCAL="10.10.10.0/25"
iptables -N INTERCEPTA
iptables -I FORWARD -s $NETLOCAL -j INTERCEPTA
for i in `grep -v ^# /usr/share/ipsinterno`; do
iptables -A INTERCEPTA -d $i -j REJECT
for livres in $IPSLIVRE; do
iptables -I FORWARD -s $livres -d $i -j ACCEPT
done
Lembrem-se, leia todo o conteúdo do post inclusive do script para melhor entendimento. Neste guia você viu como fazer o bloqueio seletivo do WhatsApp e Facebook utilizando o Iptables.