quarta-feira, 23 de abril de 2008

Squid Proxy - Cache Server

Anonymous escrever O proxy/cache squid, tem a função de controlar o acesso à Internet e Cache de páginas para acelerar a conexão.
O controle de acesso pode ser feito através de ip's, nomes de sites, palavras contidas na url, endereço físico da placa de rede (MAC), entre outras.

Squid Proxy/Cache Server

Copyright e Licença Rodrigo Ap. F. Tomazin rodrigo@infobr.com

Este documento pode ser encontrado em http://www.guiadereferencia.com.br/

Os direitos autorais deste documento estão reservados para
Rodrigo Ap. F. Tomazini em 26/08/2003, podendo ser copiado, modificado e distribuído, desde que mantenha este cabeçalho. O Autor não se responsabiliza por danos causados a pessoas que utilizem este documento para instalar seus programas.

Conteúdo

1 - Objetivo
2 - Introdução
3 - Baixando o software
4 - Instalando
5 - Configurando
6 - Utilizando
7 - Observações finais

1 - Objetivo

O proxy/cache squid, tem a função de controlar o acesso à Internet e Cache de páginas para acelerar a conexão.
O controle de acesso pode ser feito através de ip's, nomes de sites, palavras contidas na url, endereço físico da placa de rede (MAC), entre outras.

2 - Introdução

Vamos utilizar para realizar nossa instalação uma máquina executando Linux Slackware 9.0.
Esta máquina será o GateWay de nossa rede, por onde todas as conexões vão passar, podendo assim serem auditadas ou bloqueadas pelo nosso squid.

3 - Baixando o software

Para baixar o squid acesse o site http://www.squid-cache.org, vou utilizar a versão 2.5-STABLE3, que é a mais atual até hoje, dia que estou escrevendo este documento. Fique à vontade para baixar a versão mais nova.

4 - Instalando

Acesse o sistema como root, e descompacte o arquivo em um diretório de sua preferência, eu escolhi o diretório /tmp

cd /tmp
tar jxf /root/squid-2.5-STABLE3.tar.bz2

entre no diretório fonte do programa

cd squid-2.5-STABLE3

Vamos agora configurar, compilar e instalar o programa.

Para configurar, utilizamos o script configure, que está dentro do mesmo diretório, você poderá obter um help com todas as opções executando o comando:

./configure --help

Vamos utilizar a seguinte linha para configurar nosso squid:

./configure --prefix=/usr --sysconfdir=/etc/squid --localstatedir=/var/squid --enable-default-err-language=Portuguese --enable-err-languages=Portuguese --enable-linux-netfilter --enable-basic-auth-helpers="getpwnam NCSA SMB"

Explicando a linha de configuração:

--prefix=/usr -> Informa o diretório base, onde será instalado o squid.

--sysconfdir=/etc/squid -> Informa o diretório padrão onde o squid vai procurar pelos arquivos de configuração.

--localstatedir=/var/squid -> Indica o diretório onde serão gravados os logs do squid. O programa de instalação cria um subdiretório logs dentro desta árvore.

Algumas pessoas costumam especificar apenas a opção --prefix, apontando para o diretório /usr/local/squid. Não há nada de errado nisso, nem nada de tão certo na maneira como estamos fazendo, é uma questão de gosto ou organização própria.

--enable-default-err-language=Portuguese -> Informa o idioma padrão das mensagens de erro do squid.

--enable-err-languages=Portuguese -> Informa os idiomas que serão instalados.

--enable-linux-netfilter -> Usado para trabalhar com Linux kernel série 2.4.x com proxy transparente.

--enable-basic-auth-helpers="getpwnam NCSA SMB" -> habilita os módulos de autenticação getpwnam, ncsa e smb, para validar o acesso a Internet mediante usuário/senha, se o squid for configurado para trabalhar desta maneira.

Depois deste procedimento precisamos compilar o programa, entao execute:

make

Após terminar a compilação sem erros, vamos instalar o programa

make install

pronto, o squid agora está instalado, precisamos configurá-lo e colocá-lo na inicialização do sistema.

5 - Configurando

Usando seu editor de texto preferido, edite o arquivo squid.conf que está localizado no diretório /etc/squid. Eu aqui estou utilizando o vi, então executei os comandos:

cd /etc/squid
vi squid.conf

Procure pela linha cache_dir, para definirmos o tamanho do cache e também a localização do diretório, e informe a seguinte linha.

cache_dir ufs /var/squid/cache 100 16 256

Isso informa ao squid para usar 100MB de cache no diretório /var/squid/cache, dentro deste, serão criados 16 diretórios raízes e dentro de cada um destes 256 subdiretórios, tudo isso para guardar arquivos acessados na Internet.

Agora vamos definir as acls para liberar o acesso para nossa rede, a rede que estou usando aqui em meu exemplo é: 10.0.0.0/8 (10.0.0.0/255.0.0.0)

Procure pela linha

acl CONNECT method CONNECT

e na linha abaixo inclua a nossa acl

acl intranet src 10.0.0.0/8

Nossa acl já está definida, agora precisamos liberar o acesso dela, procure pela linha

# INSERT YOUR OWN RULE(S) HERE TO ALLOW ACCESS FROM YOUR CLIENTS

e na linha abaixo inclua a liberação para a nossa acl

http_access allow intranet

Você pode querer utilizar seu servidor proxy como transparente, a diferença entre o proxy transparente e o proxy normal, é que no transparente é necessário configurar o navegador para utilizá-lo, e sim é necessário configurar o gateway da rede para fazer este serviço. Se você não quer utilizar seu proxy como transparente, pode pular este procedimento.

Vamos supor que o gateway da rede é a própria máquina que está instalado o Squid, então precisamos habilitar as seguintes configurações no squid.conf

httpd_accel_port 80
httpd_accel_host virtual
httpd_accel_single_host off
httpd_accel_with_proxy on
httpd_accel_uses_host_header on
forwarded_for on

Estas entradas já existem no squid.conf, apenas encontre elas e defina o valor correto.

Salve o arquivo, e saia do editor
Pronto, nosso squid está com sua configuração básica agora. Vamos agora iniciá-lo.

Primeiro precisamos modificar as permissões do diretório /var/squid, para que o programa posso gravar os logs e o cache. O usuário padrão que o squid utiliza é o nobody e também este grupo. Execute os comandos para mudar o proprietário do diretório e dos subdiretórios:

chown -R nobody:nobody /var/squid/

Agora vamos criar os diretórios que serão utilizados para gravação do cache, execute:

squid -z

Pronto, agora é só iniciar o squid

squid -D

Você pode adicionar este comando no seu diretório /etc/rc.d/rc.local para iniciá-lo no boot do sistema automaticamente.

6 - Utilizando

Para testar se o squid está funcionando, abra seu navegador, acesse as configurações de proxy e informe o endereço IP da máquina que tem o squid e a porta 3128, no meu caso

10.0.0.1 porta 3128

Agora é só acessar a Internet, pelo seu proxy.

Se você quiser utilizar o seu servidor proxy como roteador da rede e como proxy transparente, execute os seguintes comandos para ativar o repasse de pacotes e redirecionamento do conteúdo para o proxy:

# As duas linhas abaixo habilitam o servidor trabalhar como roteador de pacotes
echo 1 > /proc/sys/net/ipv4/ip_forward iptables -t nat -A POSTROUTING -s 10.0.0.0/8 -d 0/0 -j MASQUERADE

# A linha abaixo habilita o proxy transparente
iptables -t nat -A PREROUTING -s 10.0.0.0/8 -d 0/0 -p TCP --dport 80 -j DNAT --to-destination 127.0.0.1:3128

Se desejar, você pode adicionar estas linhas também no arquivo /etc/rc.d/rc.local, para que as regras sejam carregadas automaticamente no próximo reboot do computador.

7 - Observações finais

Para ver os sites que estão sendo acessados no momento, execute

tail -f /var/squid/logs/access.log

para sair deste comando, pressione CTRL+C.
para encerrar o processo do squid, execute:

kill `cat /var/squid/log/squid.pid`

Pronto, agora nós temos um proxy configurado. A configuração básica está feita, existem outros recusos que também podem ser ativados, como autenticação de acesso, proxy transparente (em conjunto com o iptables). Procure alguma configuração na Internet e boa diversão.

Nenhum comentário: