Importação de IPs do Whatsapp como Objeto do Zentyal
Publicado por Willian Itiho Amano (última atualização em 19/01/2015)
[ Hits: 5.360 ]
Sabe-se que o Whatsapp é um grande consumidor de tempo dos funcionários e de banda para empresas que disponibilizam wifi devido aos envios de imagens e vídeos. Com a incumbência de bloquear o Whatsapp fui procurar os IPs utilizados pelo serviço. Esta lista está disponível no endereço: https://www.whatsapp.com/cidr.txt
Veja que é uma lista muito grande para cadastrar manualmente no Firewall. No caso utilizo o Firewall Zentyal 4.0. Pesquisando na internet achei o seguinte script ( http://www.institutmarianao.cat/wordpress/?p=226 ) que importa os dados para dentro do Zentyal.
Crie um arquivo objects.csv com os IPs com o seguinte formato ( disponível em: http://pastebin.com/7JgbbQgA )
WhatsApp,IP1,ipaddr,5.153.52.248,29,
WhatsApp,IP2,ipaddr,31.13.65.14,32,
Após isso crie um arquivo chamado importa.pl com o conteúdo do script no mesmo diretório do csv e dê permissão de execução. Aí é só executar, acessar o Zentyal e criar uma regra bloqueando este objeto.
#!/usr/bin/perl use strict; use warnings; use EBox; use EBox::Global; use EBox::Objects; use Scalar::Util; EBox::init(); open (my $OBJECTS, 'objects.csv'); # File objects.csv format "objecte name", "member name", "member type", "member ip", "member mac o ip" # types : ipaddr | iprange my $module = EBox::Global->getInstance(0)->modInstance(qw(objects)); if (not $module) { EBox::error(qw(objects) . "has impot data but it is not installed, not importing"); return; } my @members; my $object = ''; while (my $line = <$OBJECTS>) { chomp ($line); my $member; my ($objectname, $membername, $membertype, $memberip, $memberipormask, $membermac) = split(',', $line); $membername =~ s/^\s+|\s+$//g; $membertype =~ s/^\s+|\s+$//g; $memberip =~ s/^\s+|\s+$//g; $memberipormask =~ s/^\s+|\s+$//g; if ($membertype eq 'ipaddr') { if ($membermac) { $membermac =~ s/^\s+|\s+$//g; $member = { 'name' => $membername, 'address_selected' => $membertype, 'ipaddr_ip' => $memberip, 'ipaddr_mask' => $memberipormask, 'macaddr' => $membermac }; } else { $member = { 'name' => $membername, 'address_selected' => $membertype, 'ipaddr_ip' => $memberip, 'ipaddr_mask' => $memberipormask }; } } else { $member = { 'name' => $membername, 'address_selected' => $membertype, 'iprange_begin' => $memberip, 'iprange_end' => $memberipormask }; } if ($object ne $objectname) { # canvi objecte if (@members) { # Some member exist. Not first loop print "Adding $object...\n"; $module->addObject('name' => $object, 'members' => \@members); @members = (); } $object = $objectname; } push(@members, $member); } print "Adding $object...\n"; $module->addObject('name' => $object, 'members' => \@members); close ($OBJECTS); 1;
Instalação automatizada do Squid 2.5 STABLE14
Script para Detectar rede Wireless
Vou voltar moderar conteúdos de Dicas e Artigos (0)
Compartilhando a tela do Computador no Celular via Deskreen
Como Configurar um Túnel SSH Reverso para Acessar Sua Máquina Local a Partir de uma Máquina Remota
Configuração para desligamento automatizado de Computadores em um Ambiente Comercial
Como renomear arquivos de letras maiúsculas para minúsculas
Imprimindo no formato livreto no Linux
Vim - incrementando números em substituição
Efeito "livro" em arquivos PDF
Como resolver o erro no CUPS: Unable to get list of printer drivers
Instalação Uefi com o instalador clássico do Mageia (1)
Vou voltar moderar conteúdos de Dicas e Artigos (0)
[Python] Automação de scan de vulnerabilidades
[Python] Script para analise de superficie de ataque
[Shell Script] Novo script para redimensionar, rotacionar, converter e espelhar arquivos de imagem
[Shell Script] Iniciador de DOOM (DSDA-DOOM, Doom Retro ou Woof!)
[Shell Script] Script para adicionar bordas às imagens de uma pasta