RED:Servidores Proxy:Introdução
Índice
- 1 Descrição Geral
- 2 SSH, SNMP, ntpdate
- 3 Configuração Geral do Squid
- 3.1 Lista de Arquivos de Configuração
- 3.2 Arquivo Principal de Configuração (squid.geral.conf)
- 3.2.1 Autenticação LDAP
- 3.2.2 snmp
- 3.2.3 ACL's
- 3.2.4 Outras configurações importantes
- 3.2.4.1 Tamanho de Cache em Memória
- 3.2.4.2 Tamanho Máximo de Arquivo em Memória
- 3.2.4.3 Objetos Populares Pequenos na Memória
- 3.2.4.4 Objetos Populares Grandes em Cache
- 3.2.4.5 Tamanho Máximo de Arquivo em Cache
- 3.2.4.6 Substituições de Arquivo em Cache
- 3.2.4.7 Cancelamento de Cache por Usuário
- 3.2.4.8 Nome visível
- 3.2.4.9 Diretório de Mensagens de Erros
- 4 Configuração Individual das Instâncias
- 5 SquidGuard
- 6 DansGuardian
Descrição Geral
Esta página referencia as configurações e detalhes usados nos proxys de acesso web da UNIOESTE.
Identificação dos Servidores
Nome | Local | Referência |
---|---|---|
netsr-05 | Reitoria | 200.201.88.64 |
netsr-07 | Reitoria | 200.201.88.65 |
cacsr-proxybkp | Reitoria | 200.201.8.30 |
Disposição de Endereços de Redes
obs: aplicável somente ao netsr-07, que possui múltiplas instâncias do squid.
Interface | Endereço de Rede | Porta | Serviço / Finalidade | |
---|---|---|---|---|
1 | eth0 | 200.201.88.65 | 22 | ssh / conexão remota |
2 | eth1 | 200.201.88.90 | 8080 | squid / proxy-cache |
3 | eth1:0 | 200.201.88.91 | 8080 | squid / proxy-cache |
4 | eth1:1 | 200.201.88.92 | 8080 | squid / proxy-cache |
5 | eth1:2 | 200.201.88.93 | 8080 | squid / proxy-cache |
6 | eth1:3 | 200.201.88.94 | 8080 | squid / proxy-cache |
7 | eth1:4 | 200.201.88.95 | 8080 | squid / proxy-cache |
8 | eth1:5 | 200.201.88.96 | 8080 | squid / proxy-cache |
8 | eth1:6 | 200.201.88.97 | 8080 | squid / proxy-cache (externo) |
Rotas
As seguintes rotas devem estar configuradas:
Destination | Gateway | Genmask | Flags | Metric | Ref | Use | Iface |
---|---|---|---|---|---|---|---|
default | * | 255.255.255.255 | UH | 0 | 0 | 0 | eth0 |
localnet | * | 255.255.255.0 | U | 0 | 0 | 0 | eth0 |
localnet | * | 255.255.255.0 | U | 0 | 0 | 0 | eth1 |
default | 200.201.88.1 | 0.0.0.0 | UG | 100 | 0 | 0 | eth0 |
SSH, SNMP, ntpdate
Veja item Configurações Comuns ao Servidores
Configuração Geral do Squid
Este tutorial será focado na configuração do servidor principal de proxy (netsr-07), sendo que os demais proxys são de testes e backup, valendo-se basicamente das mesmas regras de ACL.
As regras de ACL encontram-se no arquivo /etc/squid3/config.geral.conf, de onde regras referenciam arquivos variáveis.
Obs: arquivos que não estão presentes na lista abaixo geralmente são fixos e pouco variam ou não variam.
Lista de Arquivos de Configuração
Caminho | Finalidade | |
---|---|---|
1 | /etc/squid3/direto | domínios que NÃO fazem cache |
2 | /etc/squid3/hosts_proib | máquinas da rede interna com acesso NEGADO (infectadas) |
3 | /etc/squid3/IpOri_Lib | máquinas da rede interna com acesso LIBERADO (DRI) |
4 | /etc/squid3/sites_permit | sites acessíveis quando máquina infectada |
5 | /etc/squid3/squid.geral.conf | arquivo principal de configuração: parâmetros e regras |
6 | /etc/squid3/squid.externo.conf | arquivo principal de configuração: proxy de acesso externo |
Arquivo Principal de Configuração (squid.geral.conf)
Autenticação LDAP
Seguem configurações para autenticação via LDAP:
auth_param basic program /usr/lib/squid3/squid_ldap_auth -P -b dc=unioeste,dc=br -f "uid=%s" ldaps://netsr-01.unioeste.br auth_param basic children 30 auth_param basic realm UNIOESTE - ATENCAO: Todos os acessos sao registrados! auth_param basic credentialsttl 60 minutes auth_param basic casesensitive on
acl auth_users proxy_auth REQUIRED
snmp
acl snmppublic snmp_community unioestenet
E abaixo das ACL's:
snmp_access allow snmppublic localhost acl snmpclient src 200.201.88.10/255.255.255.255 acl snmpclient src 200.201.88.65/255.255.255.255 snmp_access allow snmppublic snmpclient snmp_access deny all
ACL's
por redes
acl localnet src 200.201.6.0/255.255.255.0 acl localnet src 200.201.60.0/255.255.255.0 acl localnet src 200.201.61.0/255.255.255.0 acl localnet src 200.201.8.0/255.255.255.0 acl localnet src 200.201.80.0/255.255.255.0 acl localnet src 200.201.13.0/255.255.255.0 acl localnet src 200.201.81.0/255.255.255.0 acl localnet src 200.201.28.0/255.255.255.0 acl localnet src 200.201.82.0/255.255.255.0 acl localnet src 200.201.83.0/255.255.255.0 acl localnet src 200.201.84.0/255.255.255.0 acl localnet src 200.201.85.0/255.255.255.0 acl localnet src 200.201.86.0/255.255.255.0 acl localnet src 200.201.87.0/255.255.255.0 acl localnet src 200.201.88.0/255.255.255.0 acl localnet src 200.201.89.0/255.255.255.0 acl localnet src 10.81.0.0/255.255.0.0 acl localnet src 10.82.0.0/255.255.0.0 acl localnet src 10.83.0.0/255.255.0.0 acl localnet src 10.84.0.0/255.255.0.0 acl localnet src 10.85.0.0/255.255.0.0 acl localnet src 10.86.0.0/255.255.0.0 acl localnet src 10.87.0.0/255.255.0.0 acl localnet src 10.88.0.0/255.255.0.0 acl localnet src 10.89.0.0/255.255.0.0 acl localnet src 200.134.24.17/255.255.255.255 acl localnet src 200.134.24.18/255.255.255.255 acl localnet src 200.134.24.24/255.255.255.255 acl icplocal src 200.201.88.0/255.255.255.0
por arquivo / infectados
acl Pal_Proi url_regex -i "/var/lib/squidguard/db/unioeste/expressions" acl Dom_Lib dstdom_regex "/etc/squid3/Dom_Lib" acl infected src "/etc/squid3/hosts_proib" acl infected1 url_regex -i "/etc/squid3/sites_permit" deny_info ERR_ACCESS_DENIED_INFECTED infected deny_info ERR_ACCESS_DENIED_INFECTED infected1 acl NOCACHE url_regex "/etc/squid3/direto" \?
youtube
acl youtube dstdomain .youtube.com cache allow youtube
Item abaixo deve ser adicionado após os refresh_patterns que vem configurados por padrão.
refresh_pattern -i \.flv$ 10080 90% 999999 ignore-no-cache override-expire ignore-private
Ativação
http_access deny infected !infected1 no_cache deny NOCACHE always_direct allow NOCACHE http_access allow manager localhost http_access deny manager http_access allow Dom_Lib http_access deny Pal_Proi http_access allow icplocal ############# AUTENTICAÇÃO ############### #http_access allow auth_users !maxuserip http_access allow purge localhost http_access deny purge http_access allow localhost http_access deny !Safe_ports http_access deny CONNECT !SSL_ports http_access allow localnet http_access allow localhost http_access deny all
Outras configurações importantes
Aqui constam outras configurações pertencentes ao arquivo /etc/squid3/squid.geral.conf que podem ter impacto sobre seu funcionamento e performance.
Obs: eles devem ser, preferenciamente, declarados após as ACL's e as ativações destas, OU no ponto onde consta na documentação do arquivo padrão.
Tamanho de Cache em Memória
cache_mem 2048 MB
Tamanho Máximo de Arquivo em Memória
maximum_object_size_in_memory 100 KB
Objetos Populares Pequenos na Memória
memory_replacement_policy heap GDSF
Objetos Populares Grandes em Cache
cache_replacement_policy heap LFUDA
Tamanho Máximo de Arquivo em Cache
maximum_object_size 102400 KB
Substituições de Arquivo em Cache
Permite definir margens de substituições para quando o cache estiver sobrecarregado ou cheio.
cache_swap_low 85 cache_swap_high 95
Cancelamento de Cache por Usuário
Permite cancelar o cacheamento caso o usuário interrompa a conexão.
Obs: No nosso caso, com parâmetro em -1, NÃO será abortada a tentativa de cache, mesmo que o usuário cancele.
quick_abort_min -1 KB
Nome visível
Este parâmetro define o nome comum às instâncias do squid. Ele será usado, por exemplo, nas mensagens de negação de serviço ou bloqueio.
visible_hostname proxy.unioeste.br
Diretório de Mensagens de Erros
error_directory /usr/share/squid3/errors/Portuguese
Configuração Individual das Instâncias
A configuração das instâncias encontram-se no diretório /etc/squid3/configs/ e estão nomeadas com "squid." + final do ip onde atendem + ".conf". Por exemplo, a instância que atende em 200.201.88.90 encontra-se em /etc/squid3/configs/squid.90.conf.
Identificação
http_port é a configuração do ip onde o serviço atende.
http_port 200.201.88.90:8080
unique_hostname é o parâmetro para dar um nome único ao serviço.
unique_hostname proxy90.unioeste.br
snmp_port é usada para que os servidores de monitoramento detectem inatividade ou falha no serviço. icp_port é a porta onde os mecanismos de icp vão atender, permitindo a "conversação" entre as instâncias e, consequentemente, a troca de informações e arquivos cacheados, somente buscando-os se não forem encontrados localmente.
snmp_port 3400 icp_port 3130
pid_filename nomeia um arquivo para que o kernel identifique a unicidade da instância, permitindo que exista mais de uma rodando no mesmo servidor.
pid_filename /var/run/squid3.90.pid
Log
É importante que cada instância tenha seus próprios arquivos de log, para identificar mais facilmente um possível motivo de parada e, principalmente, porque o squid não trata bem arquivos de log comunitários, podendo parar de atender por isso. Tenha clareza dessa limitação caso deseje suprimir esta configuração.
Obs: a configuração de rotatividade de logs está no arquivo /etc/squid3/squid.geral.conf.
access_log /var/log/squid3/access.90.log cache_log /var/log/squid3/cache.90.log cache_store_log /var/log/squid3/store.90.log
Cache
Neste local configuramos os caches disponíveis para CADA instância. Está configurado 3 (três) caches por instância pois, segundo alguns tutoriais, isso melhora o desempenho e garante mais estabilidade em caso de corrupção de um dos caches, porém tivemos comprovação disso pois os caches encontram-se no mesmo disco físico.
cache_dir
A seguir descreveremos cada um dos itens que compõe a linha de configuração dos caches.
- cache_dir é o próprio comando.
- diskd é o tipo de arquivo criado nos caches. É o tipo que apresenta melhor desempenho.
- /var/spool/squid3/... define o caminho onde será mantido o cache.
- define o tamanho do cache. Deve-se levar em consideração o tamanho da partição onde está montado o parâmetro anterior, pois sua capacidade NÃO pode ser extrapolada com a soma dos caches de TODAS as instâncias.
- número de pastas. Define a granulação dos arquivos no cache.
- número de subdiretórios. Estende a granulação dos arquivos no cache.
- usado somente com diskd. Define quantos arquivos podem ser abertos antes do squid parar de abrir novos.
- usado somente com diskd. Define quantos arquivos podem ser abertos antes do squid começar a bloquear novos.
Exemplo:
cache_dir diskd /var/spool/squid3/squid.90.1 2300 128 512 Q1=128 Q2=256 cache_dir diskd /var/spool/squid3/squid.90.2 2300 128 512 Q1=128 Q2=256 cache_dir diskd /var/spool/squid3/squid.90.3 2300 128 512 Q1=128 Q2=256
cache_peer
Utilizando a opção sibling, permite a comunicação entre as instâncias, evitando a redundância dos arquivos cacheados; ou seja, se uma das instâncias já tem o arquivo, a outra instância contata o cache onde já existe e o usa, não saindo para a rede.
Obs: devem constar nesta configuração TODAS as OUTRAS instâncias, suprimindo as configurações da própria instância.
- cache_peer é o próprio comando.
- ip onde atende a outra instância.
- sibling opção que permite o uso de cache de outras instâncias.
- porta onde o serviço de proxy atende.
- porta onde o icp atende. Vide ..
- proxy-only os objetos buscados em outros caches NÃO são armazenados localmente, evitando a redundância.
Exemplo:
cache_peer 200.201.88.91 sibling 8080 3131 proxy-only cache_peer 200.201.88.92 sibling 8080 3132 proxy-only cache_peer 200.201.88.93 sibling 8080 3133 proxy-only cache_peer 200.201.88.94 sibling 8080 3134 proxy-only cache_peer 200.201.88.95 sibling 8080 3135 proxy-only
include
Este parâmetro permite que o arquivo onde encontram-se as configurações comuns a TODAS as instâncias seja carregado como extensão da configuração individual, não precisando redeclará-las novamente.
include /etc/squid3/squid.geral.conf
SquidGuard
Para instalar o SquidGuard digite:
sudo apt-get install squidguard
Para configurá-lo, baixe uma das diversas bibliotecas disponíveis, como a shalla (http://www.shallalist.de/). Neste exemplo, baixe o arquivo e descompacte-o em /var/lib/squidguard/.
Para acrescentar itens de bloqueio personalizados, crie uma pasta na estrutura do squidguard e copie de uma das outras pastas os arquivos:
cd /var/lib/squidguard/db mkdir unioeste cp ../warez/* unioeste/ chown -R proxy:proxy unioeste
Para não ter informações duplicadas, lembre-se de ESVAZIAR os arquivos:
- /var/lib/squidguard/db/unioeste/domains
- /var/lib/squidguard/db/unioeste/expressions
- /var/lib/squidguard/db/unioeste/urls
Em seguida, pode usar o arquivo /var/lib/squidguard/db/unioeste/domains para acrescentar todas as suas excessões personalizadas.
Para que suas alterações entrem em vigor, reinicie o squid.
/etc/init.d/squid3 stop
(aguarde o encerramento das conexões)
/etc/init.d/squid3 start
DansGuardian
Não implementado.