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 usando IPTables
Para poder fazer o bloquei crie os arquivos, bloqueio_seletivo, ipsliberados e ipsinterno
nano /usr/share/bloqueio_seletivo
Dentro do 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 ipsliberados entre com os ips disponiveis no próprio site do whatsapp: https://www.whatsapp.com/cidr.txt.
Basta adicionar a lista a um arquivos em “/usr/share” :
nano /usr/share/ipsliberados
Como exemplo, poderíamos ter uma serie 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 - [email protected] 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