Você está na página 1de 11

Instalao e configurao bsica

O Squid, um servidor de Proxy, trabalha como sada principal da rede. Com isso, podemos centralizar nosso foco em segurana (polticas de acesso, autenticao, etc.) em uma nica mquina.

O Squid trabalha com os principais protocolos da Internet, alguns deles so: HTTP, HTTPS, FTP.

O Squid um Software Livre licenciado pela GPL, sua utilizao pode nos trazer vrias vantagens, como: Autenticao; Controle de acesso; Cache; Controle centralizado; Registros de acesso, etc.

Ele tambm atua como Proxy transparente evitando que usurios "espertinhos" possam burlar o controle de acesso.

Bem, chega de teoria e vamos comear o trabalho. Este tutorial voltado distribuies baseadas no Debian.

O Squid formado de um nico pacote, o que torna sua instalao extremamente fcil:

# apt-get install squid

Depois que instalamos o Squid, vamos renomear o arquivo de configurao para criarmos um do zero:

# mv /etc/squid/squid.conf /etc/squid/squid.conf.orig # pico /etc/squid/squid.conf

Vamos criar uma configurao bsica no arquivo, adicionando as seguintes linhas:

http_port 3128 visible_hostname KORZOS

acl all src 0.0.0.0/0.0.0.0 acl manager proto cache_object acl localhost src 127.0.0.1/255.255.255.255 acl SSL_ports port 443 563 acl Safe_ports port 21 80 443 563 70 210 280 488 59 777 901 1025-65535 acl purge method PURGE acl CONNECT method CONNECT

http_access allow manager localhost http_access deny manager http_access allow purge localhost http_access deny purge http_access deny !Safe_ports http_access deny CONNECT !SSL_ports

acl redelocal src 192.168.0.0/24

http_access allow localhost http_access allow redelocal http_access deny all

Depois, d um:

# /etc/init.d/squid restart

...Que seu Squid j deve estar em pleno funcionamento.

Entendendo a configurao Agora, precisamos descobrir para que serve cada uma destas linhas: http_port 3128: Define em qual porta o Squid vai atuar, a porta default a 3128, mas podemos definir qualquer outra porta. visible_hostname KORZOS: Define o nome do servidor, lembre-se de substituir o "KORZOS" pelo nome do seu servidor. acl all src 0.0.0.0/0.0.0.0: Esta linha cria uma ACL, uma poltica de acesso com nome "all" contendo qualquer IP. acl localhost src 127.0.0.1/255.255.255.255: Aqui criamos uma ACL de nome "localhost" contendo localhost. acl SSL_ports port 443 563: Cria a ACL contendo as portas que so utilizadas no protocolo HTTPS. acl Safe_ports port 21 80 443 563 70 210 280 488 59 777 901 1025-65535: Cria a ACL contendo as portas de diversos protocolos conhecidos na Internet. acl manager proto cache_object: Cria a ACL manager do tipo proto. acl purge method PURGE : Cria a ACL manager do tipo method. acl CONNECT method CONNECT: Cria a ACL CONNECT tambm do tipo method. http_access allow manager localhost: Libera a ACL manager e localhost. http_access deny manager : Bloqueia a ACL manager. http_access allow purge localhost: Libera a ACL purge e localhost http_access deny purge: Bloqueia a ACL purge. http_access deny !Safe_ports: Esta linha se torna bastante interessante pelo uso da "!", pois ela bloqueia qualquer conexo que no contenha o contedo da ACL Safe_Ports. http_access deny CONNECT !SSL_ports: Bloqueia qualquer conexo que no esteja no contedo da ACL SSL_ports. acl redelocal src 192.168.0.0/24: Cria a ACL redelocal contendo a faixa de endereo da rede. http_access allow localhost: Libera a ACL localhost. http_access allow redelocal: Libera a ACL redelocal. http_access deny all: Bloqueia a ACL all

Incorporando - Adicionando o cache

Incorporando um pouco Bem, depois que entendemos como funciona e para que serve essas linhas de configuraes, vamos incorporar um pouco o nosso Squid.

Adicione as seguintes linhas em seu arquivo:

# Esta opo manda o Squid buscar os dados diretamente na origem, ela referente ao contedo dinmico, se a URL conter algum padro aqui especificado ela ir direto a origem buscar o contedo. hierarchy_stoplist CGI-bin ?

# Define o caminho das pginas de erro do squid. error_directory /usr/share/squid/errors/Portuguese

# Define o e-mail que vai aparecer na pgina de erro do Squid, assim o usurio ter mais informaes para interagir com o responsvel. cache_mgr admin@seu_dominio.com.br

# Esta ACL responsvel por no armazenar contedo CGI em cache. acl QUERY urlpath_regex cgi-bin ? no_cache deny QUERY

Adicionando o cache

As prximas linhas so referentes s configuraes do cache.

# Define a quantidade de memria RAM reservada para o uso do Squid. cache_mem 64 MB

# Esta linha responsvel por limitar o tamanho dos arquivos que sero armazenados no cache da memria RAM. maximum_object_size_in_memory 64 KB

# Aqui definimos o tamanho mximo e mnimo respectivamente dos arquivos que sero armazenados no cache do HD. maximum_object_size 512 MB minimum_object_size 0 KB

# Com essas duas linhas podemos definir a porcentagem de atualizao do cache, estamos dizendo que quando o cache chegar em 95% o Squid ir apagar os arquivos mais antigos at chegar a 90%. cache_swap_low 90 cache_swap_high 95

# Nessa linha conseguimos definir o tamanho e alguns parmetros do cache feito em HD, a linha composta por quatro valores, o 1 define o caminho do cache (/var/spool/squid), o 2 o tamanho que ser alocado em MB para o cache (2Gb), o 3 a quantidade de diretrios criados para o cache (16) e o 4 o numero de subdiretrios que sero criados. Se voc possuir bastante espao em disco e quiser armazenar os arquivos por mais tempo, aumente a opo do tamanha do cache. cache_dir ufs /var/spool/squid 2048 16 256

# Define onde sero armazenados os registros de log do Squid. cache_access_log /var/log/squid/access.log

refresh_pattern ^ftp: 15 20% 2280 refresh_pattern ^gopher: 15 0% 2280 refresh_pattern . 15 20% 2280

Essas trs ltimas linhas definem o intervalo de atualizao do cache, ou seja, de quanto em quanto tempo o Squid ir aguardar antes de verificar se algum arquivo em cache foi alterado em seu local original (um download ou uma pagina Web, por exemplo).

Mas importante lembrar que estas trs linhas sempre tero que ser usadas em conjunto, se voc omitir uma delas, a configurao no entrar em vigor.

O Squid faz uso destes valores para verificar se os objetos armazenados so os mais recentes, ou h a necessidade de atualiz-los. No h necessidade de mudana nestes valores.

Depois, reinicie o Squid para ativar as configuraes:

# /etc/init.d/squid restart
Criando e entendendo as ACLs
Depois que demos um upgrade em nosso Squid, hora de criar as polticas de acesso (os bloqueios). Antes de comear, importante lembrar que o Squid trabalha de forma hierrquica, ou seja, ele l as regras em uma sequncia lgica. Se voc diz que ele deve bloquear a URL que contenha a palavra "sexo" e depois mandar liberar, a URL continuar bloqueada, pois quando ele se encaixa em uma determinada regra, ele no "l" as demais. Bem, mos massa. Obs.: Nos exemplos a seguir, utilizarei como exemplo somente as ACLs do tipo: src e time. Por questo de organizao, bom criar arquivos com o contedo a ser trabalho para no poluir o ".conf": Neste arquivo, iremos adicionar palavras que sero bloqueadas, como: sexo, porno... # pico /etc/squid/palavras_bloqueadas.txt Neste arquivo, sero adicionados os sites que no tero acesso, como: 4shared.com, rapidshare.com, megavideo.com, filesonic.com, etc: # pico /etc/squid/sites_bloqueados.txt Aqui, iremos colocar as redes sociais, como: facebook.com, orkut.com, twiter.com, etc: # pico /etc/squid/redes_sociais.txt Neste arquivo, iremos colocar os IPs das mquinas dos gerentes (e "daquela" estagiria que entrou semana passada...:)):

# pico /etc/squid/ips_liberados.txt Lista de sites adultos: redtub, xvideos # pico /etc/squid/sites_porno.txt Este arquivo limita os tipos de arquivos que sero baixados, tudo que contiver neste arquivo ser bloqueado. Exemplos: .avi$, .mp3$, .wmv$: # pico /etc/squid/formato_arquivo.txt Pronto, depois dos arquivos criados e preenchidos, hora de criar as ACLs: acl rede_local src 192.168.0.0/24 acl palavras_bloqueadas url_regex -i "/etc/squid/palavras_bloqueadas.txt " acl sites_bloqueados url_regex -i "/etc/squid/ sites_bloqueados.txt " acl redes_sociais url_regex -i "/etc/squid/redes_sociais.txt" acl liberados src "/etc/squid/ips_liberados.txt " acl porno url_regex -i "/etc/squid/sites_porno.txt "\e acl formato_arquivo url_regex -i "/etc/squid/formato_arquivo.txt" acl horario_almoco time 12:00-13:00 http_access http_access http_access http_access http_access http_access http_access http_access allow liberados allow redes_sociais horario_almoco deny redes_sociais deny sites_bloqueados deny palavras_bloqueadas deny porno deny formato_arquivo allow rede_local

Depois de adicionar estas linhas no "squid.conf", s reiniciar para que elas entrem em vigor: # /etc/init.d/squid restart Agora, vamos entender o funcionamento destas ACLs. No exemplo acima, criamos um modelo meio que padro, no primeiro "pargrafo" criamos as ACLs e no segundo, liberamos ou bloqueamos as mesmas de acordo com nossa poltica. Vamos dissecar linha por linha:

acl rede_local src 192.168.0.0/24 -> Cria a ACL rede_local


contendo a faixa de endereo da rede local.

acl palavras_bloqueadas url_regex -i "/etc/squid/palavras_bloqueadas.txt " -> Cria a ACL


palavras_bloqueadas contendo as palavras proibidas que esto no arquivo descrito.

acl sites_bloqueados url_regex -i "/etc/squid/ sites_bloqueados.txt " -> Cria a ACL sites_bloqueados contendo os sites proibidos que
esto no arquivo descrito.

acl redes_sociais url_regex -i "/etc/squid/redes_sociais.txt" -> Cria


a ACL redes_sociais contendo os sites de redes sociais que esto no arquivo descrito.

acl liberados src "/etc/squid/ips_liberados.txt " -> Cria a ACL


liberados contendo endereos de IP que esto no arquivo descrito.

acl porno url_regex -i "/etc/squid/sites_porno.txt " -> Cria a ACL


porno contendo os sites porns que esto no arquivo descrito.

acl formato_arquivo url_regex -i "/etc/squid/formato_arquivo.txt"


-> Cria a ACL formato_arquivo contendo os tipos de arquivos que sero bloqueados que esto no arquivo descrito.

acl horario_almoco time 12:00-13:00 -> Cria a ACL


horario_almoco do horrio de meio dia h uma da tarde.

Aqui que a mgica acontece, a ordem sobre como voc organiza as ACLs, que faz toda a diferena, vamos l: http_access allow liberados Aqui, ns liberamos acesso total para os IPs que estiverem no arquivo qu e criamos anteriormente. http_access allow redes_sociais horario_almoco http_access deny redes_sociais Nestas linhas, permitimos que qualquer usurio acesse os sites de redes sociais que estiverem no arquivo que criamos dentro do horrio de 12:00 as 13:00, aps esse horrio, o acesso bloqueado. http_access deny sites_bloqueados Bloqueia o acesso aos sites que estiverem no arquivo criado dentro da ACL 'sites_bloqueados'. http_access deny palavras_bloqueadas Bloqueia o acesso palavras que estiverem no arquivo criado dentro da ACL 'palavras_bloqueadas'. http_access deny porno Bloqueia o acesso aos sites pornos que estiverem no arquivo criado dentro da ACL 'porno'. http_access deny formato_arquivo Bloqueia o acesso a downloads que forem do tipo de arquivo contido no arquivo criado na ACL 'formato_arquivo'. http_access allow rede_local Se o acesso no se encaixou em nenhuma das regras acima e for proveniente da rede interna, ele liberado.

Configurao final
Bem pessoal, depois de tudo isso, vamos ver como ficou nosso arquivo "squid.conf":

http_port 3128 visible_hostname KORZOS error_directory /usr/share/squid/errors/Portuguese hierarchy_stoplist CGI-bin ? cache_mgr admin@seu_dominio.com.br acl QUERY urlpath_regex cgi-bin ? no_cache deny QUERY cache_mem 64 MB maximum_object_size_in_memory 64 KB maximum_object_size 512 MB minimum_object_size 0 KB cache_swap_low 90 cache_swap_high 95 cache_dir ufs /var/spool/squid 2048 16 256 cache_access_log /var/log/squid/access.log refresh_pattern ^ftp: 15 20% 2280 refresh_pattern ^gopher: 15 0% 2280 refresh_pattern . 15 20% 2280 acl acl acl acl acl acl acl all src 0.0.0.0/0.0.0.0 manager proto cache_object localhost src 127.0.0.1/255.255.255.255 SSL_ports port 443 563 Safe_ports port 21 80 443 563 70 210 280 488 59 777 901 1025-65535 purge method PURGE CONNECT method CONNECT allow manager localhost deny manager allow purge localhost deny purge deny !Safe_ports deny CONNECT !SSL_ports

http_access http_access http_access http_access http_access http_access acl acl acl acl acl acl acl acl

rede_local src 192.168.0.0/24 palavras_bloqueadas url_regex -i "/etc/squid/palavras_bloqueadas.txt " sites_bloqueados url_regex -i "/etc/squid/ sites_bloqueados.txt " redes_sociais url_regex -i "/etc/squid/redes_sociais.txt" liberados src "/etc/squid/ips_liberados.txt " porno url_regex -i "/etc/squid/sites_porno.txt " formato_arquivo url_regex -i "/etc/squid/formato_arquivo.txt" horario_almoco time 12:00-13:00 allow liberados allow redes_sociais horario_almoco deny redes_sociais deny sites_bloqueados deny palavras_bloqueadas deny porno deny formato_arquivo allow rede_local allow localhost

http_access http_access http_access http_access http_access http_access http_access http_access http_access

http_access deny all Bem, isso a! Espero que tenha ficado claro e que todos entendam. Qualquer coisa, s deixar um comentrio. Artigo previamente publicado em:

Instalando e Configurando Um Servidor Proxy com Squid guiadoti.blogspot.com.br

Pra liberar por IP mole: Cdigo:


acl ips_liberados src "c:/arquivos de programas/squid/ips_liberados" acl sites_bloqueados url_regex -i "c:/arquivos de programas/squid/sites_bloqueados" http_access deny sites_bloqueados !ips_liberados

J pra liberar "por usurio" mais complicado, no nas regras em si, que so basicamente iguais, mas pelo funcionamento dos mdulos de autenticao no Windows. A parte do controle de acesso ficaria assim: Cdigo:
acl usuarios_liberados proxy_auth -i "c:/arquivos de programas/squid/usuarios_liberados" http_access deny sites_bloqueados !usuarios_liberados

S que voc precisa passar outros parmetros pra configurar a autenticao, e a que complica, por voc estar no Win2003 pode ser que o funcionamento seja diferente do que se consegue encontrar no Linux. 19-02-2008 por imhotep Citao: Postado Originalmente por jqueiroz Pra liberar por IP mole: Cdigo:
acl ips_liberados src "c:/arquivos de programas/squid/ips_liberados" acl sites_bloqueados url_regex -i "c:/arquivos de programas/squid/sites_bloqueados" http_access deny sites_bloqueados !ips_liberados

A liberao/bloqueio por IP vai servir...ento s eu inserir esse cdigo no .conf do squid? S no entendi essa sintaxe da ltima linha: http_access deny sites_bloqueados !ips_liberados Dessa forma no estou bloqueando o acesso aos ips cadastrados em "ips_liberados"? Desculpem o newbie, mas realmente t aprendendo... 19-02-2008 por jqueiroz Citao:

Dessa forma no estou bloqueando o acesso aos ips cadastrados em "ips_liberados"? Atente para o "!" negando o sentido da ACL. Mas veja que esse trecho s bloqueia o que voc pediu, a liberao ainda no foi feita, vai juntar com as suas outras regras, at uma delas dizer "http_access allow <alguma condio aceita>", pra enfim liberar, ou "http_access deny <alguma outra condio aceita>" pra bloquear de vez. 19-02-2008 por imhotep Citao: Postado Originalmente por jqueiroz Atente para o "!" negando o sentido da ACL. Mas veja que esse trecho s bloqueia o que voc pediu, a liberao ainda no foi feita, vai juntar com as suas outras regras, at uma delas dizer "http_access allow <alguma condio aceita>", pra enfim liberar, ou "http_access deny <alguma outra condio aceita>" pra bloquear de vez. Entendi agora... Amanh vou testar l na rede do escritrio...

Você também pode gostar