Manual traduzido do Squid

Autor: João <juliohenrique at msn.com>
Data: 01/07/2013
Introdução

Tradução livre do Squid.

Talvez, tenha alguns erros de digitação ou de tradução, mas nada que impeça o entendimento.

Será feita em séries, uma vez que o manual do Squid tem 191 páginas.

Welcome to Squid 3.3.3

Esta é a documentação do arquivo de configuração do Squid. Esta documentação também pode ser encontrada online em:

Veja a página do Squid e Wiki para encontrar o FAQ e outras documentações:

Esta documentação mostra os padrões para várias diretivas. Se você não precisa mudar o padrão, é só não alterar seu squid.conf, na maioria dos casos.

Em alguns casos, "none" significa que não há nenhuma configuração padrão, enquanto em outros casos, refere-se ao valor da opção. Os comentários indicarão quando for o caso.

Opções de configuração podem ser incluídas usando a diretiva "include". "include" recebe uma lista de arquivos a serem incluídos. Citações e curingas são suportados.

Por exemplo:

include /path/to/included/file/squid.acl.config

As inclusões podem ser aninhadas até uma profundidade embutida de 16 níveis.

Esta restrição arbitrária é para evitar referências recursivas do Squid, fazendo-o entrar em um loop infinito, enquanto tenta carregar os arquivos de configuração.

Configuração condicional

Declarações "if" podem ser usadas para fazer diretivas de configuração. Dependem das condições:

if <CONDITION>
… regular configuration directives …
[else
    … regular configuration directives …]
endif

"else" é opcional. As palavras "if", "else" e "endif", devem ser digitadas em suas próprias linhas, como se fossem diretivas regulares de configuração.

* Nota: a condição "else-if" não é suportada.

Estas condições individuais são suportadas:

  • true :: sempre avaliada como verdadeira.
  • false :: sempre avaliada como falsa.
  • <integer> = <integer> :: comparação de igualdade de dois números inteiros.

SMP – Macros relacionadas

As seguintes macros SMP relacionadas com o pré-processador de macros podem ser usadas:

  • ${process_name} :: expande para o "name" do processo atual, (ex.: squid1, squid2 ou cache1).
  • ${process_number} :: expande para o identificador do processo atual do Squid, que é um número inteiro (por exemplo, 1, 2, 3) único para os processos do Squid.
  • TAG: broken_vary_encoding :: esta opção ainda não é suportada pelo Squid3.
  • Default: none
  • TAG: error_map :: esta opção ainda não é suportada pelo Squid3.
  • Default: none
  • TAG: external_refresh_check :: esta opção ainda não é suportada pelo Squid3.
  • Default: none
  • TAG: ignore_ims_on_miss :: esta opção ainda não é suportada pelo Squid3.
  • Default: none
  • TAG: location_rewrite_program :: esta opção ainda não é suportada pelo Squid3.
  • Default: none
  • TAG: refresh_stale_hit :: esta opção ainda não é suportada pelo Squid3.
  • Default: none
  • TAG: storeurl_access :: esta opção ainda não é suportada por esta versão do Squid3.
  • Default: none
  • TAG: ignore_expect_100 :: remova esta linha. O recurso HTTP/1.1 agora é totalmente suportado por padrão.
  • Default: none
  • TAG: dns_v4_fallback :: remova esta linha. O Squid executa um algoritmo "’Happy Eyeballs ", o algoritmo "fallback" não é mais relevante.
  • Default: none
  • TAG: ftp_list_width :: remova esta linha. Configure a exibição de página FTP usando os controles de CSS em errorpages.css.
  • Default: none
  • TAG: maximum_single_addr_tries :: substituído pelo connect_retries. O comportamento foi alterado, por favor, leia a documentação antes de alterar.
  • Default: none
  • TAG: update_headers :: remova esta linha. O recurso é suportado por padrão nos tipos de armazenamento onde a atualização é implementada.
  • Default: none
  • TAG: url_rewrite_concurrency :: remova esta linha. Defina a opção "concurrency=" na tag url_rewrite_children.
  • Default: none
  • TAG: dns_testnames :: remova esta linha. O DNS não é mais testado na inicialização.
  • Default: none
  • TAG: extension_methods :: remova esta linha. Todos os métodos válidos para HTTP são aceitos por padrão.
  • Default: none
  • TAG: zero_buffers
  • Default: none
  • TAG: incoming_rate
  • Default: none
  • TAG: server_http11 :: remova esta linha. HTTP/1.1 é suportado por padrão.
  • Default: none
  • TAG: upgrade_http0.9 :: remova esta linha. O protocolo de straming ICY/1.0 é suportado por padrão.
  • Default: none
  • TAG: zph_local :: altere essas entradas. Use a diretiva qos_flows.
  • Default: none
  • TAG: header_access :: desde o Squid-3.0 substituir por request_header_access ou reply_header_access, dependendo se você deseja corresponder pedidos de clientes ou respostas do servidor.
  • Default: none
  • TAG: httpd_accel_no_pmtu_disc :: desde o Squid-3.0 é usada a flag "disable-pmtu-discovery".
  • Default: none
  • TAG: wais_relay_host :: substitua essa linha pela configuração "cache_peer".
  • Default: none
  • TAG: wais_relay_port :: substitua essa linha pela configuração "cache_peer".
  • Default: none
Opções de autenticação I

TAG: auth_param :: opções utilizadas para definir os vários parâmetros suportados pelo Squid3 para diferentes esquemas de autenticações.
Formato: auth_param scheme parameter [setting]

A ordem em que são apresentados os esquemas de autenticação para o cliente é dependente da ordem em que o esquema aparece pela primeira vez no arquivo de configuração.

Isto é, tem um bug (não é compatível com a RFC 2617) em que ele vai usar o esquema básico que se constitui da primeira entrada apresentada, mesmo se esquemas mais seguros forem utilizados.

Utilize a ordem nas configurações recomendadas abaixo.

Se outros navegadores têm dificuldades (não reconhecem os esquemas oferecidos, mesmo se você estiver usando o esquema básico) ou se você colocar primeiro o básico, ou desativar os outros esquemas (comentando sua linha de entrada).

Uma vez que um esquema de autenticação esteja totalmente configurado, ele só pode ser desligado fechando o Squid3 e/ou reiniciando. As alterações podem ser feitas com o Squid3 funcionando e ativadas com "reconfigure", isto é, você pode mudar para um suporte diferente, mas não desconfigurar o suporte completamente.

Por favor, note que esta diretiva define como o Squid processa a autenticação, porém, não ativa automaticamente a autenticação.

Para usar a autenticação, você deve, além disso, utilizar ACLs baseadas no login em http_access (proxy_auth, proxy_auth_regex or external with %LOGIN used in the format tag). O navegador tentará autenticar de acordo com a primeira ACL encontrada em http_access e também será desafiado para novo login com credenciais se a requisição estiver sendo negada por uma ACL do tipo proxy_auth.

* Atenção: a autenticação não pode ser usada em um proxy transparente interceptador, no qual o cliente pensa que está falando com o servidor de origem. Esta é uma limitação do protocolo TCP/IP para proxy transparente interceptando na porta 80. Não é uma limitação do Squid. As opções "transparent", "intercept" ou "tproxy", desabilitam a autenticação.

Parâmetros para o esquema básico

"program" cmdline :: especifica o comando para o autenticador externo. O programa lê uma linha contendo "username password" e responde "OK" ou "ERR" em um loop infinito.

Respostas do tipo "ERR" podem, opcionalmente, ser seguidas por uma descrição de erro disponível como %m na página de erro retornado. Se você usar autenticação, tenha certeza de ter pelo menos uma ACL do tipo proxy_auth.

Por padrão, o esquema de autenticação básico não é usado, a menos que um programa seja especificado.

Se você quiser usar a tradicional autenticação NCSA de proxy, defina esta linha para algo como:

auth_param basic program /etc/squid3/libexec/ncsa_auth /etc/squid3/etc/passwd

"utf8" on|off :: HTTP usa iso-latin-1 como conjunto de caracteres, enquanto alguns back-ends de autenticação, como LDAP usam UTF-8.

Se for definido como "on", o Squid3 traduzirá o HTTP charset iso-latin-1 para UTF-8 antes de enviar o nome de usuário e senha para o suporte.

"children" numberofchildren [startup=N] [idle=N] [concurrency=N] :: número máximo de processos para autenticar.

Se você iniciar com um valor baixo, o Squid3 vai ter que esperar por eles para processar um backlog de verificação de credenciais, e isto vai diminuir a velocidade. Quando as verificações de senha são feitas através de uma rede (lenta) é provável que você precise de muitos processos autenticadores.

As opções "startup=" e "idle=", permitem uma distorção na quantidade exata de execução. O mínimo startup=N será usado durante a inicialização e o reconfigure do Squid3.

Squid3 irá iniciar em grupos de até idle=N, em uma tentativa de atender às necessidades do tráfego e manter idle=N livre acima do máximo das necessidades.

A opção "concurrency=", define o número de requisições simultâneas que o Squid3 pode processar. O padrão 0 é utilizado para suportar apenas uma requisição por vez.

Configurando-o para um número maior que 0 altera o protocolo usado para incluir um número de canal na primeira linha do request/response, permitindo que vários pedidos possam ser enviados em paralelo mesmo sem esperar a resposta.

Não deve ser definida, a menos que tenha suporte para isso.

auth_param basic children 20 startup=0 idle=1

"realm" realmstring :: especifica o nome que será comunicado ao cliente para o esquema básico de autenticação de proxy (parte do texto que o usuário vai ver quando for solicitado seu nome de usuário e senha). Não há padrão.

auth_param basic realm Squid proxy-caching web server

"credentialsttl" timetolive :: especifica para o Squid3 por quanto tempo é válido o "username:password", em outras palavras, muitas vezes o programa auxiliar é chamado para esse usuário. Defina um valor baixo para forçar a revalidação com senhas curtas.

Note que definir um valor alto, não tem impacto sobre a sua suscetibilidade para repetir os ataques, a menos se você estiver usando uma senha de uso único no sistema (como SecureID). Se você estiver usando tal sistema, estará vulnerável a ataques de repetição, a menos que você use a ACL "max_user_ip" em uma regra "http_access".

"casesensitive" on|off :: especifica se nomes de usuários são case sensitive. A maioria dos bancos de dados de usuários são case sensitive permitindo que o mesmo nome de usuário possa ser escrito usando letras maiúsculas e minúsculas. Faz uma grande diferença para o processamento da ACL user_max_ip.

auth_param basic casesensitive off

Parâmetros para o esquema Digest

"program" cmdline :: especifica o comando para o autenticador externo. Um programa lê uma linha contendo "username":"realm" e responde com o valor apropriado hexadecimal H (A1) ou "ERR", se o usuário (ou o seu hash H (A1)) não existe.

Veja RFC 2616 para a definição de H (A1).

As respostas "ERR" podem, opcionalmente, ser seguidas por uma descrição de erro disponível como %m na página retornada.

Por padrão, o esquema de autenticação Digest não é usado, a menos que um programa seja especificado.

Se for usar um autenticador Digest, defina esta linha como, por exemplo:

auth_param digest program /etc/squid3/bin/digest_pw_auth /etc/squid3/etc/digpass

"utf8" on|off :: HTTP usa iso-latin-1 como conjunto de caracteres, enquanto alguns back-ends de autenticação, como LDAP, usam UTF-8.

Se for definido como "on", o Squid3 traduzirá o HTTP charset iso-latin-1 para UTF-8 antes de enviar o nome de usuário e senha para o suporte.

"children" numberofchildren [startup=N] [idle=N] [concurrency=N] :: número máximo de autenticações para autenticar (padrão 5).

Se você iniciar com um valor baixo, o Squid3 terá que esperar por eles para processar um backlog de cálculos de H (A1), e vai diminuir a velocidade.

Quando os cálculos H (A1) forem feitos através de uma rede (lenta), é provável que você precise de muitos processos autenticadores.

As opções "startup=" e "idle=", permitem uma distorção na quantidade exata de execução. O mínimo startup=N será usado durante a inicialização e o reconfigure do Squid3.

Squid3 irá iniciar em grupos de até idle=N em uma tentativa de atender às necessidades do tráfego e manter idle=N livre acima do máximo das necessidades.

A opção "concurrency=" define o número de requisições simultâneas que o Squid3 pode processar. O padrão 0 é utilizado para suportar apenas uma requisição por vez. Configurando-o para um número maior que 0, altera o protocolo usado para incluir um número de canal na primeira linha do request/response, permitindo que vários pedidos possam ser enviados em paralelo mesmo sem esperar a resposta.

Não deve ser definida, a menos que tenha suporte para isso.

auth_param digest children 20 startup=0 idle=1

"realm" realmstring :: especifica o nome que será comunicado ao clliente para o esquema Digest de autenticação de proxy (parte do texto que o usuário vai ver quando for solicitado seu nome de usuário e senha). Não há padrão.

auth_param digest realm Squid proxy-caching web server

"nonce_garbage_interval" timeinterval :: especifica o intervalo de "nonces" emitidos para checar a validade dos clients_agent’s. "Nonce" refere-se a um ‘número usado uma vez’.

Geralmente, é um número aleatório (ex.:, autenticação MD5).

"nonce_max_duration" timeinterval :: especifica o tempo máximo que um dado nonce será válido.

"nonce_max_count" number :: especifica o número máximo de vezes que um dado nonce pode ser usado.

"nonce" é um número usado uma vez. Geralmente, é um número pseudo-aleatório, emitido em um protocolo de autenticação para garantir que comunicações antigas não possam ser reutilizadas em ‘ataques de repetição’.

"nonce_strictness" on|off :: determina se o Squid3 requer um comportamento estrito de incremento-por-1 para a contagem de nonce, ou apenas incremento (off – para uso quando agentes geram contagem nonce que ocasionalmente decrementam um (isto é, 1,2,4,6)). O padrão é off.

"check_nonce_count" on|off :: esta diretiva, se definida como off, torna possível desativar a verificação da contagem nonce para contornar implementações de buggy digest qop em certas versões de navegadores.

O padrão é on, para verificar a contagem nonce e proteger de ataques de repetição de autenticação.

"post_workaround" on|off :: esta é uma solução para bug de certos navegadores que enviam uma requisição digest incorreta em pedidos POST, quando reutilizam o mesmo nonce que adquiriram antes em uma requisição GET.

Opções de autenticação II

Opções de esquema NTLM

"program" cmdline :: especifica o comando para o autenticador NTLM externo. Este programa lê troca de pacotes NTLMSSP com o navegador via Squid3 até que a autenticação seja concluída.

Se você usar um autenticador NTLM, certifique-se que tem uma ACL do tipo proxy_auth tipo. Por padrão, o NTLM authenticator_program não é utilizado.

auth_param ntlm program /etc/squid3/bin/ntlm_auth

"children" numberofchildren [startup=N] [idle=N] :: número máximo de processos para autenticar (O padrão é 5).

Se você iniciar com um valor baixo, o Squid3 vai ter que esperar por eles para processar um backlog de verificação de credenciais, e isto vai diminuir a velocidade. Quando as verificações de senha são feitas através de uma rede (lenta,) é provável que você precise de muitos processos autenticadores.

As opções "startup=" e "idle=" permitem uma distorção na quantidade exata de execução. O mínimo startup=N será usado durante a inicialização e o reconfigure do Squid3.

Squid3 irá iniciar em grupos de até idle=N em uma tentativa de atender às necessidades do tráfego e manter idle=N livre, acima do máximo das necessidades.

auth_param ntlm children 20 startup=0 idle=1

"keep_alive" on|off :: se você tiver problemas com requisições PUT/POST ao usar o esquema de negociação de autenticação, então, você pode tentar definir isso como off.

Isso fará com que o Squid3 force o fechamento da conexão nas requisições iniciais, onde o navegador solicita os esquemas que são suportados pelo proxy.

auth_param ntlm keep_alive on

Opções de configuração NEGOTIATE

"program" cmdline :: especifica o comando para o autenticador NEGOTIATE externo. Este protocolo é utilizado no Microsoft Active Directory com as configurações habilitadas no Microsoft Internet Explorer ou no Mozilla Firefox.

Seu principal objetivo, é a troca de credenciais com o proxy Squid3 usando os mecanismos Kerberos. Se você usar um autenticador Negotiate, certifique-se de ter pelo menos uma ACL do tipo proxy_auth ativa. Por padrão, o authenticator_program Negotiate não é utilizado.

O único programa suportado para esta regra é o ntlm_auth, programa distribuído como parte do Samba, versão 4 ou superior.

auth_param negotiate program /etc/squid3/bin/ntlm_auth –helper-protocol=gss-spnego

"children" numberofchildren [startup=N] [idle=N] :: número máximo de processos para autenticar (O padrão é 5).

Se você iniciar com um valor baixo, o Squid3 vai ter que esperar por eles para processar um backlog de verificação de credenciais, e isto vai diminuir a velocidade. Quando as verificações de senha são feitas através de uma rede (lenta) é provável que você precise de muitos processos autenticadores.

As opções "startup=" e "idle=", permitem uma distorção na quantidade exata de execução. O mínimo startup=N será usado durante a inicialização e o reconfigure do Squid3.

Squid3 irá iniciar em grupos de até idle=N em uma tentativa de atender às necessidades do tráfego e manter idle=N livre, acima do máximo das necessidades.

auth_param negotiate children 20 startup=0 idle=1

"keep_alive" on|off :: se você tiver problemas com requisições PUT/POST ao usar o esquema de negociação de autenticação, então, você pode tentar definir isso como off.

Isso fará com que o Squid3 force o fechamento da conexão nas requisições iniciais, onde o navegador solicita os esquemas que são suportados pelo proxy.

auth_param negotiate keep_alive on

Exemplos:

#Configuração mínima recomendada por esquema:
#auth_param negotiate program < descomente e complete esta linha para ativar >
#auth_param negotiate children 20 startup=0 idle=1
#auth_param negotiate keep_alive on
#
#auth_param ntlm program < descomente e complete esta linha para ativar >
#auth_param ntlm children 20 startup=0 idle=1
#auth_param ntlm keep_alive on
#
#auth_param digest program < descomente e complete esta linha >
#auth_param digest children 20 startup=0 idle=1
#auth_param digest realm Squid proxy-caching web server
#auth_param digest nonce_garbage_interval 5 minutes
#auth_param digest nonce_max_duration 30 minutes
#auth_param digest nonce_max_count 50
#
#auth_param basic program <descomente e complete esta linha>
#auth_param basic children 5 startup=5 idle=1
#auth_param basic realm Squid proxy-caching web server
#auth_param basic credentialsttl 2 hours
Default:
none

TAG: authenticate_cache_garbage_interval :: período de tempo da coleta de lixo em todo o cache do nome de usuário.

Este é um trade-off entre a utilização da memória (intervalos longos – digamos 2 dias) e CPU (intervalos curtos – digamos 1 minuto).

Mude somente se você tiver boas razões para isso.

Default: authenticate_cache_garbage_interval 1 hour

TAG: authenticate_ttl :: tempo que um usuário fica logado com as suas credenciais. Quando o intervalo de coleta de lixo ultrapassa o tempo, todas as credenciais dos usuários passadas pelo TTL são removidas da memória.

Default: authenticate_ttl 1 hour

TAG: authenticate_ip_ttl :: se você usar a autenticação de proxy com uma ACL do tipo "max_user_ip" esta diretiva controla por quanto tempo o Squid3 mantém o endereço IP associado com cada usuário.

Use um pequeno valor (por exemplo, 60 segundos) se os usuários alteram os endereços IP rapidamente, como é o caso de dial-up. Você pode utilizar um valor maior (por exemplo, 2 horas) em uma LAN corporativa com atribuições de endereços IP estáticos.

Default: authenticate_ip_ttl 0 seconds

Controles de acesso

TAG: external_acl_type :: esta opção define ACLs externas usando um programa de ajuda para procurar o status.

external_acl_type name [options] FORMAT.. /path/to/helper [helper arguments..]

Opções:

  • ttl=n :: TTL em segundos para resultados em cache (o padrão é 3600 para uma hora)
  • negative_ttl=n :: TTL para pesquisas negativas em cache (o padrão é o mesmo que ttl)
  • children-max=n :: número máximo de ACLs externas de processos auxiliares (Default: 20).
  • children-startup=n :: número mínimo de ACLs externas de processos auxiliares que inicializam (Default 0).
  • children-idle=n :: número de ACLs de processos auxiliares para se manter à frente do trafego. O Squid3 usará esta diretiva sempre que os processos existentes ultrapassarem a carga de tráfego. Até o valor máximo de children-max. (default 1)
  • concurrency=n :: nível de concorrência por processo. Deve ser usado apenas quando tiver suporte para processar mais do que uma consulta por vez.
  • cache=n :: limita o tamanho do cache, o padrão é ilimitado.
  • grace=n :: percentual remanescente do TTL quando uma atualização de entrada de cache for iniciada sem a necessidade de espera por uma nova resposta. (o padrão é n).
  • protocol=2.5 :: modo de compatibilidade para ACLs externas do Squid-2.5. Os protocolos utilizados nesta comunicação são o IPv4 e IPv6. O padrão é auto-detectar o IPv6, e usá-lo quando disponível.

Formato das especificações:

  • %LOGIN :: nome de login de usuário autenticado.
  • %EXT_USER :: nome de usuário para uma ACL externa.
  • %EXT_LOG :: detalhes de log para uma ACL externa.
  • %EXT_TAG :: tag de uma ACL externa.
  • %IDENT :: identidade do nome de usuário.
  • %SRC cliente IP.
  • %SRCPORT :: porta de origem do cliente.
  • %URI :: URL requerida.
  • %DST :: HOST requerido.
  • %PROTO :: protocolo requerido.
  • %PORT :: porta requerida.
  • %PATH :: caminho de URL requerido (incluindo string de consulta, se houver.
  • %METHOD :: método requerido.
  • %MYADDR :: endereço da interface do Squid3.
  • %MYPORT :: número da http_port do Squid3.
  • %USER_CERT :: certificado SSL do usuário no formato PEM.
  • %USER_CERTCHAIN :: cadeia de certificados SSL do usuário no formato PEM.
  • %USER_CERT_xx :: usuário certificado SSL com atributo xx de sujeito.
  • %USER_CA_xx :: usuário certificado SSL com atributo xx de emissor.
  • %>{Header} :: HTTP cabeçalho de requisição "Header".
  • %>{Hdr:member} :: HTTP cabeçalho de requisição "Hdr" lista de membros "member".
  • %>{Hdr:;member} :: HTTP cabeçalho de requisição da lista de membros usando ";" como separador; pode ser usado qualquer caractere não-alfanumérico.
  • %<{Header} :: HTTP resposta de cabeçalho "Header".
  • %<{Hdr:member} :: HTTP resposta de cabeçalho "Hdr" da lista de membros "member".
  • %<{Hdr:;member} :: HTTP resposta de cabeçalho da lista de membros usando ";" como separador; pode ser usado qualquer caractere não-alfanumérico.
  • %% :: sinal de percentual. Útil para ajudas que precisam um formato imutável.

Além do acima referido, qualquer string especificada na referenciação ACL, também será incluída na linha de requisição depois dos formatos especificados (veja a diretiva "acl external").

O helper recebe as linhas pela especificação do formato acima, e retorna as linhas começando com OK ou ERR, indicando a validade da requisição e, opcionalmente, seguidas por outras palavras-chave com mais detalhes.

Sintaxe do resultado geral: OK/ERR keyword=value …

Keywords definidas:

  • user= :: nome do usuário (login).
  • password= :: senha do usuário (para login= cache_peer option).
  • message= :: mensagem descrevendo o motivo. Disponível como %o na página de erros.
  • tag= :: aplica uma tag na requisição (em ambos ERR e OK). Apenas define uma tag semalterar tags existentes.
  • log= :: String registrada no access.log. Disponível como %ea nas especificações do logformat.

Se o protocolo for 3.0 (protocol=3.0, o padrão), então a URL de escape é usada para proteger as requisições e as repostas.

Se usar protocol=2.5, então, todos os valores precisam estar entre aspas se contiver espaços em branco escapados com a barra invertida \.

Quando usar a opção "concurrency=", o protocolo é alterado introduzindo-se uma tag do canal de consulta na frente das requisições/respostas (request/response). A tag do canal de consulta é um número entre 0 e concurrency-1.

Default:
none

TAG: acl :: definido uma lista de acesso.

Toda definição da lista de acesso deve começar com "aclname" e "acltype", seguidos por quaisquer tipos de argumentos específicos, ou o arquivo, ou o caminho de um arquivo que será lido pela ACL.

acl aclname acltype argument …
acl aclname acltype "file" …

Quando usar um arquivo, o arquivo deve conter um item por linha.

Por padrão, as expressões regulares são case-sensitive (diferenciam maiúsculas de minúsculas).

Para torná-las insensitives, use a opção "-i". Para voltar para maiúsculas, use a opção "+ i" entre os padrões, ou faça uma nova ACL sem "-i".

Alguns tipos de ACL requerem a suspensão da requisição atual para poder acessar uma fonte de dados externa. Aquelas que são marcadas com a tag [slow] são lentas, aquelas que são marcadas com a tag [fast] são rápidas, e aquelas não marcadas são rápidas.

Para mais informações, veja: SquidFaq/SquidAcl – Squid Web Proxy Wiki

Tipos de ACLs disponíveis

acl aclname src ip-address/mask … :: clients IP address [fast]
acl aclname src addr1-addr2/mask … :: range of addresses [fast]
acl aclname dst ip-address/mask … :: URL host’s IP address [slow]
acl aclname localip ip-address/mask … :: IP address the client connected to (endereço IP de cliente conectado a) [fast]

acl aclname arp mac-address … (xx:xx:xx:xx:xx:xx notação)

A ACL arp requer a opção "–enable-arp-acl", além disso, ACLs arp não são portáveis para todos os sistemas operacionais.

Funciona em GNU/Linux, Solaris, Windows, FreeBSD e algumas outras variantes do *BSD.
[fast]

* Nota: o Squid3 só pode determinar o endereço MAC para os clientes que estão na mesma sub-rede. Se o cliente estiver em uma sub-rede diferente, então o Squid3 não pode descobrir o endereço MAC.

acl aclname srcdomain .foo.com :: reverse lookup, from client IP [slow]
acl aclname dstdomain .foo.com :: Destination server from URL [fast]
acl aclname srcdom_regex [-i] \.foo\.com … :: regex matching client name [slow]
acl aclname dstdom_regex [-i] \.foo\.com … :: regex matching server [fast]

Para "dstdomain" e "dstdom_regex", uma pesquisa inversa é tentada se o IP baseado na URL não for encontrado. O nome "none" é usado se a pesquisa inversa falhar.

acl aclname src_as number …
acl aclname dst_as number … :: [fast]

Exceto para controle de acesso, números AS podem ser usados para encaminhamento das requisições de caches específicos. Abaixo, tem um exemplo para encaminhar todos os pedidos de "AS#1241" e só para aqueles em "mycache.mydomain.net":

# acl asexample dst_as 1241
# cache_peer_access mycache.mydomain.net allow asexample
# cache_peer_access mycache_mydomain.net deny all

acl aclname peername myPeer … :: [fast] corresponde com a entrada cache_peer setando name= on na linha cache_peer lines para uso confiável.

  • acl aclname time [day-abbrevs] [h1:m1-h2:m2]
  • [fast]
  • day-abbrevs:
  • S – Sunday
  • M – Monday
  • T – Tuesday
  • W – Wednesday
  • H – Thursday
  • F – Friday
  • A – Saturday
  • h1:m1 deve ser menor do que h2:m2

Coloque sempre os dias na ordem, você pode omitir dias, mas coloque na ordem.

acl aclname url_regex [-i] ^http:// … :: regex (expressão regular) corresponde a todas as URLs [fast]
acl aclname urllogin [-i] [^a-zA-Z0-9] … :: regex corresponde ao campo de login na URL
acl aclname urlpath_regex [-i] \.gif$ … :: regex que corresponde ao caminho da URL [fast]

acl aclname port 80 70 21 0-1024… :: porta TCP de destino [fast]. Intervalos são permitidos.
acl aclname localport 3128 … :: porta TCP de conexão [fast]. NP: para o modo "intercept" é usualmente ’80’
acl aclname myportname 3128 … :: porta http(s)_port (quando usar https coloque uma porta diferente de http_port) [fast]
acl aclname proto HTTP FTP … :: requisição de protocolo [fast]
acl aclname method GET POST … :: requisição de método HTTP [fast]
acl aclname http_status 200 301 500- 400-403 … :: código do status na resposta [fast]
acl aclname browser [-i] regexp … :: o padrão corresponde ao cabeçalho User_Agent (veja também req_header abaixo) [fast]
acl aclname referer_regex [-i] regexp … :: o padrão corresponde ao cabeçalho refererr [fast]. referer é pouco confiável, então use com cuidado.

acl aclname ident username …
acl aclname ident_regex [-i] pattern … :: a string corresponde à saída ident [slow] use REQUIRED para aceitar qualquer ident não-nulo.

acl aclname proxy_auth [-i] username …
acl aclname proxy_auth_regex [-i] pattern … :: autenticação HTTP verifica se o login e a senha digitados conferem com o login e a senha cadastrados [slow] e recebe uma lista de nomes de usuários permitidos.

Use REQUIRED para aceitar qualquer nome de usuário válido. Utilize a autenticação de proxy em cenários forward-proxy e autenticação HTTP simples em cenários reverse-proxy.

NOTAS:

  • Quando um cabeçalho de autenticação de proxy é enviado, mas não é necessário na checagem da ACL, então o nome do usuário NÃO será registrado no access.log.
  • proxy_auth requer um programa de autenticação EXTERNO para checar as combinações de login e senha (veja a diretiva auth_param).
  • proxy_auth não pode ser usado em um proxy transparent/intercep. O navegador precisa ser configurado para usar um proxy e responder à autenticação.

acl aclname snmp_community string … :: comunhão de strings para limitar o acesso ao agente SNMP [fast]

Exemplo:

acl snmppublic snmp_community public

acl aclname maxconn number :: será correspondido quando o endereço IP do cliente tem mais do que <number> conexões TCP estabelecidas. [fast]

* Nota: só mede conexões TCP diretas, então X-Forwarded-For para clientes indiretos não serão contadas.

acl aclname max_user_ip [-s] number :: corresponde quando o usuário tenta logar mais de uma vez com IPs diferentes. O parâmetro "authenticate_ip_ttl" controla o tempo de espera nas entradas. [fast]

Se "-s" for especificado, o limite é rigoroso, negando a navegação de outros endereços IP até que o TTL expire. Sem "-s", o Squid3 vai irritar o usuário negando requisições aleatoriamente (o contador é zerado cada vez que o limite é atingido e um pedido for negado).

* Nota: no modo de aceleração, ou onde haja um mix de proxies, os clientes podem parecer vir de múltiplos endereços, se forem passando por muitos proxies, então, um limite de 1, nesse caso, pode causar problemas para os usuários.

acl aclname random probability :: corresponde pseudo-aleatoriamente as requisições, com base na probabilidade dada.

A probabilidade pode ser escrita como um decimal (0,333), como fração (1/3) ou como razão de matches:non-matches (3:5).

acl aclname req_mime_type [-i] mime-type … :: a regex corresponde com o tipo mime da requisição gerada pelo cliente. Pode ser usada para detectar upload de arquivos em alguns tipos de requisições HTTP por tunelamento [fast]

* Nota: NÃO coincide com a resposta. Você não pode usar para saber o tipo de arquivo retornado.

acl aclname req_header header-name [-i] any\.regex\.here :: A regex corresponde com qualquer um dos cabeçalhos de requisição conhecidos. Pode ser vista como um super-conjunto de "browser", "referer" e "mime-type" ACLs [fast]

acl aclname rep_mime_type [-i] mime-type … :: a regex corresponde com o tipo mime da resposta recebida pelo Squid3. Pode ser usada para detectar download de arquivos em alguns tipos de requisições HTTP por tunelamento [fast]

* Nota: não tem nenhum efeito nas regras http_access. Só tem efeito nas regras que afetam o fluxo de dados de resposta como "http_reply_access".

acl aclname rep_header header-name [-i] any\.regex\.here :: a regex corresponde com qualquer um dos cabeçalhos de resposta conhecidos. Pode ser vista como um super-conjunto de "browser", "referer" e "mime-type" ACLs [fast]

acl aclname external class_name [arguments…] :: ACL externa de pesquisa por meio de uma classe auxiliar definida pela diretiva external_acl_type [slow]

acl aclname user_cert attribute values… :: corresponde com os atributos do usuário no certificado SSL sendo um dos DN/ C/ O/ CN/ L/ ST [fast]

acl aclname ca_cert attribute values… :: corresponde com os atributos do usuário no certificado CA SSL sendo um dos DN/ C/ O/ CN/ L/ ST [fast]

# acl aclname ext_user username …
# acl aclname ext_user_regex [-i] pattern …
:: a string corresponde com o nome de usuário retornado pela ACL externa [slow]. Use REQUIRED para aceitar qualquer nome de usuário não-nulo.

acl aclname tag tagvalue … :: a string corresponde com a tag retornada pela ACL externa.

acl aclname hier_code codename … :: a string corresponde com o código de hierarquia do Squid3 [fast]. Por exemplo, DIRECT, PARENT_HIT, NONE, etc.

* Nota: não tem nenhum efeito nas regras "http_access". Só tem efeito nas regras que afetam fluxo de dados de resposta, como "http_reply_access".

Exemplos:

acl macaddress arp 09:00:2b:23:45:67
acl myexample dst_as 1241
acl password proxy_auth REQUIRED
acl fileupload req_mime_type -i ^multipart/form-data$
acl javascript rep_mime_type -i ^application/x-javascript$

Default:

ACLs all, manager, localhost, e to_localhost são predefinidas.

http://www.vivaolinux.com.br/artigo/Manual-traduzido-do-Squid

Deixe uma resposta

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s