Bloquear Facebook (HTTPS) por IPtables com horários

Publicado por Vinicius Mathias em 15/02/2013

[ Hits: 15.173 ]

Blog: https://www.linkedin.com/in/mathiasvinicius/

 


Bloquear Facebook (HTTPS) por IPtables com horários



Depois de ter tentado de várias maneiras filtrar via Squid e não ter chegado a um resultado satisfatório, resolvi bloquear, via IPtables, usando as dicas de:
Mas eu precisava que, assim como no Squid, o Facebook fosse liberado no horário de almoço e fora do expediente, e seguindo a lista de exceções do próprio Squid.

Sendo assim, montei o seguinte código:

#!/bin/bash
#BLOQUEIOS:

hora=`/bin/date +%H%M`
if `[ "$hora" -gt "0759" ] && [ "$hora" -lt "1229" ] || [ "$hora" -gt "1359" ] && [ "$hora" -lt "1729" ] `; then
    op=1;
else
    op=2;
fi
# para que desse certo inclui os horários sem o " - " assim compara como se fosse números inteiros

permitidos=$(egrep -v "(^#|^$)" /etc/squid/acessototal)  #Aqui ele lê a lista de IPs que possuem acesso ao Facebook, independentemente do horário, como existem linhas comentadas nesta lista com o nome do dono do IP, esse comando ignora essas linhas listando apenas os IPs

##BLOQUEIO DO FACEBOOK

FACEBOOK_IP_RANGE="31.13.64.0-31.13.127.255 31.13.24.0-31.13.31.255 74.119.76.0-74.119.79.255 69.63.176.0-69.63.191.255 69.171.224.0-69.171.255.255 66.220.144.0-66.220.159.255 204.15.20.0-204.15.23.255 173.252.64.0-173.252.127.255"
iptables -N FACEBOOK

## FACEBOOK DENY
for face in $FACEBOOK_IP_RANGE; do
    iptables -I FORWARD -m tcp -p tcp -m iprange --dst-range $face --dport 443 -j FACEBOOK
    iptables -I FORWARD -m tcp -p tcp -m iprange --dst-range $face --dport 80 -j FACEBOOK
done

FACEBOOK_ALLOW="$permitidos" #MSR_LIBERADO  #Aqui libera os permitidos.

for MSR_LIBERADO in $FACEBOOK_ALLOW; do
    iptables -I FACEBOOK -s $MSR_LIBERADO -j ACCEPT
done

if [ $op -eq "1" ]; then  #Aqui caso esteja no horário de expediente ele é bloqueado
    echo "Bloqueando"
    iptables -A FACEBOOK -j REJECT
fi

if [ $op -eq "2" ]; then  #E caso esteja fora do horário de serviço é liberado
    echo "Liberando"
    iptables -A FACEBOOK -j ACCEPT
fi

No meu caso incluí essas regras no próprio Firewall e programei no crontab para rodar nos horários programados. Exemplo:

30 12,13,17 * * *   root        /scripts/firewall.sh

Espero poder ter ajudado.

Outras dicas deste autor
Nenhuma dica encontrada.
Leitura recomendada

Sites flash sem problemas no Firefox

Acessando seu Ubuntu por um terminal Windows de outra rede

Sem permissões suficientes para executar /usr/sbin/pppd?

Podcasts sobre software livre

Acelerando a velocidade do seu servidor Apache 2.2

  

Comentários
[1] Comentário enviado por vmmello em 20/02/2013 - 21:13h

Olá,

Só um comentário rápido.

Se você mantém a lógica de hora dentro do script, e algum dia o pessoal tem que ir até mais tarde, e o seu chefe pede pra bloquear o Facebook até as 19 horas, você vai ter que editar o script, ajustar a hora pra um novo horário, executar, e editar de novo pra que no próximo dia seja executado na hora correta. Entendeu? Eu imagino que seria melhor se o script fosse independente de horário, e isso fosse controlado pelas entradas no cron, por exemplo:

# bloqueia as 8h e as 14h
0 8,14 * * * root /scripts/fw-facebook.sh bloqueia

# libera após as 12:30 e 18 horas
30 12 * * * root /scripts/fw-facebook.sh libera
0 18 * * * root /scripts/fw-facebook.sh libera

Desta forma, o script fica mais genérico. Modifiquei um pouco o script mantendo exatamente a sua lógica, mas apenas removendo este inconveniente, você poder ver a sugestão aqui: http://pastebin.com/x19sf6D8

[2] Comentário enviado por viniciusmathias em 20/02/2013 - 22:09h

Obrigado pelo seu comentário, mas aqui eu embuti dentro do Firewall.sh que eu possuo, para eu não precisar de 2 aquivos, desenvolvi esse script, e trocar os horaris, não é tao difícil assim, basta altetar no campo 1729 para 1859, já que meu firewall executa nas horas cheias...

[3] Comentário enviado por paulo.fernandes em 04/07/2013 - 16:36h

Olá Vinicius, estou tendo esse problema em uma instituição de ensino que trabalho, e até agora não consegui encontrar uma solução definitiva para o problema, essa dica sua foi a que mais identificou com meu caso, encontrei varios tutoriais ensinando como bloquear tudo, que não é meu caso, preciso bloquear alguns IP's apenas e o restante terão acesso normalmente, gostaria de saber se tem como enviar a configuração do seu SQUID, para eu ver como ficou suas ACL para acesso total(IP liberados para acessar o face)
Desde já agradeçoe fico no aguardo



Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts