- http_access: permite clientes http (browsers) acessarem a porta http. Esta ACL é a primária;
- icp_access: permite caches "vizinhos" fazerem requisições ao seu cache através do protocolo ICP;
- miss_access: permite a alguns clientes fazerem encaminhamento (forward) através de seu cache;
- no_cache: define respostas que não deverão ser armazenadas no cache;
- always_direct; controla quais requisições deverão ser sempre encaminhadas diretamente aos servidores de origem;
- never_direct: controla quais requisições nunca deverão ser sempre encaminhadas diretamente aos servidores de origem;
- snmp_access: controla acesso ao agente SNMP do squid;
- cache_peer_access: controla quais requisições poderão ser encaminhadas a um servidor de cache vizinho. (peer)
Uma regra de lista de acesso consiste da palavra allow (permitir) ou deny (negar), seguido de uma lista de nomes de elementos ACL.
Uma lista de acesso consiste em uma ou mais regras de acesso.
As listas de acesso são verificadas na mesma ordem em que foram escritas. A pesquisa na lista termina assim que uma requisição satisfazer uma regra.
Se uma regra possuir múltiplos elementos de ACL, esta usará o operador lógico AND. Em outras palavras, todos os elementos de uma regra precisarão ser validos para que esta regra seja válida. Isto significa que é possível escrever uma regra que nunca será válida. Por exemplo, um número de porta nunca poderá ser igual a 80 e 8000 ao mesmo tempo.
Vejam alguns exemplos práticos:
Se você quiser impedir que qualquer usuário acesse paginas que contenham a palavra "cracker" na URL, acrescente as seguintes linhas no seu
squid.conf:
acl proibir_cracker url_regex cracker
http_access deny proibir_cracker
E o bloqueio ainda pode ser para máquinas específicas. Imagine que o usuário da máquina cujo IP é 10.0.0.95 esteja ocupando muito a sua rede, transferindo arquivos de música em formato MP3. Para bloquear este usuário especifico, use a regra como a de baixo:
acl mp3 url_regex mp3
acl usr_ofensor src 10.0.0.95/255.255.255.255
http_access deny usr_ofensor mp3
Se quiser proibir todos os usuários de acessarem um determinado site:
acl site_proibido dstdomain .orkut.com
http_access deny all site_proibido
Também é possível permitir ou proibir o acesso em determinados dias e horários:
acl tempo_proibido time MTWHF 15:00-16:00
acl usr_ofensor src 10.0.0.95/255.255.255.255
http_access deny usr_ofensor tempo_proibido
A regra acima bloqueia o acesso à internet para o IP 10.0.0.95 durante o período das 15:00 às 16:00 horas. A opção MTWHF indica os dias da semana em inglês. Também podem ser utilizadas as opções A e S que equivalem ao sábado e ao domingo respectivamente.
Existem casos que uma empresa gostaria de liberar o acesso a internet apenas durante o horário de almoço. Para isso, a seguinte regra poderia ser aplicada:
acl funcionários src 10.0.0.0/0
acl acesso_almoco time MTWHF 12:00-13:00
http_access allow funcionários acesso_almoco
http_access deny funcionários
Dependendo do número de domínios ou de palavras-chave listadas em ACLs é aconselhável construir uma lista em um arquivo separado e indicá-lo no squid.conf. O arquivo com uma lista de domínios ou de expressões regulares a serem bloqueadas deve conter uma entrada por linha, como no exemplo:
Orkut
Playboy
Sexo
Blog
Fotolog
Caso o arquivo seja salvo em /etc/squid/sites_proibidos, por exemplo podemos indicá-lo no arquivo de configuração do squid da seguinte maneira:
acl funcionários src 10.0.0.0/0
acl proibidos url_regex "/etc/squid/sites_proibidos"
http_access deny funcionários proibidos
Após incluir todas as suas regras restritivas, não se esqueça de incluir regras especificando que tudo o que não estiver expressamente proibido deve ser permitido. Na configuração original do squid.conf, as linhas serão como a que segue:
acl rede_local src 10.0.0.0/255.0.0.0
http_access allow all rede_local
Note que você deve definir a "rede_local" como conjunto de endereço IP e máscara que melhor descrevem a sua rede.
Normalmente o seu squid.conf virá com linhas como as que seguem:
#
# INSERT YOUR OWN RULE(S) HERE ALLOW ACCESS FROM YOUR CLIENTS
#
http_access deny all
Ela serve para bloquear o acesso ao Squid até que ele seja configurado, e é interessante você deixá-lo como última regra, pois desta forma, se a requisição não satisfazer nenhuma regra o squid irá bloqueá-la.