Liberar o WhatsApp - Texto, imagem, áudio, vídeo e ligações [iptables]

Publicado por Bruno Quinta em 02/06/2015

[ Hits: 102.409 ]

 


Liberar o WhatsApp - Texto, imagem, áudio, vídeo e ligações [iptables]



Nesta dica será abordado como efetuar a liberação do WhatsApp em um firewall que a política padrão seja DROP.

Vale ressaltar que estarão liberados o envio de texto, imagens, vídeos, áudios e ligações.

Objetivo

Apesar de várias empresas optarem pelo bloqueio de determinados sites e aplicativos em sua rede interna, buscando um menor desperdício de tempo por parte de seus funcionários, algumas acabam utilizando ferramentas como o WhatsApp possibilitando um contato direto com funcionários, clientes e/ou fornecedores.

Desta forma surge a necessidade da liberação do mesmo em ambientes em que a política padrão do iptables seja DROP.

Nesta dica serão apresentados os passos a serem seguidos para que o recurso seja disponibilizado.

Liberações

As seguintes regras deverão ser adicionadas ao script do firewall:

iptables -A FORWARD -p udp --dport 3478 -j ACCEPT # WhatsApp
iptables -A FORWARD -p tcp --dport 5222 -j ACCEPT # WhatsApp
iptables -A FORWARD -p tcp --dport 5223 -j ACCEPT # WhatsApp

Apesar da liberação das portas citadas acima possibilitarem o envio e recebimento de mensagens de texto e ligações, o aplicativo continua não enviando/recebendo imagens e vídeos, desta forma será necessário efetuar a liberação dos IPs do WhatsApp (disponíveis no site do WhatsApp). Neste caso liberaremos os IPs somente para a porta 443, que se faz necessária.

O seguinte script pode ser criado e adicionado ao script do firewall:

#!/bin/bash
wget='/usr/bin/wget'
ipt='/sbin/iptables'
url='https://www.whatsapp.com/cidr.txt'
ipt_target='ACCEPT'
$ipt -N WHATSAPP
$ipt -A FORWARD -j WHATSAPP
$ipt -F WHATSAPP
$ipt -I WHATSAPP -j RETURN
for node in `$wget -q --no-check-certificate -O - $url | sort | uniq`; do $ipt -I WHATSAPP -d $node -p tcp --dport 443 -j $ipt_target
done

Conclusão

Abaixo é possível entender o motivo de cada liberação:
  • Forward porta 3478 UDP - Necessária para efetuar ligações
  • Forward porta 5222 TCP - Necessária para conexão e envio/recebimento de texto
  • Forward porta 5223 TCP - Necessária para conexão e envio/recebimento de texto
  • IPs WhatsApp Porta 443 - Necessária para envio/recebimento de imagens/vídeos

Desta forma, efetuando as liberações apresentadas neste texto, será possível liberar o WhatsApp com sucesso em sua rede.

Vale ressaltar que o script de liberação dos IPs do WhatsApp deverá ser executado eventualmente, para que a lista de liberados seja atualizada.

Outras dicas deste autor
Nenhuma dica encontrada.
Leitura recomendada

Razor QT um novo desktop leve

Instalando kernel 2.6.39 no Ubuntu 11.04

VirtualBox: editar o fstab para montar a pasta da máquina virtual compartilhada automaticamente

Instalando o BURG no Ubuntu 10.04 LTS

Ícones Azenis no Debian 7

  

Comentários
[1] Comentário enviado por limarodrigo74 em 02/06/2015 - 19:09h

Olá Bruno, tudo bem?

Cara, show de bola este script, porém como eu insiro uma rede de origem nele?

Por exemplo, quero que apenas a rede 10.90.90.0/22 tenha este tipo de liberação.

Desde já agradeço!

Abraços!

[2] Comentário enviado por sergiotrindade4 em 18/09/2015 - 16:34h

Boa tarde!

No meu caso trabalho com Endian Firewall Community, preciso liberar o Whatsapp somente textos e imagens.

O problema em liberar a porta 443 no firewall é que acaba liberando vídeo também.

Alguém sabe uma maneira de fazer isso ?

Obrigado!

[3] Comentário enviado por evandroed em 25/09/2015 - 23:41h

Muito bom este post Bruno...

Há tempos estava tentando liberar o whatsapp na minha rede e não estava conseguindo encontrar a documentação necessária...

Muito obrigado... ;)

[4] Comentário enviado por filipi_saci em 02/12/2015 - 11:39h

Bom dia pessoal,
Estou com uma dúvida.. O que exatamente acontece nessa linha:
for node in `$wget -q --no-check-certificate -O - $url | sort | uniq`;do

Primeira dúvida, o apostrofo está certo?? ou deveria ser '
Segunda dúvida, ao executar o script tenho o seguinte retorno para o parâmetro -q:
iptables v1.4.21: unknown option "-q"
Try `iptables -h' or 'iptables --help' for more information.
Terceira, se eu tiro os parâmetros acaba dando erro nos outros parâmetros, como no --no-check-certificate

Alguém pode me dizer o que faz exatamente a linha do for?

Desde já, agradeço.

[5] Comentário enviado por filipi_saci em 02/12/2015 - 21:53h


[4] Comentário enviado por filipi_saci em 02/12/2015 - 11:39h

Bom dia pessoal,
Estou com uma dúvida.. O que exatamente acontece nessa linha:
for node in `$wget -q --no-check-certificate -O - $url | sort | uniq`;do

Primeira dúvida, o apostrofo está certo?? ou deveria ser '
Segunda dúvida, ao executar o script tenho o seguinte retorno para o parâmetro -q:
iptables v1.4.21: unknown option "-q"
Try `iptables -h' or 'iptables --help' for more information.
Terceira, se eu tiro os parâmetros acaba dando erro nos outros parâmetros, como no --no-check-certificate

Alguém pode me dizer o que faz exatamente a linha do for?

Desde já, agradeço.



------------------------------------------------------------
Segue resposta dada pelo thinomar no post:
http://www.vivaolinux.com.br/topico/Shell-Script/Duvida-num-laco-de-repeticao-com-For/

------------------------------------------------------

`$wget -q --no-check-certificate -O - $url | sort | uniq`
$wget é a variável que aponta para o caminho completo do wget:
wget='/usr/bin/wget'
Os argumentos:
-q: Suprime saídas do comando wget.
--no-check-certificate: Suprime saídas referentes a HTTPS.
-O: imprime o conteúdo do arquivo baixado na tela.
$url: Variável que aponta para URL:
url='https://www.whatsapp.com/cidr.txt'
|: Redirecionador da saída de um comando.
sort: Organiza texto (ordem alfabética).
uniq: Elimina registros duplicados.

E o acento grave (crase `) serve para dar prioridade de execução para o código dentro dela.

Sobre o for: o resultado do wget está sendo jogado, linha a linha, na variável node. Cada linha é um looping e o for executará até que chegue na última linha do arquivo baixado.

Sobre o comando dentro do for:
$ipt: Variável que contém caminho do iptables, que foi declarado no inicio do script.
-I WHATSAPP: Inserção na chain WHATSAPP
-d $node: Aplicar regra ao destino contido na variável node, que recebe conteúdo no laço.
-p tcp --dport 443: O que estiver no protocolo TCP e porta 443
-j $ipt_target: Decisão a se tomar (a variável está com o valor ACCEPT, como visto no inicio do código, o que significa que esse looping está liberando as transações de rede do WhatsApp)
--

[6] Comentário enviado por razakmg em 04/03/2016 - 16:23h

O meu deu esse erro.

iptables v1.4.14: invalid mask `64' specified

iptables v1.4.14: invalid mask `128' specified

Não aceitou as máscaras do IPV6
IPV4 foi.
Mas então, o whatsapp não funciona ainda (nem mídias e nem texto).
Uso IPTABLES e Squid3, mas pelo o que andei pesquisando, o squid3 não interfere no WPP, certo?
O que devo fazer?

[7] Comentário enviado por razakmg em 06/03/2016 - 10:41h

OBS: meu proxy não é transparente.

[8] Comentário enviado por samuelpqdjs em 15/06/2017 - 13:46h

Boa tarde, o arquivo cidr no endereço https://www.whatsapp.com/cidr.txt está dando erro 404.

Se alguém precisar, tem uma cópia em http://www.r3n3.com.br/whatsapp/cidr.txt


[9] Comentário enviado por pelo em 23/06/2017 - 17:01h

Olá,

Essa dica do https://www.whatsapp.com/cidr.txt deixou de funcionar.
Alguma solução?

Até!

Sérgio Abrantes

[10] Comentário enviado por sauloneiva em 02/09/2017 - 08:29h

Olá!!!

O meu funcionou blz nos primeiros dias, agora parou de liberar o acesso dos whatssap pelo smartphones na rede.
Alguma dica?



Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts