Esse tutorial mostra como bloquear o MSN da sua rede e liberar somente para os MAC desejados.
Introdução + Iptables + Squid
Depois de muita luta, ajuda de outros usuários e pesquisas, consegui liberar o MSN da minha rede somente para os MAC desejados. Como não encontrei nenhum artigo ou tutorial em lugar algum sobre isso, resolvi escrevê-lo caso alguém tenha a mesma necessidade que eu. Como a minha rede tem DHCP, o controle por IP fica impossível, pois é uma assistência técnica e toda hora tem micros diferentes. Então eu bloqueei o MSN para todos e liberei para os MACs desejados.
SO: Slackware 12.1
Vamos aos procedimentos.
Primeiramente bloqueei com iptables. Como o MSN usa várias formas de se conectar, bloqueei ele no iptables para fazer com que só conseguisse se conectar pela porta 80, passando obrigatoriamente pelo meu Squid.
Coloque no /etc/rc.d/rc.local as seguintes regras do iptables:
iptables -A FORWARD -s rede -p tcp --dport 1863 -j REJECT
iptables -A FORWARD -s rede -d loginnet.passport.com -j REJECT
Onde rede seria a classe da rua rede interna. Ex: 192.168.1.0/24.
Feito isso o MSN só conseguirá se conectar através da porta 80 a qual iremos fazer o controle pelo Squid.
No Squid criaremos acl para cada MAC que deseja ter acesso ao MSN. Adicione no squid.conf:
#Assim estou criando acl para os micros gerente e supervisor,
#os quais terão permissão para acessar o msn.
acl gerente arp X:X:X:X:X:X
acl supervisor arp X:X:X:X:X:X
#X:X:X:X:X:X - Isso significa o MAC do micro.
#Essa acl para o MSN
acl msn url_regex -i /gateway/gateway.dll
#Aqui estamos bloqueando o msn exceto para os micros gerente e supervisor.
http_access deny msn !gerente !supervisor
[4] Comentário enviado por letwu em 03/02/2009 - 15:19h
Amigo, eu não precisei compilar o meu Squid.
Utilizo a versão 12.2 do Slackware e instalo os pacotes (pelo comando installpkg ) com a extensão .tgz, que são como se fosse executáveis (no Windows).
Eu refiz as configurações e os "paus" citados acima, não ocorrem mais, porém também não bloqueiam nada, ou melhor, não desbloqueiam. Fica tudo travado.
Só funciona se eu retirar as máquinas do Proxy. Se elas estiverem no proxy, nada feito!
Só para entendimento, uso um firewall na borda, com Squid e Iptables barrando portas, e uso um proxy com Squid e ACL para barrar conteúdo.
Aqui na minha empresa, não consegui fazer funcionar o MSN com máquinas que autenticam no proxy.
Já na empresa de um amigo, que só tem uma máquina pra Proxy, eu rodo um script no rc.local barrando as portas do MSN (portas mesmo, e não somente o gateway.dll que só pegam as versões antigas do MSN) e forço que as portas não sejam redirecionadas, e lá funciona normalmente. Porém eu não posso barrar as portas por script aqui, e nem alterar a topologia da rede por conta de um simples programa de MSN.
[5] Comentário enviado por letwu em 03/02/2009 - 18:14h
Só complementando o post anterior, no que eu fiz que FUNCIONA na empresa de um amigo.
Criei um script em /etc com o nome de Bloqueia_MSN e coloquei dentro de /etc/rc.local
O conteúdo do script é:
#!/bin/bash
IP=/usr/sbin/iptables
$IP -A INPUT -p TCP --dport 1863 -j REJECT
$IP -A INPUT -d 64.4.13.0/24 -j REJECT
$IP -A FORWARD -p TCP --dport 1863 -j REJECT
$IP -A FORWARD -d 64.4.13.0/24 -j REJECT
$IP -A FORWARD -s 192.168.254.0/24 -p tcp --dport 1863 -j REJECT
$IP -t mangle -A PREROUTING -p tcp --dport 1863 -j DROP
$IP -t mangle -A PREROUTING -d 63.208.13.126 -j DROP
$IP -t mangle -A PREROUTING -d 64.4.12.200 -j DROP
$IP -t mangle -A PREROUTING -d 64.4.12.201 -j DROP
$IP -t mangle -A PREROUTING -d 65.54.131.249 -j DROP
$IP -t mangle -A PREROUTING -d 65.54.194.118 -j DROP
$IP -t mangle -A PREROUTING -d 65.54.211.61 -j DROP
$IP -t mangle -A PREROUTING -d 207.46.104.20 -j DROP
$IP -t mangle -A PREROUTING -d 207.46.110.2 -j DROP
$IP -t mangle -A PREROUTING -d 207.46.110.254 -j DROP
$IP -t mangle -A PREROUTING -d 207.46.245.222 -j DROP
$IP -t mangle -A PREROUTING -d 207.46.245.214 -j DROP
$IP -t mangle -A PREROUTING -d 201.7.178.63 -j DROP
$IP -t mangle -A PREROUTING -d 201.7.178.63 -j REJECT
$IP -A FORWARD -s 192.168.254.0/24 -p tcp --dport 1863 -j REJECT
$IP -A FORWARD -s 192.168.254.0/24 -p tcp --dport 1863 -j REJECT
$IP -A FORWARD -s 192.168.254.0/24 -d 64.4.13.0/24 -j REJECT
$IP -A FORWARD -s 192.168.254.0/24 -d 65.54.183.192 -j REJECT
$IP -A INPUT -s 192.168.254.0/24 -d 69.64.38.128 -j REJECT
$IP -A INPUT -s 192.168.254.0/24 -d 64.191.91.149 -j REJECT
$IP -A FORWARD -s 192.168.254.0 -p tcp --dport 1863 -j REJECT
$IP -A FORWARD -s 192.168.254.0 -d loginnet.passport.com -j REJECT
$IP -A FORWARD -s 192.168.254.0/24 -p tcp --dport 1863 -j REJECT
$IP -A FORWARD -s 192.168.254.0/24 -d loginnet.passport.com -j REJECT
$IP -A FORWARD -s 192.168.254.0/24 -d messenger.hotmail.com -j REJECT
$IP -A FORWARD -s 192.168.254.0/24 -d webmessenger.msn.com -j REJECT
$IP -A FORWARD -p tcp --dport 1080 -j DROP
$IP -A FORWARD -s 196.168.254.0/24 -p tcp --dport 1080 -j REJECT
Este script bloqueia as portas do firewall no iniciar, ou seja, bloqueia as portas na mesma máquina que faz papel de Proxy Web por meio de ACL que rodam no Squid para fazer o controle de acesso e conteúdo.
Segue abaixo configuração do Squid, onde faz o controle de conteúdo e acesso.
#acl autenticados proxy_auth REQUIRED
acl all src 0.0.0.0/0.0.0.0
acl mga src 192.168.254.0/255.255.255.0
acl manager proto cache_object
acl localhost src 127.0.0.1/255.255.255.255
acl to_localhost dst 127.0.0.0/8
acl SSL_ports port 443 563
acl Safe_ports port 25 # smtp
acl Safe_ports port 110 # pop3
acl Safe_ports port 80 # http
acl Safe_ports port 21 # ftp
acl Safe_ports port 443 563 # https, snews
acl Safe_ports port 70 # gopher
acl Safe_ports port 210 # wais
acl Safe_ports port 1025-65535 # unregistered ports
acl Safe_ports port 280 # http-mgmt
acl Safe_ports port 488 # gss-http
acl Safe_ports port 591 # filemaker
acl Safe_ports port 777 # multiling http
acl CONNECT method CONNECT
#ACLs que controlam o acesso por usuários
acl total src "/etc/squid/total"
acl liberados_msn src "/etc/squid/liberados_msn"
acl limitado src "/etc/squid/limitado"
acl permitido_sites url_regex -i "/etc/squid/permitido_sites"
acl limitado_sites url_regex -i "/etc/squid/limitado_sites"
#ACLs que controlam o acesso por horário
acl manha time MTWHF 06:00-08:00
acl almoco time MTWHF 12:00-13:00