Linux slogan
Visite também: Segurança Linux · BR-Linux.org · Dicas-L · Doode · NoticiasLinux · SoftwareLivre.org · UnderLinux



» Screenshot
Linux: Ubuntu 12.04 Beta 1
Por azk4n
» Login
Login:
Senha:

Se você ainda não possui uma conta, clique aqui.

Esqueci minha senha


Dica

IPtables/Squid transparentes - Bloqueando Facebook em HTTP/HTTPS por horários
Linux user
Publicado por Talis Paes em 18/08/2012

Login: talis, 4339 pontos | Blog: http://www.ceres.udesc.br
[ Hits: 3078 ]

IPtables/Squid transparentes - Bloqueando Facebook em HTTP/HTTPS por horários

Não encontrei formas de fazer Squid/proxy transparente bloquear o HTTPS/443 sem "pirar" os certificados.

Tentei então, bloquear via IPtables o endereço facebook.com, no entanto, ele acabou bloqueando junto, muitas páginas que possuem: "eu curto" - do Facebook (blogs, g1.com, r7.com, ufsc.br, etc), que existe na maioria das páginas.

Implementando bloqueio

Em artigos diferentes, encontrei a solução ideal para o bloqueio via IPtables sem bloquear as páginas, usando o módulo string e o módulo time.

Tudo que era pela porta 80/HTTP, usei o Squid/SquidGuard normalmente, e para bloquear a porta 443/HTTPS das páginas facebook.com, orkut.com e youtube.com, eu usei os comandos abaixo.

Bloqueio do Facebook das: 07:30 às 11:45, e das: 13:30 às 17:45:

# iptables -t filter -I FORWARD -p tcp --dport 443 -m string --algo bm --string "facebook.com" -m time --timestart 07:30 --timestop 11:45 -j DROP
# iptables -t filter -I FORWARD -p tcp --sport 443 -m string --algo bm --string "facebook.com" -m time --timestart 07:30 --timestop 11:45 -j DROP
# iptables -t filter -I FORWARD -p tcp --dport 443 -m string --algo bm --string "facebook.com" -m time --timestart 13:30 --timestop 17:45 -j DROP
# iptables -t filter -I FORWARD -p tcp --sport 443 -m string --algo bm --string "facebook.com" -m time --timestart 13:30 --timestop 17:45 -j DROP


Bloqueio do Orkut das: 07:30 às 11:45, e das: 13:30 às 17:45:

# iptables -t filter -I FORWARD -p tcp --dport 443 -m string --algo bm --string "orkut.com" -m time --timestart 07:30 --timestop 11:45 - j DROP
# iptables -t filter -I FORWARD -p tcp --sport 443 -m string --algo bm --string "orkut.com" -m time --timestart 07:30 --timestop 11:45 -j DROP
# iptables -t filter -I FORWARD -p tcp --dport 443 -m string --algo bm --string "orkut.com" -m time --timestart 13:30 --timestop 17:45 -j DROP
# iptables -t filter -I FORWARD -p tcp --sport 443 -m string --algo bm --string "orkut.com" -m time --timestart 13:30 --timestop 17:45 -j DROP


Bloqueio do YouTube das: 07:30 às 11:45, e das: 13:30 às 17:45:

# iptables -t filter -I FORWARD -p tcp --dport 443 -m string --algo bm --string "youtube.com" -m time --timestart 07:30 --timestop 11:45 -j DROP
# iptables -t filter -I FORWARD -p tcp --sport 443 -m string --algo bm --string "youtube.com" -m time --timestart 07:30 --timestop 11:45 -j DROP
# iptables -t filter -I FORWARD -p tcp --dport 443 -m string --algo bm --string "youtube.com" -m time --timestart 13:30 --timestop 17:45 -j DROP
# iptables -t filter -I FORWARD -p tcp --sport 443 -m string --algo bm --string "youtube.com" -m time --timestart 13:30 --timestop 17:45 -j DROP


Como funciona o bloqueio

O firewall abre todos os pacotes e procura a string (ex.: facebook.com), e quando encontra dentro do determinado horário, ele o descarta.

Nesta forma, são apenas os pacotes que contém determinada string que são descartados, assim, todos os sites que possuem o botão "eu curto" abrem normalmente.

Se você também tentar bloquear via IPtables os pacotes com a string "facebook.com" que são direcionadas para a porta 80, fará com que o firewall bloqueie a maioria das páginas integralmente.

Deixe que o Squid filtre a porta 80. Use esta regra apenas para o 443.

Ao tentar abrir o facebook.com com HTTPS na frente com este bloqueio, no navegador não irá aparecer a tela de bloqueio como ocorre com o Squid, vai dar apenas "time out" ou "página não encontrada".

Espero ter ajudados vocês, porque eu "pastei" muito até achar esta solução.


Outras dicas deste autor
Nenhuma dica encontrada.

Leitura recomendada
   Dica Linux recomendada Criar sua própria biblioteca C++
   Dica Linux recomendada Corrigindo o problema das teclas CTRL+F2 e ALT+F2 no Gentoo
   Dica Linux recomendada Medidor de energia e bateria no Linux
   Dica Linux recomendada GeForce 7300GS no SuSE 10.2
   Dica Linux recomendada Drivers de impressoras pelo APT no Debian

Comentários
[1] Comentário enviado por Thalysson S em 19/08/2012 - 23:18h:

Ótima dica !


[2] Comentário enviado por Samuray007 em 21/08/2012 - 20:39h:

Saudações. Muito boa essa configuração.
Preciso de ajuda pois aparece esse erro ao subir essa regra de bloqueio:

iptables v1.3.6: Couldn't load match `time':/lib/iptables/libipt_time.so: cannot open shared object file: No such file or directory

Como faço para resolver esse problema?


[3] Comentário enviado por jgmenotti em 22/08/2012 - 14:05h:

Boa tarde,

Esta configuração funcionou para bloquear facebook pelo IPTABLES, mas somente para estações com windows XP. As estações com Windows 7 estranhamente, continuam acessando via https o facebook. Com você aconteceu esta situação ?


[4] Comentário enviado por Samuray007 em 22/08/2012 - 15:01h:

Boa tarde.
Até agora está tudo bloqueado. Win XP, iPhone, celulares, Win Seven.

Estou pesquisando como liberar o acesso para alguns PCs e como instalar o bloqueio por horário que não deu certo. Apresentou:

iptables v1.3.6: Couldn't load match `time':/lib/iptables/libipt_time.so: cannot open shared object file: No such file or directory.

Pesquisando, assim que conseguir colocar a funcionar aviso como fiz para funcionar redondinho.


[5] Comentário enviado por flaviomstes em 20/09/2012 - 14:37h:

Ola companheiro, consegui bloquear o fecebook, mas parece que na hora é subi o site faceboook, as regras não sobre, o que pode ser... ja verifiquei a hora do sistema, ela aprincipio estava errado, mas concertei, mas mesmo assim ainda continua não subido as regras, Obrigado..


[6] Comentário enviado por talis em 30/10/2012 - 17:25h:


[3] Comentário enviado por jgmenotti em 22/08/2012 - 14:05h:

Boa tarde,

Esta configuração funcionou para bloquear facebook pelo IPTABLES, mas somente para estações com windows XP. As estações com Windows 7 estranhamente, continuam acessando via https o facebook. Com você aconteceu esta situação ?


O bloqueio é de baixo nível, ele faz o filtro direto no pacote TCP, indiferente do sistema operacional, desta forma o bloqueio vale para Windows, Linux, Mac OS, Android e outros.
A única forma de ele não estar bloqueado o Windows 7 é por estas estações não estão passando pelo filtro. Verifica:
Se essas estações não estão em outra faixa de IP;
Se os IPs dessas estações não estão liberadas no squid;
Se não existe 2 serviços DHCP provendo IPs na rede.

Att,

Talis


[7] Comentário enviado por talis em 30/10/2012 - 17:25h:


[1] Comentário enviado por Thalysson S em 19/08/2012 - 23:18h:

Ótima dica !


Obrigado, aqui ajudou muito.


[8] Comentário enviado por talis em 30/10/2012 - 17:27h:


[2] Comentário enviado por Samuray007 em 21/08/2012 - 20:39h:

Saudações. Muito boa essa configuração.
Preciso de ajuda pois aparece esse erro ao subir essa regra de bloqueio:

iptables v1.3.6: Couldn't load match `time':/lib/iptables/libipt_time.so: cannot open shared object file: No such file or directory

Como faço para resolver esse problema?



Ola,

Você precisa do Módulo do IPTABLES chamado TIME. Verifica na sua distribuição como deve proceder com a instalação do mesmo.
No meu caso eu instalei com o apt-get install.

att,

Talis


[9] Comentário enviado por talis em 30/10/2012 - 17:32h:


[5] Comentário enviado por flaviomstes em 20/09/2012 - 14:37h:

Ola companheiro, consegui bloquear o fecebook, mas parece que na hora é subi o site faceboook, as regras não sobre, o que pode ser... ja verifiquei a hora do sistema, ela aprincipio estava errado, mas concertei, mas mesmo assim ainda continua não subido as regras, Obrigado..


Ola,

Eu não entendi o que não deu certo. Você esta dizendo que na hora que era para liberar, o mesmo não libera?
Se for isto, verifica se o fuso horário não esta desconfigurado, eu tive esse problema no squid a um tempo atrás. Funciona assim, você diz para o sistema que está com +3 horas (horário de Brasília) mas o sistema (squid ou iptables) quando usa o horário do kernel, ele usa sem o fuso horário. Assim os bloqueis não funcionam mesmo.
Aqui no #VivaoLinux tem vários tutoriais para diversas distribuições.


[10] Comentário enviado por cslima em 22/11/2012 - 01:29h:

Essa dica é ótima e realmente bloqueia o "face", mas tive que desabilitar ela do meu firewall, pois com essas regras o outlook simplesmente nao funciona! Tentei de tudo, mas não tem jeito, o outlook só volta a receber os emails quando esta regra de bloqueio é desabilitada... O que será que acontece? Um possível explicação para isso seria o fato de que a maioria dos emals recebidos na minha rede interna contém imagens com links para o facebook. Existe algum "antídoto" para esse "efeito colateral" da regra?


[11] Comentário enviado por talis em 22/11/2012 - 10:53h:


[10] Comentário enviado por cslima em 22/11/2012 - 01:29h:

Essa dica é ótima e realmente bloqueia o "face", mas tive que desabilitar ela do meu firewall, pois com essas regras o outlook simplesmente nao funciona! Tentei de tudo, mas não tem jeito, o outlook só volta a receber os emails quando esta regra de bloqueio é desabilitada... O que será que acontece? Um possível explicação para isso seria o fato de que a maioria dos emals recebidos na minha rede interna contém imagens com links para o facebook. Existe algum "antídoto" para esse "efeito colateral" da regra?


Esta linha de bloqueio só funciona na porta 443, então o teu outlook deve restar trafegando nesta porta. Para não precisar mudar o servidor de e-mail, ou ir em todas as maquinas, eu recomendo fazer uma exceção.

Você pode criar uma exceção para o endereço IP do servidor de e-mails, basta colocar sem aspas: " ! -d IP_DO_SERVIDOR " e " ! -s IP_DO_SERVIDOR ".

Abaixo eu usei com exemplo o ip do terra.com.br, dessa forma ele irá ignorar todos os pacotes direcionados e originado no respectivo IP. No lugar do IP do terra.com.br, você pode colocar o IP do seu servidor de e-mail. Também pode ser colocado o IP de origem do usuário, liberando o acesso a uma maquina interna (mas tem que inverter a origem e destino -d -s ).

# iptables -t filter -I FORWARD ! -d 200.154.56.80 -p tcp --dport 443 -m string --algo bm --string "facebook.com" -m time --timestart 07:30 --timestop 11:45 -j DROP
# iptables -t filter -I FORWARD ! -s 200.154.56.80 -p tcp --sport 443 -m string --algo bm --string "facebook.com" -m time --timestart 07:30 --timestop 11:45 -j DROP
# iptables -t filter -I FORWARD ! -d 200.154.56.80 -p tcp --dport 443 -m string --algo bm --string "facebook.com" -m time --timestart 13:30 --timestop 17:45 -j DROP
# iptables -t filter -I FORWARD ! -s 200.154.56.80 -p tcp --sport 443 -m string --algo bm --string "facebook.com" -m time --timestart 13:30 --timestop 17:45 -j DROP


[12] Comentário enviado por cslima em 22/11/2012 - 13:08h:

Talis, te agradeço pela resposta... Vou testar e posteriormente posto aqui o resultado. Vlw!


[13] Comentário enviado por cslima em 26/11/2012 - 00:35h:

Talis, preciso corrigir uma coisa que eu disse aqui...

Sua dica está PERFEITA. No meu caso, não estava funcionando porque eu tinha feito a regra de uma forma diferente, SEM especificar a porta! Por isso ocorria o erro com o outlook. Veja, minha regra estava assim:

iptables -I FORWARD -m string --algo bm --string "facebook.com" -j DROP

Então só tive que especificar a porta, bem como no seu exemplo, e tudo funcionou ok! Nem foi preciso colocar a exceção...

Vou acrescentar isso no tópico que abri pedindo ajuda, e vou compartilhar a sua dica com quem mais precisar... OBRIGADO!



Contribuir com comentário


  
Para executar esta ação você precisa estar logado no site, caso contrário, tudo o que for digitado será perdido.
Responsável pelo site: Fábio Berbert de Paula - Conteúdo distribuído sob licença GNU FDL
Site hospedado por:

Viva o Linux

A maior comunidade Linux da América Latina! Artigos, dicas, tutoriais, fórum, scripts e muito mais. Ideal para quem busca auto-ajuda em Linux.