sábado, 24 de janeiro de 2009

Instalando o SQUID 2.6 (Proxy Transparente) - Completo com bloqueios de site, usuários, etc.

Instalando o SQUID 2.6
Comecei a instalação dos softwares pelo squid, não existe nenhuma versão atualizada de SQUID 2.6 no apt, pelo menos não encontrei, então baixei o fonte e instalei na mão.

Baixando o fonte

Baixe o fonte e descompacte na pasta /usr/src, não é obrigatório escolher esta pasta, deixo todos os fontes aqui por costume.

# wget http://www.squid-cache.org/Versions/v2/2.6/squid-2.6.STABLE7.tar.gz

Após baixar o arquivo descompacte:

# tar xvzf squid-2.6.STABLE7.tar.gz

E entre no seu diretório:

# cd squid-2.6.STABLE7

Execute:

# ./configure --bindir=/usr/bin --sbindir=/usr/sbin --sysconfdir=/etc/squid --enable-linux-netfilter --enable-delay-pools

Os parâmetros definem:
  • --bindir=/usr/bin - Diretório de instalação onde ficarão os arquivos binários;
  • --sbindir=/usr/sbin - Diretório de instalação onde ficarão os arquivos binários usuário do root;
  • --sysconfdir=/etc/squid - Diretório onde ficarão os arquivos de configuração;
  • --enable-linux-netfilter - SQUID otimizado para proxy transparente, não é obrigatório;
  • --enable-delay-pools - Para configurar a limitação de banda, caso você queira futuramente limitar a banda.

Agora execute:

# make all
# make install


Vamos agora configurar o squid, é extremamente simples, não requer prática nem habilidade. :)

Fiz uma configuração bem básica para esse squid, todas as máquinas ficarão com acesso http liberado, exceto os sites que são bloqueados por palavra-chave, temos as opções de liberar completamente algumas máquinas, nada mais.

Segue o arquivo de configuração:

# vim /etc/squid/squid.conf

###################################################
# SCRIPT DE CONFIGURACAO DO SQUID
#
#
# Porta utilizada pelo squid
#
http_port 3128 transparent
#
# Nome do servidor (sem espacos)

#
visible_hostname firewall02.fleetone.com
#
# Servidores DNS a serem consultados
#

dns_nameservers 192.168.100.2
#

# Local onde sera armazenado os logs do squid
#
cache_access_log /usr/local/squid/var/logs/access.log
#
# Converte as mensagens geradas pelo squid para o Portugues
#
error_directory /usr/local/squid/share/errors/Portuguese

#
#


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

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 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 Safe_ports port 901

# SWAT

acl purge method PURGE
acl post method POST
acl CONNECT method CONNECT
http_access allow post
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

#
# Definiremos a seguir as regras para bloqueio dos sites pelas
# palavras adicionadas no arquivo
bloqueados.txt
# As regras serão estabelecidas por grupos de acessos conforme
# as ACLs criadas abaixo.
#

acl redelocal src
192.168.100.0/24

acl diretoria src "/etc/squid/acls/diretoria"

acl bloqueados url_regex -i "/etc/squid/acls/bloqueados"
acl permitidos url_regex -i "/etc/squid/acls/permitidos"
http_access allow localhost
http_access allow diretoria
http_access allow redelocal !bloqueados

#
# Abaixo bloqueamos a navegacao.
# Liberado apenas pra faixa definida na "acl redelocal".
#

http_access deny all

Altere as seguintes linhas:

Coloque o hostname da sua máquina, o mesmo nome que você definiu durante a instalação:

visible_hostname hostname.dominio

Coloque o ip do seu servidor DNS:

dns_nameservers 192.168.100.2

Nestas linhas você define de quanto em quanto tempo o squid vai ir na internet verificar se houveram alterações, normalmente ele vai utilizar a opção que está no cache quando você acessar um site, para alterar o tempo de refresh abaixe o valor, o primeiro 1 significa o tempo mínimo em minutos para refresh, após o percentual o 2280 é o tempo máximo em minutos:

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

Aqui você define a faixa de sua rede:

acl redelocal src 192.168.100.0/24

No squid.conf são só essas alterações a serem realizadas e está pronto..

Crie os diretórios onde vão ficar as acls:

# mkdir /etc/squid/acls

Agora crie os arquivos que vão conter as acls:

# touch /etc/squid/acls/diretoria
# touch /etc/squid/acls/permitidos
# touch /etc/squid/acls/bloqueados


Descrição dos arquivos:
  • diretoria -> deve conter as máquinas que tem acesso total a qualquer site. Coloque o endereço IP das estações.
  • permitidos -> são sites que contem palavras chave bloqueadas, mas que podem ser acessados.
  • bloqueados -> são os sites que contem palavras-chave que devem ser bloqueadas.

Após colocar o squid.conf dentro de /etc/squid, dê permissão para o squid escrever na pasta var:

# chmod -R 777 /usr/local/squid/var

Agora criaremos os arquivos de swap do squid:

# squid -z

Tudo pronto, execute o squid com o comando:

# squid

Caso os arquivos diretoria, permitidos ou bloqueados estejam vazios é normal aparecer a seguinte mensagem:

2007/01/18 14:46:43| strtokFile: /etc/squid/acls/diretoria not found
2007/01/18 14:46:43| aclParseAclLine: WARNING: empty ACL: acl diretoria src "/etc/squid/acls/diretoria"

Esta mensagem é somente um alerta dizendo que não existem valores definidos dentro dos arquivos que contem as acls, assim que você preencher esses arquivos esta mensagem desaparecerá.

Feito isso, adicione o squid na inicialização da seguinte maneira, edite o arquivo /etc/init.d/bootmisc.sh e ao final do arquivo adicione as seguintes linhas.

# Inicializando o squid
if [ -x /etc/init.d/squid ]; then
. /etc/init.d/squid
fi

Agora crie um arquivo com nome squid dentro de /etc/init.d:

# vi /etc/init.d/squid

E adicione o seguinte conteúdo dentro do arquivo:

/usr/sbin/squid

Salve e saia. Dê permissão de execução ao arquivo:

# chmod +x /etc/init.d/squid

Finalizamos a configuração do SQUID.


Nenhum comentário:

Postar um comentário