Proxy Squid - 4

Tags da seção Timeouts

Parâmetros de time out podem ser baseados em tempo de conexão, conexão com host, por site ou domínio, por tipo de requisição, etc. Time outs bem configurados são essenciais para otimizar a performance do Squid. Os principais parâmetros estão listados abaixo:

connect_timeout

O tempo de espera que o Squid aguarda pela resposta do servidor de origem. Se esse tempo for excedido, o Squid responde com uma mensagem de "Connection timed out". Padrão de 120 segundos.

connect_timeout segundos

peer_connect_timeout

Especifica quanto tempo deverá ser aguardada uma resposta de um cache vizinho para conexões TCP. Diferentes limites podem ser configurados para vizinhos distintos. Padrão de 30 segundos.

peer_connect_timeout segundos

site select_timeout

Define o tempo de expiração para URN em seleção de múltiplas URLs. URN é um protocolo desenvolvido para resolução de nomes independente de localização. Padrão de 4  segundos.

siteselect_timeout segundos

read_timeout

Essa opção é usada em conexões server-side. Após cada leitura bem sucedida, o time out será aumentado nesse valor. Se nenhum dado for lido após esse tempo, a requisição é abortada e logada como ERR_READ_TIMEOUT. Padrão de 15 minutos.

read_timeout tempo

request_timeout

Diz ao Squid quanto tempo esperar após uma conexão HTTP ser aberta. Para conexões persistentes, o Squid irá aguardar esse tempo após o fim da requisição anterior. Default de 30 segundos.

request_timeout segundos

client_lifetime

Tempo máximo que um cliente poderá ficar conectado ao processo de cache. Entenda-se cliente como browser. Isso protege o cache de ter muitos sockets em estado CLOSE_WAIT devido a clientes que desconectam sem utilizar o procedimento adequado. Padrão de 1 dia.

client_lifetime tempo

half_closed_clients

Alguns clientes podem parar o envio de pacotes TCP enquanto deixam o recebimento em aberto. Algumas vezes o Squid não consegue diferenciar conexões TCP totalmente fechadas e parcialmente fechadas. Por padrão, conexões parcialmente fechadas são mantidas abertas até que haja um erro de leitura ou escrita no socket. Mudando essa opção para off fará com que o Squid imediatamente feche a conexão quando a leitura do socket retornar "sem mais dados para leitura".

half_closed_clients on|off

pconn_timeout

Aqui configura-se o timeout para conexões persistentes. Depois do tempo de inatividade determinado aqui, o Squid encerra as conexões persistentes. Caso você configure essa opção para menos de 10 segundos, a funcionalidade estará desabilitada. Padrão de 120
segundos.

pconn_timeout segundos

ident_timeout

Tempo máximo para para aguardar requisições IDENT. Se esse valor estiver muito alto e a opção ident_lookup ativada, existe a possibilidade de sujeitar-se a uma negação de serviço, por ter muitas requisições IDENT ao mesmo tempo. Padrão de 10 segundos.

ident_timeout segundos

shutdown_lifetime

Quando o Squid recebe um SIGTERM ou um SIGHUP, o cache é colocado em modo de "shutdown pendente" até que todos os sockets ativos sejam fechados. Qualquer cliente ainda ativo depois desse período irá receber uma mensagem de timeout. Default de 30 segundos.

shutdown_lifetime segundos

 

Tags da seção Access Control Lists

Sem dúvida a parte mais importante para os administradores. Com o uso de ACLs bem configuradas e planejadas, é possível não só manter seus usuários sob controle, mas também melhorar desempenho e facilitar a administração.

acl

Define uma lista de acesso. Quando usando um arquivo para buscar os dados, o mesmo deve conter uma informação por linha. Expressões regulares são case-sensitive - para fazê-las case-insensitive, utilize a opção -i.

acl nome tipo string1 ... | "arquivo"

src

Baseado em ip ou hostname de origem da requisição

acl nome src ip/máscara.

dst

Baseado em ip ou hostname de destino da requisição. A ACL só é interpretada depois que a resolução DNS for feita.

acl nome dst ip/máscara.

srcdomain

O domínio da máquina cliente. Os domínios serão obtidos por resolução reversa de IP, o que pode causar atrasos para a resposta da requisição.

acl aclname srcdomain nome_domínio

dstdomain

Mesmo que srcdomain, mas levando-se em conta o destino.

acl nome dstdomain nome_domínio

srcdom_regex

Expressão regular que é avaliada para tentar marcar um domínio requisitante.

acl nome srcdom_regex regex

dstdom_regex

Mesmo que srcdom_regex, mas com relação ao destino.

acl nome dstdom_regex regex

time

Dia da semana e hora

acl nome time [abreviação-do-dia] [h1:m1-h2:m2]

Onde:

  • S - Sunday (Domingo)
  • M - Monday (Segunda-Feira)
  • T - Tuesday (Terça-Feira)
  • W - Wednesday (Quarta-Feira)
  • H - Thursday (Quinta-Feira)
  • F - Friday (Sexta-Feira)
  • A - Saturday (Sábado)

h1:m1 - horário de início

h2:m2 - horário do término

url_regex

Essa ACL irá procura em na URL uma expressão regular que especificada. Opção case-sensitive

acl nome url_regex regex

urpath_regex

Essa acl irá fazer uma combinação de uma expressão regular com o caminho em um servidor que está se tentando acessar. Isso significa que o Squid irá ignorar o nome do servidor e o protocolo utilizado.

acl nome urlpath_regex regex

port

O acesso pode ser controlado pela porta do endereço do servidor requisitado.

acl nome port numero-porta

proto

Especifica o protocolo de transferência (http, ftp, etc).

acl nome proto protocolo

method

Especifica o tipo de método da requisição.

acl nome method tipo-método

browser

Expressão regular cujo padrão tentara combinar com o contido no cabeçalho HTTP de requisição do cliente, descobrindo assim o agente (browser) utilizado.

acl nome browser tipo

ident

Seqüência de caracteres que combinam com o nome do usuário. Requer um servidor Ident rodando na máquina do cliente.

acl nome ident nome_usuário

ident_regex

O mesmo que ident, mas utilizando-se de expressão regular.

acl aclname ident_regex pattern

src_as

Origem de um sistema autônomo

 

dst_as

Destino de um sistema autônomo

 

snmp_community

Comunidade SNMP.

acl snmppublic snmp_community public

maxconn

Limite máximo de conexões provenientes de um mesmo cliente. Útil para restringir número de usuários por IP, bem como fazer controle de uso da banda.

 

req_mime_type

Expressão regular que combina com o tipo de conteúdo contido no cabeçalho de requisição.

acl nome req_mime_type padrão

arp

MAC Address do cliente.

acl nome arp MAC_ADDRESS

 

http_access

Permite ou nega acesso ao serviço http baseado na lista de acesso (acl) definida. O uso de "!" indica que será a negação da acl.

Se nenhuma das acls configuradas se encaixar na requisição em curso, será então aplicada a última regra. É importante sempre criar uma acl chamada all (ou descomentar a linha já existente) e colocar um `http_access deny all'.

http_access allow|deny [!]nome ...

 

icp_access

Permite ou nega acesso à porta ICP, baseando-se nas listas de acesso.

icp_access allow|deny [!]nome ...

miss_access

Usado para forçar seus vizinhos a usar seu servidor como "irmão" ao invés de "pai".

miss_access allow|deny [!]nome...

cache_peer_access

Similar ao `cache_peer_domain', mas oferece mais recursos por utilizar-se da flexibilidade das acls. Sua sintaxe é idêntica ao `http_access'.

cache_peer_access cache-host allow|deny [!]nome ...

ident_lookup_access

Uma lista de elementos em uma ACL, os quais, se encontrados, irão gerar uma requisição IDENT.

ident_lookup_access allow|deny nome ...

Tags da seção auth_param

Uma das principais mudanças do Squid 2.4.x para o 2.5.x foi o sistema de autenticação. Todas as opções referentes a isso estão agoras sujeitas a opção auth_param. Vamos ver abaixo como ela funciona.

Formato geral

auth_param esquema parâmetro [opções]

program

Especifica o programa utilizado para autenticação. Tal programa irá ler uma linha contendo "usuário senha" e responder ao squid com um "OK" para sucesso ou um "ERR" para falha. Para utilizar um autenticador, é necessário uma acl do tipo proxy_auth. Por padrão,
utiliza-se o sistema de autenticação básico.

auth_param basic program /path/do/programa /path/do/arquivo/senhas

children

Número de processos filhos que o programa de autenticação poderá conter.

auth_param basic children número

realm

Texto que irá aparecer na caixa de diálogo de login. Não é necessário configurar, mas confere uma certa personalização ao servidor.

auth_param basic realm Texto de login

credentialsttl

Especifica por quanto tempo o Squid irá assumir que uma autenticação bem sucedida continuará válida.

auth_param basic credentialsttl tempo

 

Tags da seção parâmetros administrativos

O parâmetros configurados nessa seção permitem que o administrador do Squid especifique usuário e grupos no qual o Squid irá rodar, bem como hostname que irá aparecer quando houver erros, etc.

cache_mgr

Usando essa tag, nós podemos especificar o endereço de e-mail doadministrador do cache local, que será o responsável pela instalação dessa máquina. Esse usuário será notificado por e-mail caso o cache morra. (usuário local). Padrão: webmaster

cache_mgr usuário

 

cache_effective_user / cache_effective_group

Quando iniciado como root, o Squid irá procurar esse parâmetro para determinar o usuário e grupo no qual irá rodar. É importante ressaltar que iniciar o Squid com usuário não root fará com que ele não consiga abrir nenhuma porta abaixo de 1024 localmente. Ao configurar esse
parâmetro, tenha certeza de que o usuário escolhido terá as permissões necessárias para escrever no diretório de logs, cache e todos os necessários.

cache_effective_user usuário

cache_effective_group grupo

visible_hostname

Se você deseja apresentar uma mensagem de erro com um hostname específico, defina aqui essa opção. Do contrário o Squid irá tentar descobrir o hostname. Esse parâmetro não será necessário se você não tiver um grande cluster de Squids.

visible_hostname nomehost

hostname_aliases

Uma lista de outros nomes que seu cache possa ter. Essa opção é usada para detectar requisições internas quando um cache tem mais de um hostname em uso.

hostname_aliases nomehost

 

Tags da seção httpd-accelerator

O Squid pode ser usado como um balanceador de carga ou redutor de carga de um webserver em particular. Alguns caches podem trabalhar com requisições de cache e requisições http, fazendo deles também um servidor web. O desenvolvimento do Squid não optou por essa solução.

Entretanto, adicionando-se uma camada de tradução o Squid pode receber e interpretar requisições no formato web-server, as quais ele irá repassar ao servidor web real, situado atrás dele.

Nessa seção também configura-se o Squid para trabalhar de modo transparente.

httpd_accel_host

Configura o nome do host para o serviço acelerado. Se você tiver vários servidores, será necessário utilizar a palavra virtual ao invés de hostname.

httpd_accel_host hostname(IP)|virtual

httpd_accel_port

Porta para qual as requisições aceleradas serão enviadas.

httpd_accel_port porta


httpd_accel_single_host

Se você está utilizando o Squid como um acelerador web e tem somente um servidor no backend, configure essa opção para on. Isso fará com que o Squid mande as requisições para o servidor, independentemente do que o cabeçalho disser.

httpd_accel_single_host on|off

httpd_accel_with_proxy

Se a opção http_accel_host estiver ativada, então o Squid irá parar de trabalhar a funcionalidade de cache. É necessário configurar essa opção para que ambas as funcionalidades continuem ativas.

httpd_accel_with_proxy on|off

httpd_accel_uses_host_header

As requisições HTTP/1.1 incluem um cabeçalho relativo ao host, que basicamente contém o nome do mesmo na URL. O Squid pode ser um acelerador para diferentes servidores web através da analise do cabeçalho http. Entretanto, o Squid não checa os valores do cabeçalho do host, abrindo uma possível brecha de segurança. Mais uma vez, é recomendado utilizar essa tag com cuidado.

httpd_accel_uses_host_header on|off

 

Tags da seção Miscellaneous

Como o nome sugere, essa seção sobre alguns parâmetros que não podem ser explicitamente encaixados com nenhuma outra categoria. Iremos abranger:

  • Limite de crescimento de arquivos de log.
  • Mostrar informações customizadas sobre os clientes e erros.
  • Definir pools de memória para o Squid.
  • Gerenciamento por SNMP.
  • Coordernação com caches vizinhos através de WCCP.
  • Direcionar as requisições tanto para o servidor de origem como um cache vizinho.

dns_test names

O teste de DNS pára de ser executado tão logo ele consegue resolver a primeira busca de nome. Esse teste pode ser desabilitado iniciando-se o Squid com a opção -D na linha de comando.

dns_testnames URL

logfile_rotate

Especifica o número de rotações executadas quando da digitação de `squid -k rotate'. O padrão é 10, o que significa que o Squid criará extensões de 0 até 9. Configurar o log_rotate para 0 irá desabilitar o rotacionamento.

logfile_rotate número

append_domain

Anexa o nome do domínio local para hostnames sem nenhum ponto (.). Essa opção deve conter um domínio com ponto (.) no início.

append_domain nome_domínio

tcp_recv_bufsize

Tamanho máximo de um buffer TCP.

tcp_recv_bufsize bytes

err_html_text

Especifica o texto do HTML que será incluído nas mensagens de erro. Pode ser alguma mensagem sobre contato do administador, ou um link para a página da empresa.

err_html_text texto

deny_info

Essa opção pode ser usada para retornar uma página de erro para requisições que não passem pelas regras definidas em uma ACL. Você pode utilizar as páginas padrão de erro do Squid ou criar as suas próprias.

deny_info nome_pagina_erro acl

memory_pools

Se configurado, o Squid irá manter pools de memória alocada e livre para uso futuro.

memory_pools on|off

memory_pools_limit

Deve-se também determinar um valor para esse pool de memória em bytes.
Se não configurada, ou com valor igual a zero, o Squid irá guardar tanta memória quanto possível.

memory_pools_limit bytes

forwarded_for

Atualmente o padrão HTTP/1.1 não provê nenhuma forma de indicar o endereço de requisição de um cliente. Entretanto, como essa era uma feature requisitada, o Squid adiciona em suas requisições um cabeçalho do tipo "X-Forwarded-For". Se ativada essa opção o Squid irá mandar requisições com o IP de origem no cabeçalho. Caso contrário, o mesmo irá ter origem desconhecida.

forwarded_for on|off

log_icp_queries

Configurando-se essa opção como ativa, as requisições ICP passarão a ser logadas no access.log.


log_icp_queries on|off

icp_hit_stale

Se você deseja retornar um ICP_HIT para objetos estáticos cacheados, configure essa opção para `on'.

icp_hit_stale on|off

minimum_direct_hops

Se você utilizar ICMP, faça buscas diretas para sites que estejam a mais de um hop de distância. Esse parâmetro é útil para descobrir a latência da rede.

minimum_direct_hops número

minimum_direct_rtt

Se estiver utilizando ICMP, faça buscas diretas a sites que estejam a mais do que o número de milisegundos configurados aqui de distância. Padrão de 400.

minimum_direct_rtt tempo

cachemgr_passwd

Especifica a senha para operações de gerenciamento de cache.

cachemgr_passwd senha ação ação ...

Ações

5min events non_peers via_headers

60min filedescriptors objects vm_objects

asndb fqdncache pconn

authenticator histograms peer_select

cbdata http_headers redirector

client_list info refresh

comm_incoming io server_list

config ipcache shutdow

counters delay mem store_digest

digest_stats menu storedir

dns netdb utilization

store_avg_object_size (kbytes)

O tamanho médio de objetos é usado para estimar o número de objetos que seu cache pode manipular. Para fazer essa estimativa, basta calcular: Número de objetos = cache_swap/tamanho médio de objetos.

store_avg_object_size tamanho


store_objects_per_bucket

Número de objetos armazenados de uma única vez em uma tabela hash.

store_objects_per_bucket kbytes

client_db

Se você deseja desabilitar estatísticas por cliente, desabilite essa opção.

client_db on|off

netdb_low / netdb_high

Os limites mínimos e máximos da medição ICMP. Por padrão esses valores são 900 e 1000. Isso significa que quando o limite máximo é atingido, o banco de dados irá apagar registros até alcançar o limite mínimo.

netdb_low entradas

netdb_high entradas

netdb_ping_period

O tempo mínimo de medição de um site.

netdb_ping_period time-units

 

query_icmp

Se você deseja fazer com que as requisições ICP sejam também respondidas com informações ICMP pelos seus vizinhos, habilite essa opção. Lembre-se que é necessário que o Squid tenha sido especificamente compilado com suporte a icmp para que essa opção seja funcional.

query_icmp on|off

test_reachability

Quando habilitado, repostas ICP MISS serão interpretadas como ICP MISS NOFETCH se o host alvo não estiver na base de dados ICMP ou tiver um RTT zero.

test_reachability on|off

reload_into_ims

Habilitando essa opção, você fará com que uma requisição no-cache seja transformada em uma if-modified-since. Essa opção deve ser usada apenas em casos muitos específicos.

reload_into_ims on|off

always_direct

Pode utilizar elementos de uma ACL para especificar requisições que devem sempre ser encaminhadas para o servidor de origem. Isso normalmente é utilizado juntamente com a opção cache_peer.

always_direct allow|deny [!]nome ...

never_direct

É a regra oposta ao always_direct, funcionando da mesma maneira.

never_direct allow|deny [!]aclname ...

anonymize_headers

Substitui o antigo cabeçalho `http_anonymizer' por uma opção mais configurável. Agora é possível especificar quais cabeçalhos serão enviados ou removidos das requisições.

anonymize_headers allow|deny nome_cabeçalho ...

É possível utilizar essa opção permitindo que determinados tipos de cabeçalhos sejam vistos ou negando outros.

Para ter uma header igual ao `http_anonymizer', é preciso configurar da seguinte forma:

  • anonymize_headers allow Allow Authorization Cache-Control
  • anonymize_headers allow Content-Encoding Content-Length
  • anonymize_headers allow Content-Type Date Expires Host
  • anonymize_headers allow If-Modified-Since Last-Modified
  • anonymize_headers allow Location Pragma Accept
  • anonymize_headers allow Accept-Encoding Accept-Language
  • anonymize_headers allow Content-Language Mime-Version
  • anonymize_headers allow Retry-After Title Connection
  • anonymize_headers allow Proxy-Connection

fake_user_agent

Essa opção faz com que o Squid envie, como versão do browser, o parâmetro que for configurado.

fake_user_agent String

icon_directory

Especifica o diretório em que os ícones estão armazenados.

icon_directory path_diretório/nome_diretório

error_directory

Caso deseje customizar as mensagens de erro do Squid, basta indicar o diretório onde os htmls serão encontrados e cria-los de acordo com a padronização.

error_directory path_diretório/nome_diretório

minimum_retry_timeout

Especifica o tamanho mínimo de timeout, quando esse tempo é reduzido para compensar a disponibilidade de múltiplos endereços IP.Isso significa que quando uma conexão é iniciada com um host que tem múltiplos endereços IPs, o tempo padrão de timeout é então reduzido
dividindo-se esse valor pelo número de endereços.

minimum_retry_timeout segundos

maximum_single_addr_tries

Configura o número máximo de tentativas de conexões em um servidor que tenha somente um endereço.

maximum_single_addr_triesnúmero

snmp_port

O Squi tem a capacidade de fornecer informações sobre status e estatísticas via SNMP. Aqui configuramos a porta onde esse serviço irá escutar. Utilize 0 para desabilitar essa opção. Padrão: 3401.

snmp_port porta

snmp_access

Permite ou nega acesso à porta SNMP, baseando-se em uma acl.

snmp_access allow|deny [!]aclname ...

Adonel  Bezerra

Pós-graduado em Teoria em Educação a Distância e Docência do Ensino Superior;

MBA Executivo em Coaching;

Coordenador de cursos de pós-graduação.

Experiência em Gestão de Negócios, envolvendo-se com as áreas administrativa, financeira, comercial, produção e logística;

Experiência de mais de 20 anos como professor conferencista na área de segurança da informação;

Sólida experiência na gestão de negócios e tecnologia da informação;

Sólida experiência no meio acadêmico; 

Consultor de Segurança da informação com mais de vinte anos de experiência;

Treinamentos e palestras ministrados para milhares de profissionais em todo o Brasil;

Livro publicado pela Editora Ciência Moderna e diversos artigos publicados.

 

ALGUMAS PARTICIPAÇÕES COMO CONFERENCISTA OU PALESTRANTE

Centro Universitário do Maranhão – UniCeuma/2009 – Apresentação “O MERCADO DE CONSULTORIA EM SEGURANÇA DE INFORMAÇÃO. 

Universidade de Fortaleza|UNIFOR – Apresentação “TÉCNICAS HACKERS PARA TESTES DE INVASÃO”.

Faculdades Integradas do Ceará – FIC/2010 – Apresentação “ SEGURANÇA DA INFORMAÇÃO”.

Escola de Gestão Pública do Estado do Ceará – /2012 – Apresentação “ SEGURANÇA DA INFORMAÇÃO COM SOFTWARE LIVRE”.

Faculdade La Salle – 2013 – Apresentação “ESPIONAGEM INTERNACIONAL”.

Estácio|FIC/2013 – Apresentação “ ANÁLISE DE VULNERABILIDADES COMO FATOR PRIMORDIAL NAS ORGANIZAÇÕES”.

Estácio|FIC/2015 – Apresentação “PROVA DE CONCEITO”.

Devry Brasil|FANOR Salvador/BA, Fortaleza/CE, Belém/PA, Caruaru/PE, Recife/PE, Teresina/PI    - Apresentação “ VULNERABILIDADES DE SISTEMAS COMPUTACIONAIS”.

 

PROJETO PESSOAL – 1998 – Até o momento

- Fundador e Mantenedor de um dos maiores portais de Segurança de sistema do Brasil, o portal Clube do Hacker; www.clubedohacker.com.br

Fundador e mantenedor da Academia Linux www.academialinux.com.br

Fundador da BUCOIN – www.bucoin.com.br