Baixe o app para aproveitar ainda mais
Prévia do material em texto
Servidor Proxy Administração de Sistemas Abertos Professor: Anderson Costa anderson@ifpb.edu.br 2 Proxies: Visão Geral Proxy significa dar poder a alguém para agir em seu nome: Procuração Proxy é um conceito genérico em redes de computadores – É empregado em diversos campos Proxy atua como um intermediário entre os clientes do serviço e os provedores do serviço O intermediário pode prover serviços aos clientes 3 Web Proxy Clientes: Browsers Provedores: Servidores Web Funcionamento Requisição de Objeto e Caching Nova requisição do Objeto, Cache responde 4 Web Proxy: Serviços oferecidos Caching – Armazenamento dinâmico de objetos – Racionalização do uso do link para internet – Menor tempo de resposta para os usuários Controle de Acesso – Permite implementar políticas administrativas de acesso à internet – Pode ser baseado em: Horário, Tipo do conteúdo (filtros) Logs – Caches mantêm registros de acessos aos objetos – Podem ser levantadas estatísticas de uso 5 Squid O SQUID é um servidor proxy Realiza Cache de objetos FTP e páginas da web – Isto inclui Updates do Windows e pacotes do APT – Mantém os objetos mais utilizados na memória RAM Realiza Cache de procuras DNS – Acelera a procura de máquinas Grande quantidade de documentação e estudos de caso sobre o mesmo – Inclusive em português 6 Instalando o Squid Instalação – apt-get install squid3 Para controlar o serviço – /etc/init.d/squid3 start – /etc/init.d/squid3 restart – /etc/init.d/squid3 stop – /etc/init.d/squid3 force-reload Configuração – Único arquivo de configuração – /etc/squid/squid.conf – Arquivo original é extenso Diversas configurações muito bem documentadas 7 Configuração Inicial Uma configuração funcional – Opção http_port indica a porta em que o proxy atenderá requisições – Opção visible_hostname indica o nome da máquina – Terceira linha define uma ACL (Access Control List) indicando todos os endereços IPs possíveis Nome: all; Conteúdo: src 0.0.0.0/0.0.0.0 – Opção http_access controla a ação sobre a ACL especificada Permitir (allow) ou Negar (deny) http_port 3128 visible_hostname ifpbcg acl all src 0.0.0.0/0.0.0.0 http_access allow all 8 Controle de Acesso (1) Permissões de IP – Requisições locais e da rede local são encaminhadas Outros IPs são negados – Atenção para a ordem das regras de permissão/negação Caso uma requisição case com a regra a regra será disparada Regras mais gerais devem vir por último http_port 3128 visible_hostname ifpbcg acl all src 0.0.0.0/0.0.0.0 acl localhost src 127.0.0.1/255.255.255.255 acl redelocal src 192.168.1.0/24 http_access allow localhost http_access allow redelocal http_access deny all 9 Controle de Acesso (2) Permissões de Porta – Somente requisições HTTP e HTTPS são aceitas. Outras requisições serão descartadas http_port 3128 visible_hostname ifpbcg acl all src 0.0.0.0/0.0.0.0 acl Safe_ports port 80 acl Safe_ports port 443 acl localhost src 127.0.0.1/255.255.255.255 acl redelocal src 192.168.1.0/24 http_access deny !Safe_ports http_access allow localhost http_access allow redelocal http_access deny all 10 Configurando o Cache (1) Squid possui dois tipos de cache – Cache rápido em memória RAM Ideal para armazenar pequenos objetos Ex: páginas html, imagens... – Cache mais lento feito em HD Armazena arquivos maiores Ex: Atualizações, programas, pacotes... É possível configurar – A quantidade de memória utilizada para cada cache – O tamanho máximo/mínimo dos arquivos em cada cache Boas configurações permitirão melhor desempenho para cada número de usuários e tipo de tráfego 11 Configurando o Cache (2) Cache rápido em memória RAM – Dois parâmetros importantes – Em cache_mem indica-se o uso de 1/3 ou mesmo metade da memória RAM O valor real depende do consumo de memória de outros serviços e do próprio Linux Ferramentas free e vmstat podem ser úteis – O segundo parâmetro indica o tamanho máximo dos objetos armazenados na RAM Arquivos que execederem este tamanho não serão armazenados na RAM cache_mem 64 MB maximum_object_size_in_memory 64 KB 12 Configurando o Cache (3) Cache mais lento em HD – Quatro parâmetros importantes – Os dois primeiros parâmetros indicam o tamanho máximo e minimo dos objetos armazenados no HD Útil para downloads grandes: pacotes, atualizações etc – Os outros dois parâmetros indicam o percentual de utilização da cache de disco a partir dos quais o squid começará a substituir arquivos antigos Acima do low (90%): Squid ativa a substituição de modo a manter em 90% ou inferior a isso Acima do high (95%): Squid ativa uma política de substituição mais agressiva de modo a retornar aos 90% ou inferior a isso maximum_object_size 512 KB minimum_object_size 0 KB cache_swap_low 90 cache_swap_high 95 13 Configurando o Cache (4) Funcionamento de cache_swap_low e cache_swap_high – Acima do low (90%): Squid ativa a substituição de modo a manter em 90% ou inferior a isso – Acima do high (95%): Squid ativa uma política de substituição mais agressiva de modo a retornar aos 90% ou inferior a isso 10% 10% 10% 10% 10% 10% 10% 10% 30% 20% 20% 80% 5% Novo Arquivo no Cache 14 Configurando o Cache (5) Funcionamento de cache_swap_low e cache_swap_high – Acima do low (90%): Squid ativa a substituição de modo a manter em 90% ou inferior a isso – Acima do high (95%): Squid ativa uma política de substituição mais agressiva de modo a retornar aos 90% ou inferior a isso 10% 10% 10% 10% 10% 10% 10% 10% 30% 20% 20% 10% 10% 10% 10% 10% 10% 10% 10% 5% 30% 20% 20% 80% 85% 8% Novo Arquivo no Cache 15 Configurando o Cache (6) Funcionamento de cache_swap_low e cache_swap_high – Acima do low (90%): Squid ativa a substituição de modo a manter em 90% ou inferior a isso – Acima do high (95%): Squid ativa uma política de substituição mais agressiva de modo a retornar aos 90% ou inferior a isso 10% 10% 10% 10% 10% 10% 10% 10% 30% 20% 20% 10% 10% 10% 10% 10% 10% 10% 10% 5% 30% 20% 20% 80% 85% 10% 10% 10% 10% 10% 10% 10% 10% 5% 30% 20% 20% 93% 8% Ativa substituição de objetos 16 Configurando o Cache (7) Funcionamento de cache_swap_low e cache_swap_high – Acima do low (90%): Squid ativa a substituição de modo a manter em 90% ou inferior a isso – Acima do high (95%): Squid ativa uma política de substituição mais agressiva de modo a retornar aos 90% ou inferior a isso 10% 10% 10% 10% 10% 10% 10% 10% 5% 30% 20% 20% 93% 8% Objeto Descartado 5% Novo Arquivo no Cache 17 Configurando o Cache (8) Funcionamento de cache_swap_low e cache_swap_high – Acima do low (90%): Squid ativa a substituição de modo a manter em 90% ou inferior a isso – Acima do high (95%): Squid ativa uma política de substituição mais agressiva de modo a retornar aos 90% ou inferior a isso 10% 10% 10% 10% 10% 10% 10% 10% 5% 30% 20% 20% 93% 8% Objeto Descartado 5% Novo Arquivo no Cache 10% 10% 10% 10% 10% 10% 5% 30% 20% 20% 88% 8% 5% 10% Novo Arquivo no Cache 18 Configurando o Cache (9) Funcionamento de cache_swap_low e cache_swap_high– Acima do low (90%): Squid ativa a substituição de modo a manter em 90% ou inferior a isso – Acima do high (95%): Squid ativa uma política de substituição mais agressiva de modo a retornar aos 90% ou inferior a isso 10% 10% 10% 10% 10% 10% 10% 10% 5% 30% 20% 20% 93% 8% Objeto Descartado 5% Novo Arquivo no Cache 10% 10% 10% 10% 10% 10% 5% 30% 20% 20% 88% 8% 5% 10% Novo Arquivo no Cache 10% 10% 10% 10% 10% 10% 5% 30% 20% 20% 98% 8% 5% 10% Ocorrerá uma substituição mais agressiva!!! 19 Políticas de acesso (1) Com o squid é possível filtrar requisições – Por URL ou palavra na URL – Por IP, – Por horário etc... Por URL ou palavra na URL – Palavras ou URLs contidas no arquivo bloqueados não serão acessíveis – Útil para impedir acesso de sites específicos – Lista de palavras deve ser mantida Para listas de palavras mais completas é recomendável utilizar um filtro específico como DansGuardian acl bloquear url_regex –i “/etc/squid/bloqueados” http_access deny bloquear 20 Políticas de acesso (2) Por IP – Negando o acesso à sites específicos utilizando os IPs Por horário – É possível determinar horários em que o serviço poderá ser utilizado – No exemplo, os usuários poderiam acessar as páginas bloqueadas no horário de almoço, mas em outros horários seria proibido acl ips-bloqueados dst 200.234.21.23 200.212.15.45 http_access deny ips-bloqueados acl bloquear url_regex –i “/etc/squid/bloqueados” acl almoco time 12:00-14:00 http_access allow almoco http_access deny bloquear 21 Autenticação (1) Pode-se adicionar uma camada extra de segurança através da autenticação – Permite controle do acesso – Permite a auditoria dos acessos, por usuário Para configurar autenticação é preciso o uso do htpasswd – Instalado através do pacote apache2-utils Crie o arquivo /etc/squid/passwd Cadastre os logins usando o comando – htpasswd /etc/squid/passwd asa Configure o Squid auth_param basic program /usr/lib/squid/ncsa_auth /etc/squid/passwd acl autenticados proxy_auth REQUIRED http_access allow autenticados 22 Autenticação (2) Pode-se criar políticas por usuário – Suponha que os usuários asa e test terão acesso irrestrito. O usuário lamb terá acesso somente pela manhã, os demais logados terão acesso durante o almoço, e os usuários não logados não terão qualquer acesso. http_port 3128 visible_hostname ifpbcg acl all src 0.0.0.0/0.0.0.0 auth_param basic program /usr/lib/squid/ncsa_auth /etc/squid/passwd acl autenticados proxy_auth REQUIRED acl permitido proxy_auth asa test acl restrito proxy_auth lamb acl manha time 08:00-12:00 acl almoco time 12:00-14:00 http_access allow permitido http_access allow restrito manha http_access allow autenticados almoco http_access deny all 23 Proxy Transparente (1) Configurado o proxy, deve-se configurar os browsers dos usuários – Navegadores podem ser desconfigurados – Para resolver isto utiliza-se o Proxy transparente Conexões dirigidas à Internet são redirecionadas ao proxy 24 Proxy Transparente (2) Para ativação do proxy transparente iremos precisar do SQUID e do IPTABLES No arquivo squid.conf altere a opção http_port por: No Linux executa-se o comando iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 3128 – Redireciona as requisições dirigidas à interface eth0 na porta 80 para a porta 3128 – OBS: este comando deve ser executado em uma linha só! http_port 3128 transparent 25 Proxy Transparente (3) Nos clientes – Deve-se apenas configurar corretamente o gateway – O gateway pode ser ou a própria máquina em que roda o Squid ou – Um roteador que possua uma regra para redirecionar tráfego HTTP para a máquina em que roda o squid Desvantagem do Proxy transparente – Não trabalha com autenticação – Existem soluções que permitem isso A maioria proprietárias Soluções livres: – NatACL: http://natacl.sourceforge.net/ – NoCatAuth: http://nocat.net/ 26 Outras configurações Quando um usuário tem seu acesso negado – O Squid retorna uma página de erro em inglês – É possível mudar a página de erro para português – As páginas deste diretório podem ainda ser personalizadas Basta substituir as páginas no diretório error_directory /usr/share/squid/errors/Portuguese 27 Exemplo: arquivo de configuração http_port 5060 visible_hostname ifpbcg error_directory /usr/share/squid/errors/Portuguese cache_mem 256 MB maximum_object_size_in_memory 128 KB auth_param basic program /usr/lib/squid/ncsa_auth /etc/squid/passwd acl autenticados proxy_auth REQUIRED acl all src 0.0.0.0/0.0.0.0 acl almoco time 12:00-14:00 acl Safe_ports port 80 acl Safe_ports port 443 acl localhost src 127.0.0.1/255.0.0.0 acl redelocal src 192.168.1.0/24 acl permitido proxy_auth asa http_access allow localhost http_access deny !Safe_ports http_access allow permitido redelocal http_access allow autenticados redelocal almoco http_access deny all 28 Relatórios de acesso O Squid pode manter um registro de todos acessos – Permite auditoria Estes registros são salvos em um arquivo de log que deve ser indicado através do parâmetro abaixo Este é um arquivo texto que pode ser lido com qualquer ferramenta Existem ferramentas que geram relatórios de acesso – Squid Analysis Report Generator (SARG) access_log /var/log/squid/access.log squid 29 SARG (1) Instalando o SARG – apt-get install sarg SARG gera relatórios em formato de páginas web – Precisa do Apache para funcionar SARG cria scripts em – /etc/cron.daily – /etc/cron.weekly – /etc/cron.monthly Para gerar os relatórios iniciais basta executar o comando sarg como root Os relatórios gerados são acessados através de um browser pela URL http://<IP>/squid-reports 30 SARG (2) 31 SARG (3) Servidor Proxy Administração de Sistemas Abertos Professor: Anderson Costa anderson@ifpb.edu.br
Compartilhar