Pular para o conteúdo

Bloquear Facebook HTTPS liberando apenas alguns usuários

Dica publicada em Linux / Segurança
dalveson sanches dalveson
Hits: 10.964 Categoria: Linux Subcategoria: Segurança
  • Indicar
  • Impressora
  • Denunciar
O Viva o Linux depende da receita de anúncios para se manter. Ative os cookies aqui para nos patrocinar.
Não conseguimos carregar os anúncios. Se usa bloqueador, considere liberar o Viva o Linux para nos patrocinar.

Bloquear Facebook HTTPS liberando apenas alguns usuários

Fala galera.

Nesta dica, mostro como bloquear o Facebook através da porta 443, liberando apenas para alguns usuários. Todo o procedimento será executado no IPtables.

Vamos lá. Crie um arquivo chamado "ip_face" dentro de /etc:

# touch /etc/ip_face

Edite-o e inclua seus IPs/usuários obedecendo o seguinte padrão, um registro por linha:

192.168.0.1-Jose
192.168.0.2-Antonio

No seu script de firewall, adicione o seguinte:

for IP_FACE in `cat /etc/ip_face`
do
ip_usuario=`echo $IP_FACE | cut -d'-' -f1`
nome_usuario=`echo $IP_FACE | cut -d'-' -f2`
iptables -t filter -I FORWARD ! -d $ip_usuario -p tcp --dport 443 -m string --algo bm --string "facebook.com" -j REJECT
iptables -t filter -I FORWARD ! -s $ip_usuario -p tcp --sport 443 -m string --algo bm --string "facebook.com" -j REJECT
iptables -t filter -I OUTPUT ! -d $ip_usuario -p tcp --dport 443 -m string --algo bm --string "facebook.com" -j REJECT
iptables -t filter -I OUTPUT ! -s $ip_usuario -p tcp --sport 443 -m string --algo bm --string "facebook.com" -j REJECT
done
O Viva o Linux depende da receita de anúncios para se manter. Ative os cookies aqui para nos patrocinar.
Não conseguimos carregar os anúncios. Se usa bloqueador, considere liberar o Viva o Linux para nos patrocinar.

Agora basta reiniciar seu script de firewall.

Explicando:
  • for IP_FACE in `cat /etc/ip_face` → Local onde está salvo o arquivo "ip_face" com os IPs e nomes de usuários;
  • ip_usuario=`echo $IP_FACE | cut -d'-' -f1` → Digo que é para ler o arquivo "IP_FACE" e, dentro dele, recortar o que está antes do "-" e criar uma variável chamada de ip_usuario;
  • nome_usuario=`echo $IP_FACE | cut -d'-' -f2` → Digo que é para ler o arquivo IP_FACE e dentro dele recortar o que está apos o "-" e criar uma variável chamada de nome_usuario.

O restante, eu aplico as regras utilizando o módulo string apenas na variável "ip_usuario" na porta 443 nas chains FORWARD e OUTPUT, nos protocolos TCP de origem e destino.

Abraços.

O Viva o Linux depende da receita de anúncios para se manter. Ative os cookies aqui para nos patrocinar.
Não conseguimos carregar os anúncios. Se usa bloqueador, considere liberar o Viva o Linux para nos patrocinar.

Samba - Auditoria de logs

Proteção contra vulnerabilidade POODLE SSLv3

Fedora similar ao BackTrack

Remover vírus do pendrive e até de HDs com Linux e Windows

Para quem está na Deep Web

Adicionando o IMSpector em seu pfSense

#1 Comentário enviado por iaecengcvl em 06/02/2013 - 10:52h
Funcionou bacana....

Mas como colocaria o time para que fosse liberdo no hirário do almoço (12h00 às 14h00)?
#2 Comentário enviado por dalveson em 06/02/2013 - 11:11h

[1] Comentário enviado por iaecengcvl em 06/02/2013 - 10:52h:

Funcionou bacana....

Mas como colocaria o time para que fosse liberdo no hirário do almoço (12h00 às 14h00)?


ficaria assim:

iptables -t filter -I FORWARD ! -d $ip_usuario -p tcp --dport 443 -m string --algo bm --string "facebook.com" -m time --timestart 08:00 --timestop 18:00 -j REJECT

onde:
timestart é a hjora que a regra passa a valer;
timestop é a hora que a regra para de funcionar.

inclusive vc pode fazer muito mais, nesse link http://www.vivaolinux.com.br/artigo/IPtables-Trabalhando-com-Modulos tem um otimo artigo que ensina muitos outros modulos interessantes para o iptbles.

att
#3 Comentário enviado por alexccastilho em 10/04/2013 - 09:32h
Bom dia, saberia me dizer como fazer com que estas regras funcionem da seguinte forma:

Todo mundo tem acesso ao facebook, com excessão de quem estiver na lista ip_face?

Portanto, colocaria apenas os IPs que não quero que acesse o facebook dentro do arquivo.

Grato,

Alex

PS.: Já tentei:

for IP_FACE in `cat /etc/ip_face`
do
ip_usuario=`echo $IP_FACE | cut -d'-' -f1`
nome_usuario=`echo $IP_FACE | cut -d'-' -f2`
iptables -t filter -I FORWARD ! -d $ip_usuario -p tcp --dport 443 -m string --algo bm --string "facebook.com" -j ACCEPT
iptables -t filter -I FORWARD ! -s $ip_usuario -p tcp --sport 443 -m string --algo bm --string "facebook.com" -j ACCEPT
iptables -t filter -I OUTPUT ! -d $ip_usuario -p tcp --dport 443 -m string --algo bm --string "facebook.com" -j ACCEPT
iptables -t filter -I OUTPUT ! -s $ip_usuario -p tcp --sport 443 -m string --algo bm --string "facebook.com" -j ACCEPT
done

e,

for IP_FACE in `cat /etc/ip_face`
do
ip_usuario=`echo $IP_FACE | cut -d'-' -f1`
nome_usuario=`echo $IP_FACE | cut -d'-' -f2`
iptables -t filter -I FORWARD -d $ip_usuario -p tcp --dport 443 -m string --algo bm --string "facebook.com" -j REJECT
iptables -t filter -I FORWARD -s $ip_usuario -p tcp --sport 443 -m string --algo bm --string "facebook.com" -j REJECT
iptables -t filter -I OUTPUT -d $ip_usuario -p tcp --dport 443 -m string --algo bm --string "facebook.com" -j REJECT
iptables -t filter -I OUTPUT -s $ip_usuario -p tcp --sport 443 -m string --algo bm --string "facebook.com" -j REJECT
done

De qualquer forma sem efetividade.
#4 Comentário enviado por joserf em 08/06/2013 - 18:14h
fiz no ubuntu 12.04 e não rolou. alguma dica.
#5 Comentário enviado por marlluslustosa em 25/06/2013 - 21:51h
Só uma dica: Em uma rede com muitos usuários esse método vai deixar o servidor muito lento, pois a cada requisição o Netfilter (backend do iptables) vai abrir todo pacote que chegar e comparar o campo referente a string da url com "facebook.com", e isso é um procedimento muito custoso.

Uma boa solução seria bloquear a porta 443 pro facebook com iptables ou bloqueá-lo usando algum proxy de aplicação (squid, por exemplo).

Contribuir com comentário

Entre na sua conta para comentar.