sábado, 7 de julho de 2012

Instalação e Configuração do Squid 2.7 no Debian

Bem pessoal hoje vou mostrar como instalar e configurar o squid, para que você como Administrador de redes ou Ananlista de Suporte, enfim, possa ter um um controle do trafego da sua rede, permitindo ou bloqueando o acesso a sites, extensões, palavras, etc.

O Sistema que estou utilzando é o Debian 6.0, para instalar o squid o comando é simples.

# apt-get install squid

Será criado um diretório dentro de /etc/squid contendo um arquivo de configuração chamado squid.conf, eu preferiro renomear este arquivo e criar um em branco.

# mv /etc/squid/squid.conf /etc/squid/squid.conf_original

# touch /etc/squid/squid.conf

Agora vamos editar nosso squid.conf



# vim squid.conf

#################################################################################

# SISTEMA OPERACIONAL GNU/LINUX 6.0.5
# BLOG: linuxstudylpi.blogspot.com.br
# ANALISTA DE SUPOORTE
# DATA: 07/07/2012
# CONFIGURANDO O SQUID
# Cléio Sousa

# O número da porta onde o Squid irá ouvir as requisições dos clientes. O padrão é 3128.
http_port 3128
# caso  você prefira utilizar proxy transparente e a versão do seu squid estiver apartir da 2,6 você vai
# somente adicionar o"transparent"
# http_port 3128 transparent
# Agora se a versão for uma antiga é preciso entrar com os seguintes comandos:

# httpd_accel_host virtual
# httpd_accel_port 80
# httpd_accel_with_proxy on
# httpd_accel_uses_host_header on
# Deixando a http_port 3128 sem alteração.

# Especifica o nome do servidor, por exemplo
visible_hostname Sevidor_Squid_cleio

# Especifica quanto de memória será utilizado para cache, varia de quanto de memoria vc tem, e quantos
# usuários acessam/passam pelo seu roteador.
cache_mem 64 MB

# cache padrão. (90% de utilização de armazenamento de páginas)
# cache_swap_low 90

# quando o cache atingir a 95% do espaço de armazenamento ele começa a substituir os arquivos mais  #antigos.
cache_swap_high 95


# Caso vc faça muitos downloads, update do seu windows ou apt-get update por exemplo, é bom deixar
# um valor  maior, fazendo com que seu cache em disco armazene mais, e a busca será mais rápida visto
# que seu cache suporta mais armazenamento de páginas.
maximum_object_size 512 MB

#Objetos menores do que esse valor não serão armazenados em cache. O valor padrão é 0 que significa
# que todos os objetos serão armazenados.
minimum_object_size 0

# cache feito pela memória ram.
maximum_object_size_in_memory 64 KB

# cache_dir = pasta onde será armazenado o cache /var/spool/squid no caso.
# 2048 = Quanto de espaço pode ser utilizado para armazenamento, caso tenha um HD muito grande,
# aumentar o tamanho do valor para cache, o valor está em MB.
# 16 - 256 = Os números 16 e 256 indicam a quantidade de subpastas que serão criadas dentro do
# diretório. Por padrão, temos 16 pastas com 256 subpastas cada uma.
cache_dir ufs /var/spool/squid 2048 16 256

# Diretório onde são armazenados os logs de acesso do Squid, também é utilizado pelo sarg para gerar os
# relatórios de acesso.
cache_access_log /var/log/squid/access.log



# estas 3 regras trabalham em conjunto, precisam estar sempre juntas, a regra diz que a cada 15 minutos,
# quando um acesso a internet for feito, o squid vai verificar se a página acessada foi atualizada, atualizando # assim seu cache
# O 2280 significa que a cada dois dias, o servidor automaticamente se encarrega de verificar e atualizar o cache, também é atualizado o ftp.

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

# Libera toda a rede
acl all src 0/0
acl manager proto cache_object
# acl para máquina Local
acl localhost src 127.0.0.1/255.255.255.255
# acl’s SSL_ports e Safe_ports tornam limitadas as portas que serão acessadas via nosso proxy Squid
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 da rede local, caso sua rede seja de outra classe, altere.
acl redelocal src 192.168.0.0/24
http_access allow localhost

# regra para autenticação dos usuários apartir do arquivo passwd do squid (/etc/squid/passwd)
# caso não tenha este arquivo, o mesmo precisa ser criado.
auth_param basic realm Squid
auth_param basic program /usr/lib/squid/ncsa_auth /etc/squid/passwd
acl autenticados proxy_auth REQUIRED

###################### Criando algumas regras de bloqueio ###############################
# acl de bloqueio de site utilizando "dstdomain" você bloqueia ou libera um site especifico
acl bloqueados dstdomain facebook.com.br pt-br.facebook.com playboy.abril.com.br redtube.com.br

# Está acl está bloqueando todos as url que estiverem dentro do arquivo sites_bloqueados (precisa ser criado este arquivo) em /etc/squid/
# lembrando que as urls precisam estar um por linha.
acl sites_bloqueados url_regex -i "/etc/squid/sites_bloqueados"

# Nas versões atuais do squid, ele ao bloquear um dominio, também é bloqueado o ip do servidor, porém
# também é  possível criar uma regra que bloqueie diretamente o ip caso o site, servidor que esteja sendo
# acessado não esteja registrado em um dominio, a regra é a seguinte.
acl block_ip dst 200.154.56.80 # site do terra

# a regra "dstdom_regex" vai bloquear os sites (urls) apartir das palavras que estiverem dentro do arquivo
# bad_palavras, lembrando que o bloqueio é no acesso ao site (url) e não nas paginas do site.
acl palavrasproibidas dstdom_regex "/etc/squid/bad_palavras"



# acl para bloqueio de extensões "urlpath_regex"
acl arquivos_extens urlpath_regex -i .avi$ .scr$ .zip$ .hlp$ .cpl$ .pif$ .bat$ .src$ .exe$

# você também pode criar um regra para usuários liberados, onde os mesmo não iram passar pelas regras
# de bloqueio, a regra precisar estar em primeiro lugar na lista.
acl usuarios_liberados proxy_auth "/etc/squid/usuarios_liberados"
# Precisa ser criado a lista com os usuarios que seram liberados


# Essa regra vai bloquear toda a rede menos o que for redelocal
http_access deny !redelocal

http_access allow usuarios_liberados
# bloqueando o acesso aos sites da acl "bloqueados"
http_access deny bloqueados
# bloqueando os sites da acl sites_bloqueados
http_access deny sites_bloqueados
# bloqueando a regra para ip
http_access deny block_ip
# bloqueando a regra palavrasproibidas
http_access deny palavrasproibidas
# bloqueando por extensão
http_access deny arquivos_extens
# Regra para liberar acesso aos usuários autenticados.
http_access allow autenticados
http_access allow redelocal
http_access deny all
#################################Fim-squid.conf#####################################

Algumas outras formas de bloquear Downloads:


Utilizo desta forma para bloquear os Downloads.

acl downloads urlpath_regex -i (|\.wav|\.mov|\.mpeg.|\.mp.|\.avi|\.rm.|\.rar|\.wm.|\.divx|\.cda|\.midi|\.iso|\.pls)
http_access deny downloads


Ou desta forma:
acl downloads url_regex -i .mp3$ .mpg$ .mpeg$ .mp2$ .avi$ .wmv$ .wma$ .ra$ .rm$ .mid$ .mov$ .asf$ .wav$ .dat$ .qt$ .snd$ .wm$ .asx$ .aiff$ .ogg$ .ram$ .au$ .exe$
http_access deny downloads

Ou utilizando um arquivo com as extensões indicadas em cada linha:

acl downloads urlpath_regex -i "/etc/squid/downloads"
http_access deny downloads

Conteúdo do arquivos /etc/squid/downloads:
# Arquivo que informa as extensões para serem bloqueadas pelo proxy
 \.mp3$
##########################################################################


A lógica utilizada foi a de bloquear determinados sites, palavras extensões, porém você pode utilizar da lógica de bloqueio total, onde você vem com regras somente para liberação de sites específicos, como em:


 acl permitidos url_regex -i "/etc/squid/permitidos"
Aqui você cria um arquivo com urls de sites permitidos.
http_access allow permitidos
http_access deny all
Depois bloqueia todo o restante da rede


Após ter configurado o squid.conf é necessário criar os arquivos dentro do diretório /etc/squid/

# touch sites_bloqueados bad_palavras usuarios_liberados

Dentro destes arquivos você vai colocar os sites que queira bloquear, as palavras, e os usuários da sua rede que iram ter acesso liberado a internet, lembrando que a leitura do squid.conf é feita de cima pra baixo, a ordem é muito importante.

Agora vamos criar nossos usuários.

# htpasswd /etc/squid/passwd joao
coloque a senha, e confirme

Caso não tenha o arquivo passwd, crie o mesmo.
# touch /etc/squid/passwd


Após ter tudo configurado, você pode iniciar o squid.

# /etc/init.d/squid start


Para testar você pode configurar um navegador colocando o ip do seu servidor e a porta utilizada pelo squid (3128).

O diretório de armazenamento do cache dor squid em "/var/spool/squid" precisa estar com permissão 750 ou 770 como preferir.


O diretório que armazena a página de erro do squid é a "error_directory /usr/share/squid/errors/Portuguese", aqui você pode editar o arquivo html "ERR_ACCESS_DENIED" e deixar do seu jeito.

Bem é isso pessoal, é uma configuração básica squid, porém de muita utilidade, agora é só testar e alterar conforme sua necessidade.


Referências:

http://www.hardware.com.br/livros/servidores-linux/configurando-servidor-proxy-com-squid.html
http://www.oocities.org/br/dionata.nunes/Documentos/Apostilas/squid.pdf







Um comentário: