You are on page 1of 11

Controle de acesso internet com Squid

fs.schmidt 13/10/2010 Apresento uma configurao para controle de acesso internet com Squid, limitando o acesso por grupos. Essa configurao inclui tambm controle de acesso ao aplicativo MSN. Por: Fabio Soares Schmidt [ Hits: 54145 ] Conceito: 9.8 Denuncie + Favoritos amigo Enviar artigo + quero dar nota ao artigo Verso para impressora Indicar para um

Nosso cenrio Ol galera! Neste artigo apresento uma configurao para utilizao do Squid para controle de acesso internet por grupos de usurios. Demonstrarei duas configuraes, uma por com controle por endereo IP e outra com autenticao NCSA_AUTH. Neste tutorial iremos utilizar a distribuio CentOS, verso 5.5, conforme abaixo: Servidor:

hostname: centos.laboratorio IP: 192.168.100.70/24 Porta do Squid: 3128

Nosso controle de acesso: Primeiramente criaremos uma ACL com sites que sempre sero liberados, estes sites sero liberados para toda a rede, como sites do governo , atualizao de anti-vrus, Windows update etc. Tambm criaremos uma ACL de sites que SEMPRE sero BLOQUEADOS, todos os usurios iro passar por esse controle, onde voc pode bloquear pornografia, redes sociais etc. Teremos 3 grupos de acesso primrios:

ACESSO TOTAL: Os usurios neste grupo tero acesso liberado, EXCETO ao contedo que estiver bloqueado na lista de SEMPRE BLOQUEADOS.

ACESSO CONTROLADO: Estes usurios acessam o contedo da lista SEMPRE LIBERADO e uma segunda lista criada para este grupo. SEM ACESSO: Os usurios podem somente utilizar o contedo liberado na lista SEMPRE LIBERADO, afinal precisamos permitir que o usurio efetue atualizaes do Windows, Anti-vrus, acesse sua conta corrente, extrato de imposto de renda,etc..

Grupo secundrio de acesso: Os usurios deste grupo podem estar em qualquer grupo primrio, por exemplo, podemos liberar a navegao para um usurio e no permitir que o mesmo tenha acesso ao MSN.

SEM MSN: Usurios que no tero acesso ao MSN

Outros recursos Iremos configurar o Squid para forar cache das atualizaes efetuadas pelo Windows Update e de ferramentas anti-vrus (eu testei: Avira, Symantec e Avast, se fizerem a configurao com outro produto agradeo se compartilharem !!). Devemos estar cientes que ao aumentar o tamanho do cache iremos perder em desempenho, porm economizaremos banda. As possibilidades com o Squid so imensas, possvel utilizar autenticao em um PDC (samba), Active Directory, Openldap, MySQL ou at mesmo controlar o acesso por endereo IP ou MAC. Com este artigo procuro passar o conhecimento para inicial para compartilhamento e controle de Internet com o Squid, espero que voc consiga migrar essa configurao para outras formas de autenticao e criar suas prprias regras.

Configurao inicial e controle por IP Aps instalar o sistema operacional, vamos instalar o Squid: (Execute esse procedimento em ambas as configuraes, se for utilizar controle por IP ou usurio) # yum install squid Aps o Squid ser instalado, o arquivo de configurao estar no diretrio /etc/squid, entre nesse diretrio e inicie a configurao do Squid:

# cd /etc/squid # mv squid.conf squid.conf.original Nesse primeiro exemplo vamos utilizar a configurao vamos utilizar o controle por endereo IP, crie o arquivo de configurao (squid.conf) desta forma: acl manager proto cache_object acl localhost src 127.0.0.1/32 # Porta para squid escutar http_port 192.168.100.70:3128 #Substitua pelo endereo IP do seu servidor #Configuracao de gerenciamento de cache cache_mem 128 MB #altere conforme a capacidade da sua maquina maximum_object_size 100 MB #Esta diretiva informa o tamanho maximo do objeto quer sera salvo em cache, ajuste conforme sua necessidade maximum_object_size_in_memory 8 KB #Tamanho maximo do objeto em cache que pode ser armazenado na memria ram #Locais para armazenamento do cache #Ajuste conforme as suas necessidades cache_dir aufs /var/spool/squid/cache1 3000 64 256 cache_dir aufs /var/spool/squid/cache2 3000 64 256 cache_dir aufs /var/spool/squid/cache3 3000 64 256 #Portas aceitas para navegacao acl SSL_ports port 443 acl Safe_ports port 80 # http acl Safe_ports port 21 # ftp acl Safe_ports port 443 # https 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 http_access allow manager localhost http_access deny manager # Deny requests to certain unsafe ports http_access deny !Safe_ports

# Deny CONNECT to other than secure SSL ports http_access deny CONNECT !SSL_ports #Cache windowsupdate refresh_pattern windowsupdate.com/.*\.(cab|exe|dll|msi) 10080 100% 43200 reload-intoims refresh_pattern download.microsoft.com/.*\.(cab|exe|dll|msi) 10080 100% 43200 reloadinto-ims refresh_pattern www.download.microsoft.com/.*\.(cab|exe|dll|msi) 10080 100% 43200 reload-into-ims refresh_pattern www.microsoft.com/.*\.(cab|exe|dll|msi) 10080 100% 43200 reload-intoims refresh_pattern au.download.windowsupdate.com/.*\.(cab|exe|dll|msi) 4320 100% 43200 reload-into-ims refresh_pattern download.windowsupdate.com/.*\.(cab|exe|dll|msi) 4320 100% 43200 reload-into-ims refresh_pattern www.download.windowsupdate.com/.*\.(cab|exe|dll|msi) 4320 100% 43200 reload-into-ims #Cache atulizacao avira refresh_pattern personal.avira-update.com/.*\.(cab|exe|dll|msi|gz) 10080 100% 43200 reload-into-ims #Cache atualizacao symantec refresh_pattern liveupdate.symantecliveupdate.com/.*\.(cab|exe|dll|msi) 10080 100% 43200 reload-into-ims refresh_pattern symantecliveupdate.com/.*\.(cab|exe|dll|msi) 10080 100% 43200 reloadinto-ims #Cache avast refresh_pattern avast.com/.*\.(vpu|cab|stamp|exe) 10080 100% 43200 reload-into-ims

# # REGRAS PERSONALIZADAS # CRIADO POR FABIO SOARES SCHMIDT - fabio@improve.inf.br # #Estacoes da rede local acl redegeral src "/etc/squid/estacoes/redegeral.txt" #Usuarios com acesso bloqueado #Acessam somente o conteudo da regra sempreliberados acl semacesso src "/etc/squid/estacoes/semacesso.txt"

#Usuarios com acesso controlado #Acessam somente o conteudo da regra sempre liberados e a lista criada para este grupo acl acessocontrolado src "/etc/squid/estacoes/acessocontrolado.txt" #Usuarios com acesso total, EXCETO sites de conteudo indesejado acl acessototal src "/etc/squid/estacoes/acessototal.txt" #Sites liberados para TODOS acl sempreliberados url_regex "/etc/squid/sites/sempreliberados.txt" #Sites liberados para usuarios com acesso controlado acl sitesliberados url_regex "/etc/squid/sites/sitesliberados.txt" #Sites bloqueados para TODOS, com conteudo indesejado acl bloqueados url_regex "/etc/squid/sites/bloqueados.txt" ##Controle do MSN acl msnmessenger url_regex -i gateway/gateway.dll? login.live.com acl MSN rep_mime_type -i ^application/x-msn-messenger$ acl webmsn url_regex "/etc/squid/sites/webmsn.txt" #Sites de acesso ao msn #Estaes sem acesso ao msn acl semsn src "/etc/squid/estacoes/semmsn.txt" #Aplicao das regras MSN http_access deny semmsn MSN http_access deny semmsn msnmessenger http_access deny semmsn webmsn ##APLICAO DAS REGRAS #Libera sites que serao sempre liberados para toda a rede http_access allow redegeral sempreliberados #Nega acesso ao sites de conteudo indeseajado http_access deny bloqueados #Nega usuarios sem acesso http_access deny semacesso #Libera sites para os usuarios de acesso controlado http_access allow acessocontrolado sitesliberados #Fecha o acesso para usuarios de acesso controlado

http_access deny acessocontrolado #Libera acesso para usuarios com todos sites liberados, excetos sites de conteudo indesejado http_access allow acessototal #Nega qualquer acesso que nao se encaixar nas regra acima http_access deny all

Controle de acessos por usurio Neste exemplo vamos utilizar a configurao por usurio utilizando a autenticao com NCSA_AUTH, crie o arquivo de configurao (squid.conf) conforme abaixo: acl manager proto cache_object acl localhost src 127.0.0.1/32 # METODO DE AUTENTICACAO: NCSA_AUTH # O diretorio padrao dos plugins de autenticacao no CENTOS ficam no diretorio abaixo # caso utilize outra distribuicao modifique o caminho auth_param basic program /usr/lib/squid/ncsa_auth /etc/squid/usuarios/passwd auth_param basic children 5 #Mensagem quer sera exibida ao usuario no navegador auth_param basic realm Acesso restrito - Digite seu Login # Porta para squid escutar http_port 192.168.100.70:3128 #Substitua pelo IP do seu servidor #Configuracao de gerenciamento de cache cache_mem 128 MB #altere conforme a capacidade da sua maquina maximum_object_size 100 MB #Esta diretiva informa o tamanho mximo do objeto quer ser salvo em cache, ajuste conforme sua necessidade maximum_object_size_in_memory 100 KB #Tamanho mximo do objeto em cache que pode ser armazenado na memria ram #Locais para armazenamento do cache #Ajuste conforme as suas necessidades cache_dir aufs /var/spool/squid/cache1 3000 64 256 cache_dir aufs /var/spool/squid/cache2 3000 64 256 cache_dir aufs /var/spool/squid/cache3 3000 64 256 #Portas aceitas para navegacao

acl SSL_ports port 443 acl Safe_ports port 80 # http acl Safe_ports port 21 # ftp acl Safe_ports port 443 # https 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 ttp_access allow manager localhost http_access deny manager # Deny requests to certain unsafe ports http_access deny !Safe_ports # Deny CONNECT to other than secure SSL ports http_access deny CONNECT !SSL_ports #Cache windowsupdate refresh_pattern windowsupdate.com/.*\.(cab|exe|dll|msi) 10080 100% 43200 reload-intoims refresh_pattern download.microsoft.com/.*\.(cab|exe|dll|msi) 10080 100% 43200 reloadinto-ims refresh_pattern www.download.microsoft.com/.*\.(cab|exe|dll|msi) 10080 100% 43200 reload-into-ims refresh_pattern www.microsoft.com/.*\.(cab|exe|dll|msi) 10080 100% 43200 reload-intoims refresh_pattern au.download.windowsupdate.com/.*\.(cab|exe|dll|msi) 4320 100% 43200 reload-into-ims refresh_pattern download.windowsupdate.com/.*\.(cab|exe|dll|msi) 4320 100% 43200 reload-into-ims refresh_pattern www.download.windowsupdate.com/.*\.(cab|exe|dll|msi) 4320 100% 43200 reload-into-ims #Cache atulizacao avira refresh_pattern personal.avira-update.com/.*\.(cab|exe|dll|msi|gz) 10080 100% 43200 reload-into-ims #Cache atualizacao symantec refresh_pattern liveupdate.symantecliveupdate.com/.*\.(cab|exe|dll|msi) 10080 100% 43200 reload-into-ims

refresh_pattern symantecliveupdate.com/.*\.(cab|exe|dll|msi) 10080 100% 43200 reloadinto-ims #Cache avast refresh_pattern avast.com/.*\.(vpu|cab|stamp|exe) 10080 100% 43200 reload-into-ims # REGRAS PERSONALIZADAS # CRIADO POR FABIO SOARES SCHMIDT - fabio@improve.inf.br # #Estacoes da rede local acl redegeral src "/etc/squid/estacoes/redegeral.txt" #Usuarios com acesso bloqueado #Acessam somente o conteudo da regra sempreliberados acl semacesso proxy_auth "/etc/squid/estacoes/semacesso.txt" #Usuarios com acesso controlado #Acessam somente o conteudo da regra sempre liberados e a lista criada para este grupo acl acessocontrolado proxy_auth "/etc/squid/estacoes/acessocontrolado.txt" #Usuarios com acesso total, EXCETO sites de conteudo indesejado acl acessototal proxy_auth "/etc/squid/estacoes/acessototal.txt" #Sites liberados para TODOS acl sempreliberados url_regex "/etc/squid/sites/sempreliberados.txt" #Sites liberados para usuarios com acesso controlado acl sitesliberados url_regex "/etc/squid/sites/sitesliberados.txt" #Sites bloqueados para TODOS, com conteudo indesejado acl bloqueados url_regex "/etc/squid/sites/bloqueados.txt" ##Controle do MSN acl msnmessenger url_regex -i gateway/gateway.dll? login.live.com acl MSN rep_mime_type -i ^application/x-msn-messenger$ acl webmsn url_regex "/etc/squid/sites/webmsn.txt" #Sites de acesso ao msn #Estaes sem acesso ao msn acl semsn proxy_auth "/etc/squid/estacoes/semmsn.txt" #Aplicao das regras MSN http_access deny semmsn MSN http_access deny semmsn msnmessenger http_access deny semmsn webmsn

##APLICAO DAS REGRAS #Exige autenticacao acl autenticacao proxy_auth REQUIRED #Libera sites que serao sempre liberados para toda a rede http_access allow redegeral sempreliberados #Nega acesso ao sites de conteudo indeseajado http_access deny bloqueados #Nega usuarios sem acesso http_access deny semacesso #Libera sites para os usuarios de acesso controlado http_access allow acessocontrolado sitesliberados #Fecha o acesso para usuarios de acesso controlado http_access deny acessocontrolado #Libera acesso para usuarios com todos sites liberados, excetos sites de conteudo indesejado http_access allow acessototal #Nega qualquer acesso que nao se encaixar nas regra acima http_access deny all

Criando os arquivos para controle de acesso Vamos criar os arquivos onde iremos definir o controle de acesso: (Os mesmos arquivos sero utilizados para controle por endereo IP ou usurio, portanto o procedimento o mesmo para ambas as configuraes) # mkdir /etc/squid/estacoes # mkdir /etc/squid/sites # cd /etc/squid/estacoes # touch redegeral.txt semacesso.txt acessocontrolado.txt acessototal.txt sempreliberados.txt semmsn.txt # cd /etc/squid/sites # touch sempreliberados.txt sitesliberados.txt bloqueados.txt webmsn.txt

Feito isso, edite o arquivo redegeral.txt e adicione a sua rede, conforme o exemplo abaixo: (Se tiver mais de uma faixa, adicione o endereo em cada linha) 192.168.100.0/24

Agora voc pode editar os arquivos com os sites bloqueados, liberados etc e determinar quais usurios estaro em cada grupo. Como estamos utilizando a configurao para controle por acesso IP, basta adicionar o IP da estao em cada linha no grupo desejado: # vim /etc/squid/estacoes/acessototal.txt 192.168.100.1 #Fulano 192.168.100.2 #Beltrano

# vim /etc/squid/estacoes/semacesso.txt 192.168.100.3 #Sicrano

Segue tambm um exemplo de lista de bloqueio de sites para acesso ao msn (/etc/squid/sites/webmsn.txt): webmessenger.msn.com msn2go.com phonefox.com e-messenger.net meebo.com

Em ambas as configuraes precisamos criar os diretrio de cache do Squid antes de iniciar o servio do mesmo: # squid -z Aps executar a criao do cache, inicie o servio: # service squid start

Finalizando Neste momento, se voc conseguiu criar os diretrios de cache e inicializar os servios, o seu servidor proxy j est funcionando, bastando efetuar a configurao no navegador das

estaes, podendo automatizar isso atravs de um servidor DNS ou DHCP, ou utilizar proxy transparante (para controle por IP). Para editar os arquivos de sites ou estaes voc pode utilizar o vi mesmo, cada entrada deve ser adicionada em uma linha. Como utilizei o filtro url_regex para os sites, ele procura a palavra no endereo. Portanto, se voc editar o arquivo com a palavra orkut, ele ir bloquear orkut.com, orkut.com.br etc. Voc pode bloquear o endereo globo.com e liberar gazetaonline.globo.com por exemplo. Obs.:

Se o usurio no estiver em nenhum dos grupos ele ter as mesmas permisses do grupo "semacesso"; Se o mesmo endereo estiver na lista de bloqueados e permitidos a liberao prevalecer; No arquivo de configurao foram criados 3 diretrios para cache com limite de 3GB cada, altere isso conforme a sua necessidade, se voc quiser criar mais diretrios apenas adicione a linha no squid.conf e execute o comando para criao do cache novamente.

Espero que este artigo tenha contribudo no seu aprendizado e espere mais artigos sobre o Squid. Agradeo se visitar o meu blog:respirandolinux.wordpress.com OBRIGADO!

You might also like