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
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.
Outras dicas deste autor
Samba - Auditoria de logs
Leitura recomendada
Configurando o APT do seu Ubuntu para usar o proxy
Liberar SNMP no Firewall do Linux
Monitorando o seu micro
Backtrack 4 - Atualizando pasta de exploits através do site milw0rm
Controle de banda com Shaper
Comentários
Funcionou bacana....
Mas como colocaria o time para que fosse liberdo no hirário do almoço (12h00 às 14h00)?
[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
Mensagem
[quote]
[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)?[/quote]
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
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.
Mensagem
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.
fiz no ubuntu 12.04 e não rolou. alguma dica.
Mensagem
fiz no ubuntu 12.04 e não rolou. alguma dica.
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).
Mensagem
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
Enviar