Proxy Squid - 5

Tags da seção delaypool

Conceitualmente, as delay pools são limitantes de consumo de banda. Basicamente o que um delay pool faz é criar uma lentidão artificial para os clientes, gerando uma grande economia de banda. Com uma combinação bem feita de delay pools e acls, é possível fazer um grande
controle e limitação de banda.

delay_pools

Número total de delay pools que irão ser utilizadas. Isso significa que se você tiver uma delay pool de classe 2 e 4 de classe 3, esse número deverá ser 5.

delay_pools número

delay_class

Define a classe de cada delay pool. Deve haver exatamente uma classe
de delay para cada delay pool.

delay_class número(delay-pool number), número (delay class)

delay_access

Determina em qual delay pool uma requisição será encaixada. A primeira a combinar será utilizada, por isso verifique com cuidado suas acls.

delay_access allow|deny nomeacl

delay_parameters

Define os parâmetros para uma delay pool. Cada delay pool tem um número de alocação de tráfego associado.

  • delay_parameters pool agregado (delay_class 1)
  • delay_parameters pool agregado individual (delay_class 2)
  • delay_parameters pool agregado network individual (delay_class 3)
  • delay_initial_bucket_level

Determina qual a porcentagem colocada em cada alocação quando o Squid é iniciado.

delay_initial_bucket_levelbytes

 

incoming_icp_average / incoming_http_average / incoming_dns_average / min_icp_poll_cnt / min_dns_poll_cnt / min_http_poll_cnt

São descritos os algoritmos usados para as tags acima,

Tag Name número

Padrão:

incoming_icp_average 6

incoming_http_average


4 incoming_dns_average

4 min_icp_poll_cnt 8

min_dns_poll_cnt 8

min_http_poll_cnt 8

max_open_disk_fds

Especifica o número máximo de file descriptors que o Squid pode usar para abrir arquivos. Essa opção é usada para evitar gargalo de I/O e acesso a disco limitando o número de arquivos.

max_open_disk_fds número

offline_mode

Com essa opção ativada, o Squid nunca irá tentar validar objetos cacheados.

offline_mode on|off

uri_whitespace

A ação que será tomada quando uma URI contiver espaços em branco é decidida nessa tag.  Padrão é strip.

uri_whitespace opções

Opções

Descrição

strip

Os espaços em branco são removidas da URL, de acordo com o recomendado na RFC2616

deny

A requisição é negada e o cliente recebe uma mensagem de "Requisição Inválida"

allow

A requisição é aceita e os espaços em branco não são alterados.

encode

A requisição é aceita e os espaços são codificados de acordo com a RFC1738

chop

A requisição é cortada e mandada apenas até o espaço em branco

broken_posts

Uma lista de elementos de uma ACL que, se encontrados, irão fazer com que o Squid coloque um par extra de CRFL (Carriage return e Line Feed) em um PUT ou POST. Isso somente é utilizado junto a alguns servidores HTTP problemáticos que exigem essa modificação. Se não souber de nenhum caso específico, ignore essa opção.

broken_posts allow|deny nomeacl

nonhierarchical_direct

Por padrão, o Squid irá enviar qualquer requisição não hierárquica diretamente aos servidores de origem. Se você desabilitar isso, o Squid irá enviar isso para o cache "pai". Na maior parte dos casos, não é uma boa idéia desabilitar essa opção, visto que ela irá gerar uma latência desnecessária, sem necessariamente algum ganho.

nonhierarchical_direct on|off

prefer_direct

O comportamento normal do Squid é tentar utilizar seus "pais" na maior parte das requisições. Uma possível utilidade de habilitar uma busca direta ao invés disso, seria combinando as opções non hierarchical_direct off and prefer_direct on, fazendo basicamente dos "pais" uma rota backup em caso de erro em buscas diretas.

prefer_direct on|off

strip_query_terms

Para habilitar o log de todos parâmetros das requisições, é necessário habilitar essa opção. Caso contrário o Squid apenas dá forward das mesmas sem gerar um log completo.

strip_query_terms on|off

coredump_dir

Em caso de falhas, os sistemas Unix geram sempre um arquivo de core dos programas. O Squid normalmente guarda os arquivos de core gerados por ele no diretório de cache. Com essa opção é possível configurar onde será armazenado esse arquivo.

coredump_dir diretório

redirector_bypass

Quando habilitado, uma requisição não irá através dos redirecionadores se todos eles estiverem ocupados. Se estiver com essa opção estiver desativada e a fila começar a crescer muito, o Squid irá abortar e gerar um erro solicitando que a quantidade de redirecionadores seja
aumentada.

redirector_bypass on|off

ignore_unknown_nameservers

O Squid sempre verifica se uma resposta DNS está sendo recebida de um mesmo IP de origem para qual está sendo enviada a requisição. Caso não sejam os mesmos, o Squid irá ignorar a resposta e mandar uma mensagem no log. Recomendo que não desabilite essa opção, visto que é uma proteção a mais contra ataques baseados em DNS.

ignore_unknown_nameserverson|off

digest_generation

Aqui é possível controlar se o servidor irá gerar um resumo e o tipo de seu conteúdo. Para habilitar essa e todas as outras opções referentes a resumo, é necessário que o Squid tenha sido compilado com opção --enable-cache-digests.

digest_generation on|off

digest_bits_per_entry

Número de bits do resumo de cache do servidor, o qual será associado com a combinação de um dado tipo de método HTTP e URL.

digest_bits_per_entry número

digest_rebuild_period

Número de segundos para a reconstrução do resumo do cache. O padrão é de 1 hora.

digest_rebuild_period tempo

digest_rewrite_period

Tempo de espera entre escritas de resumo no disco. Como na opção anterior, o resumo é escrito a cada 1 hora.

digest_rewrite_period tempo

digest_swapout_chunk_size

Número de bytes do resumo a escrever de cada vez. Por padrão o Squid utiliza 4KB, que é o tamanho padrão de uma página de swap.

digest_swapout_chunk_size bytes

digesvt_rebuild_chunk_percentage

Configura-se aqui a porcentagem do resumo de cache que será verificada de cada vez. Por padrão está configurado para 10% do total.

digest_rebuild_chunk_percentage porcentagem

chroot

Devido a alguns procedimentos que necessitam de poderes de root, o Squid roda parcialmente como tal. Se você deseja rodar o Squid como chroot, é preciso habilitar essa opção. Isso fará com que o Squid rode os procedimentos necessários como root e depois abandone completamente esse privilégio. Lembre-se que para usar um chroot é necessário um chroot_dir.

chroot enable|disable

client_persistent_connections / server_persistent_connections

Suporte a conexões persistentes para clientes e servidores. Por padrão, o Squid irá usar conexões persistentes para comunicar-se com clientes e servidores.

client_persistent_connectionson|off

server_persistent_connectionson|off

pipeline_prefetch

Para melhorar o desempenho de requisições e fila, o Squid irá trabalhar com 2 requisições paralelamente.

pipeline_prefetch on|off

extension_methods

O Squid somente trabalha com requisições HTTP padrão. Apesar de métodos diferentes serem negados, é possível fazer com que eles sejam aceitos adicionando-os a uma lista. É possível incluir até 20 métodos diferentes.

extension_methods request método

high_response_time_warning

Se a média de falhas por minuto excede esse valor, o Squid manda um aviso de nível 0 no debug (normalmente gerando uma saída no syslog) de alerta.

high_response_time_warningmsec

high_page_fault_warning

Se a média de falhas por minuto excede esse valor, o Squid manda um aviso de nível 0 no debug (normalmente gerando uma saída no syslog) de alerta.

high_page_fault_warning time-units

high_memory_warning

Se o uso de memória excede o valor determinado, o Squid manda um aviso de nível 0 no debug (normalmente gerando uma saída no syslog) de alerta.

high_memory_warning número

store_dir_select_algorithm

O Squid pode trabalhar com 2 tipos de algoritmos para escolher entre vários diretórios de cache: least-load e round-robin. O padrão é leat_load.

store_dir_select_algorithm tipo_algoritmo

ie_refresh

O Microsoft Internet Explorer até a versão 5.5SP1 tem problemas ao trabalhar com proxy transparente, impossibilitando forçar um refresh. Ativando essa opção é possível corrigir parcialmente o problema, fazendo com que todos os pedidos de refresh vindo de um IE seja automaticamente interpretado como forçado. A melhor opção, quando possível, é atualizar os clientes.

ie_refresh on|off

 


Configurando um Servidor Proxy

 

O Squid na sua forma default, funciona sozinho após a instalação no Debian.

Editando o arquivo squid.conf e habilitando a porta 3128, porta padrão para acesso ao proxy. O squid trabalhará como servidor de cache apenas para conexões a partir da interface de rede local.

            No arquivo de configuração, vamos especificar o nome que será visualizado nas páginas de erro do Squid:

visible_hostname squid

            Neste caso, o nome squid foi especificado. Mas poderia ser especificado da seguinte maneira:

visible_hostname www.dominio.com.br

            O Squid, por padrão, se apresenta fechado para conexões de rede.

            Vamos colocar o squid para funcionar:

Localize esta linha: http_access deny all

Substitua a linha acima por esta: http_access allow all

            Com esta configuração, fica permitido que todos teram acesso ao squid independente da rede.

 


Estrutura de cache

 
               Habilitando uma estrutura de cache com 1024MB, 128 diretórios e 256 subdiretórios:

 

cache_dir ufs /var/spool/squid 1024 128 256

Nesta opção são configurados os números de diretórios, subdiretórios e tamanho do cache. Detalhes:

cache_dir - Nome da tag;

  • ufs - É a forma de armazenamento de cache. Existe também a opção aufs, mas que só está disponível para outras plataformas. Para mais informações, leia o squid.conf;
  • /var/spool/squid - Diretório onde o cache do Squid ficará armazenado;
  • 1024 - Espaço em disco que o cache do Squid poderá ocupar, contado em MB;
  • 128 - Quantidade de diretórios que o cache do Squid possuirá;
  • 256 - Quantidade de subdiretórios que o cache do Squid possuirá;

 

Especificando para não fazer cache de páginas seguras:

no_cache deny SSL_ports

 


Estrutura de logs

 

A norma de segurança recomenda que sejam gerados registros de atividades dos usuários e que os mesmos sejam mantidos por tempo definido dentro da corporação, possibilitando investigações futuras e também a monitoração do controle de acesso. Esses logs devem manter:

- Identificação dos usuários: Squid – por padrão, registra o IP, mas com autenticação teremos o login do usuário.

- Datas e horários de entrada do Squid: por padrão resgistrado.

- Identidade do terminal e se possível sua localização: Squid – por padrão registrado.

- Registro das tentativas de acesso aos aceitos e rejeitados: Squid – por padrão registrado.

- Registro das tentativas de acesso a outros recursos e dados aceitos e rejeitados: Squid – por padrão registrado.

 

            Apesar de ser padrão a estrutura de arquivos de logs sugerida acima, vamos definir no squid.conf sua estrutura de logs:

 

Arquivamento de informações, como: data e hora em que o cachê foi inicializado e o que foi armazenado:

cache_log /var/log/squid/cache.log

 

Arquivamento de registros de conexões http de clientes ativos no Proxy:

cache_access_log /var/log/squid/access.log

 

Registrando os objetos que foram armazenados (páginas, figuras e outros):

cache_store_log /var/log/squid/store.log

 


Filtro de conteúdo com ACLs

 

O filtro de conteúdo possibilita a filtragem do conteúdo web dos usuários. Podemos usar as seguintes ACLs para realizar essa configuração: src, time, urlpath_regex, url_regex, dstdomain, proxy_auth, arp, maxconn, proto e port.

 

Access Control Lists

 

            São listas que fazem o agrupamento dos objetos que serão negados ou liberados de acordo com as regras determinadas pelo administrador.

Sintaxe: acl nome_da_acl tipo tipo_de_argumento

 

Exemplos:

 

Acesso no horário do almoço:

acl almoço time 12:00-14:00

 

ACL para acesso exclusivo pela rede:

 

acl rede0 src 192.168.0.0/255.255.255.0

ou

acl suporte_net src 192.168.0.1-192.168.0.12/24

 

           

Atualmente as redes estão cheias de acessos não autorizados, indevidos e desconhecidos pelo administrador, se este não possuir nenhum filtro de acesso à internet.

Agrupar tudo que os usuários acessam é humanamente impossível, mas há como ter um controle eficaz.

Sintaxe:

à allow

http_access|            nome_da_acl

à deny

Exemplo:

Acl micro_01 src 192.168.0.1

Acl micro_02 src 192.168.0.2

Acl micro_03 src 192.168.0.3

Acl micro_04 src 192.168.0.4

Acl manha time 06:00-12:00

Acl almoco time 12:00-13:30

Acl tarde time 14:00-17:00

 

http_access allow micro_01 manha

http_access allow micro_02 manha

http_access allow micro_03 almoco

http_access allow micro_04 tarde

 

Existem situações que é desejável bloquear uma determinada palavra que faça de uma outra palavra, exemplo: deputados. Esta palavra possui uma string ao meio, que geralmente não é permitida.

Em uma situação como a apresentada na palavra deputados, a primeira opção é criar uma ACL que controle esses tipos de palavras. Observe que a palavra deputados ficará liberada. Ao colocar somente uma lista negra teremos problemas, porque fatalmente esse caso pode ocorrer com mais palavras. Fica impraticável trabalhar somente com uma blacklist sem ter uma whitelist.

Criando as ACLs:

Acl blacklist url_regex –i “/etc/squid/blacklist”

Acl whitelist url_regex –i “/etc/squid/whitelist”

Atenção: a url_regex trata string dentro de uma url completa. Se dentro do arquivo /etc/squid/blacklist tiver a palavra girl, toda url que existir com a palavra girl será bloqueada (www.girl.com.br, www.beachgirl.com, www.planetgirls.com.br). O parâmetro –i informa que qualquer palavra dentro do arquivo sofrerá tratamento de case sensitive.

            A ordem que essas listas são controladas por muitas vezes causam problemas. Partindo do princípio que temos uma ACL chamada all que trata todos os ips da rede:

http_access allow whitelist

http_access deny blacklist

 


Autenticação de usuários no Squid

É um recurso bem interessante para controle pessoal de usuários. Isso permite que você crie ACLs individuais e gere LOGs de qualidade bem superior.

Existem diversos métodos de autenticação, sendo interessante averiguar exatamente o que você irá precisar. Na maioria dos casos, o ncsa_auth resolve o problema.

ncsa_auth

O ncsa_auth é a alternativa mais simples. Ele está disponível junto com o squid e pode ser implementado rapidamente. É a solução ideal para pequenas e médias instalações e redes com arquitetura de grupo de trabalho.

Deve-se adicionar esta ACL antes de outra qualquer:

http_access allow password

 

ACL para ativar recurso de autenticação:

Acl password proxy_auth REQUIRED

Editando o squid.conf

Procure pela seção que fala sobre autenticação (TAG: authenticate_program) e insira as linhas:

auth_param basic program /usr/lib/squid/ncsa_auth /etc/squid/passwd  auth_param basic children 5
auth_param basic realm digite_sua_autenticação
auth_param basic credentialsttl 2 hours
auth_param basic casesensitive off

Criando um arquivo de senhas

O arquivo /etc/squid/passwd não existe por padrão. Temos de cria-lo:

 # touch /etc/squid/passwd 

Tempo de expiração da senha deve ser definido:

Autenticate_ttl 1 hour

 

Adicionar usuários

Para adicionar novos usuários basta fazer:

  # httpasswd –c /etc/squid/passwd usuario 

Atenção:

O utilitário faz parte do pacte apache2-utils, caso não esteja instalado, instale-o.

É preciso confirmar a senha duas vezes.

Dependendo da sua distribuição, o ncsa_auth pode estar em vários lugares, como /usr/bin, /usr/sbin e assim por diante! Verifique onde está a sua e coloque as linhas acima de acordo!

Quanto ao authenticate_children 5, é o suficiente se sua rede não é muito grande. Mude o valor de acordo com suas necessidades.

Editando a ACL de nossa rede interna:

     acl rede_interna src 192.168.0.0/24
    acl rede_interna proxy_auth REQUIRED

ACL estratégica

Acl final. Negando qualquer possibilidade que não se enquadre nas ACLs anteriores:

http_access deny all

 


Controle de banda

Criando as ACLs

 

acl extensoes url_regex -i .*

 

Esta acl que criamos está pegando tudo que é relacionado a ponto, ou seja, inclusive extensões html, jpeg, jpg, gif, php, png, htm, etc, que são usadas em páginas de internet.

Se você quer bloquear tudo menos estas extensões, faça assim:

acl extensoes url_regex -i .* !.html !.htm !.php !.jpeg !.jpg !.png !.gif

 

Foi bloqueado tudo, exceto as seguintes extensões. Mas se o seu interesse é bloquear arquivos como mp3, avi, faça o seguinte:

acl extensoes url_regex -i .exe .mp3 .vqf .tar.gz .gz .rpm .zip .rar .avi .mpeg .mpe .mpg .qt .ram .rm .iso .raw .wav .mov

 

Você também pode criá-las em um arquivo:

 

acl extensoes url_regex -i "caminho do arquivo"

 

Coloque as extensões dentro deste arquivo (mas apenas uma extensão por linha).

 

acl interno url_regex -i 192.168.0.1

 

delay_pools

Esta opção especifica o número de delay pools que você vai possuir, por exemplo, se você possui 2 delay pools, este número deve ser igual a 2, se você tem 3 delay pools, este número deve ser igual a 3 e assim por diante.

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