quinta-feira, 21 de novembro de 2013

Dominando o squid ou não - Parte 2 - A missão




Dando continuidade ao post sobre squid, aonde mostrei o arquivo de configuração básica do squid e sua toria de funcionamento, darei prosseguimento na explicação do funcionamento do squid de uma forma um pouco mais detalhada, ou não =P



ACL
Antes de começarmos a destrinchar o squid.conf, vamos explicar o que é uma acl. A acl ou lista de controle de acesso, é aonde tu definirás o que será liberado ou negado para acesso à internet. Uma coisa que devemos sempre atentar é, o squid interpreta às acl's de cima para baixo, então tu deves ficar atento no momento da criação de tuas acl's.

Squid.conf detalhado

http_port 192.168.10.1:3128 : Esta linha indica o IP do squid e a porta que ele responderá na rede. Por padrão a porta utilizada é a 3128, mas tu ao configurares o squid, pode utilizar outra porta sem problemas.

visible_hostname fw-linux: Esta linha indica o nome do servidor.

cache_mem 64 MB : Esta linha define a quantidade de memória que será dedicada ao cache. Neste caso colocamos 64 MB. O ideal de uso de memória para o cache é 1/3 da memória RAM do micro.

maximum_object_size_in_memory 64 KB : Esta opção determina o tamanho máximo de arquivos que serão guardados no cache feito na memória RAM.

maximum_object_size 128 MB : Esta linha se refere ao cache de memória em disco, o padrão do squid é 16 MB. Neste caso colocamos 128 MB como exemplo, em casos aonde tu utilizas muito o windows update, tu podes colocar mais memória para o cache em disco, dessa forma agilizando às atualizações na rede e minimizando o consumo de banda.

minimum_object_size 0 KB: Esta linha se refere ao valor mínimo da memória cache em disco, que é sempre 0 KB.

Tu podes ainda, definir a porcentagem de uso do cache, que ao chegar no valor limite que foi setado, começa a descartar arquivos mais antigos. Por padrão sempre que o cache em disco atingir 95 % de uso, o squid começa a descartar arquivos. Nas linhas abaixo setamos o cache para exclusão ao chegar em 85% e manter no mínimo 80% de cache.

cache_swap_low 80
cache_swap_high 85

cache_dir ufs /var/spool/squid 256 10 20 : Essa opção que possuí "quatro campos", indica primeiro, a pasta aonde o squid armazenará o cache em disco (/var/spool/squid), enquanto o segundo campo( 256) indica, a quantidade de disco que será utilizada( 256 MB), o terceiro campo(10) indica a quantidade de pastas que haverão no diretório e o último campo (20) a quantidade de subdiretórios, que haverá em cada diretório de cache.

cache_access_log /var/log/squid/access.log : Nesta linha definimos aonde será gerado o arquivo de log. Por padrão o squid armazena os log's no valor setado acima. Este arquivo de log é utilizado pelo Sarg, para geração de relatórios.

Às três linhas abaixo, indicam o padrão de atualização do squid, estas regras devem sempre ser utilizadas em conjunto. Se eliminares uma linha, o squid ignora às que restarem e utiliza o default. Os números indicam o tempo que o squid irá aguardar se um item de cache foi atualizado para cada um dos três protocolos. O primeiro campo(15) indica que o squid verificará ( a cada acesso) se as páginas e arquivos com mais de 15 minutos foram atualizados. A verificação efetuada é rápida, checando o tamanho do arquivo e, se o arquivo não tiver mudado, ele continua fornecendo aos clientes o arquivo que está no cache, economizando banda.

O terceiro campo(2280, equivalente à dois dias) indica o tempo máximo, depois que o objeto é sempre verificado. Além do http e ftp, o squid suporta o protocolo gopher, que era usado em larga escala no início da internet para localizar documentos de texto, mas caiu em desuso hoje em dia.

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

error_directory /usr/share/squid/errors/pt-br : Essa linha se refere as mensagens exibidas ao usuário no navegador. Neste caso está setado o idioma português do Brasil.

acl manager proto cache_object
acl localhost src 127.0.0.1/32
acl SSL_ports port 443 563
acl Safe_ports port 21 80 443 563 70 210 280 488 59 777 901
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

As regras acimas estão dispostas dessa forma no arquivo de configuração criado, porém vou explicar fora de ordem, assim ficará mais claro para quem lê.

acl manager proto cache_object
acl localhost src 127.0.0.1/32
http_access allow manager localhost
http_access deny manager

A primeira acl, se refere ao cache_object, que verifica as informações sobre o estado do squid. O ideal é deixar sempre que, apenas o micro aonde se encontra o squid verifique tal estado, por isso tu deixarás somente o localhost liberado. O IP do squid é referenciado na acl "localhost".


acl SSL_ports port 443 563
acl Safe_ports port 21 80 443 563 70 210 280 488 59 777 901
http_access deny !Safe_ports
http_access deny CONNECT !SSL_ports

As acl's "Safe ports", definem as portas que estarão liberadas na saída do servidor proxy. O caractere "!", significa negação, ou seja, negará tudo que for diferente das acl's "Safe_ports" e "SSL_ports".

acl purge method PURGE
http_access allow purge localhost
http_access deny purge

O método "PURGE" serve para limpar / excluir objetos do cache do squid. Tu deverás deixar liberado somente o próprio squid, ou seja, o localhost.

Por último tu criarás uma acl chamada "redelocal" aonde colocarás o range da tua rede interna e logo abaixo liberará a mesma para navegação.

acl redelocal src 192.168.10.0/24
http_access allow redelocal


http_access deny all : Por último a regra "deny all", essa regra fará com que tudo que não estiver especificado no teu arquivo squid.conf seja negado.

Have a nice day =D

Nenhum comentário:

Postar um comentário