SQUID UMA SOLUÇÃO DE PROXY PARA AMBIENTES HETEROGÊNEOS

Documentos relacionados
Segurança de Redes. Aula extra - Squid. Filipe Raulino filipe.raulino@ifrn.edu.br

5/7/2010. Apresentação. Web Proxy. Proxies: Visão Geral. Curso Tecnologia em Telemática. Disciplina Administração de Sistemas Linux

SERVIDOR PROXY COM SQUID3 em GNU/Linux Debian7 Por: Prof. Roitier Campos Gonçalves

Curitiba, Novembro Resumo

Servidor proxy - Squid PROFESSOR : RENATO WILLIAM

Curso de extensão em Administração de redes com GNU/Linux

Squid autenticando em Windows 2003 com msnt_auth

Depois que instalamos o Squid vamos renomear o arquivo de configuração para criarmos um do zero.

SQUID Linux. Rodrigo Gentini

Linux Network Servers

TUTORIAL DE SQUID Versão 3.1

Apostila sobre Squid

Administração de Sistemas Operacionais

CONSTRUINDO UM FIREWALL NO LINUX CENTOS 5.7

4. Abra o prompt de comando acesse o diretório c:\squid\sbin e digite os comandos abaixo:

Pré-requisitos e passos iniciais. Topologia visual

Tutorial Servidor Proxy com Squid baseado em Linux Acadêmicos : Felipe Zottis e Cleber Pivetta. Servidor Proxy

Sarg Proxy transparente

CONSTRUINDO UM FIREWALL NO LINUX DEBIAN 6.0

Prof. Samuel Henrique Bucke Brito

Instalação e Configuração Iptables ( Firewall)

Professor: João Paulo de Brito Gonçalves Campus Cachoeiro Curso Técnico em Informática

Implantando o Squid para Gerenciamento de Banda e Acesso a Internet

Prof. Roberto Franciscatto 4º Semestre - TSI - CAFW. Free Powerpoint Templates Page 1

Guia de instalação para ambiente de Desenvolvimento LINUX

Existe um limite dado pelo administrador da Rede para que ele não armazene tudo.

Projeto e Instalação de Servidores Servidores Linux Aula 6 Firewall e Proxy

MSN-Proxy v0.7 no Debian 5 (Atualizado)

Aula 10 Proxy cache Squid

Disciplina: Fundamentos de serviços IP Alunos: Estevão Elias Barbosa Lopes e Leonardo de Azevedo Barbosa

Segurança Informática e nas Organizações. Guiões das Aulas Práticas

Projeto e Configuração de Firewalls

Manual comandos Básicos para instalar e desinstalar Firebird em Sistema operacional Linux

Aula 08. Firewall. Prof. Roitier Campos Gonçalves

Guia: como instalar o Ubuntu Linux

Segurança de Redes. Firewall. Filipe Raulino

SquidCacheAux para BrazilFW

Firewall Iptables. Professor: João Paulo de Brito Gonçalves. Campus - Cachoeiro Curso Técnico de Informática

Instalação e configuração do serviço proxy Squid.

Inscrições em Eventos

Prática NAT/Proxy. Edgard Jamhour. Esses exercícios devem ser executados através do servidor de máquinas virtuais: espec.ppgia.pucpr.

Você pode testar se está tudo OK, abrindo um navegador no Debian Linux e acessando qualquer site.

Manual Instalação e-cidade-transparência no Ubuntu Server

IPTABLES. Helder Nunes

INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA CATARINENSE CAMPUS SOMBRIO RONALDO BORGES DE QUADROS SERVIÇOS DE REDE

SERVIDOR WEB - APACHE SERVIDOR WEB - APACHE SERVIDOR WEB - APACHE 27/02/2012

Elaboração de Script de Firewall de Fácil administração

Lazarus pelo SVN Linux/Windows

Manual de Instalação do UTM Zeus

Configurando o Controle dos Pais no Windows Vista

Definição de Proxy. Utilizando o Software Squid

1) Ao ser executado o código abaixo, em PHP, qual será o resultado impresso em tela?

Prof. Samuel Henrique Bucke Brito

Endereçamento Privado Proxy e NAT. 2008, Edgard Jamhour

Nesse artigo abordaremos os principais aspectos de instalação e uso do NTOP no Fedora Core 4.

Manual do Teclado de Satisfação Online WebOpinião

TUTORIAL PASSO A PASSO INSTALAÇÃO SERVIDOR DE SMS PARA MKAUTH

Configure seu Linux pela Web! Instalação à partir de um.tar.gz. Autor: Carlos Eduardo Ribeiro de Melo <eduardo at unisulma.edu.br> Data: 05/10/2004

Sensor de temperatura Parte 5 Cleiton Bueno Preparando o ambiente do Banco de dados Mysql

Segurança de redes com Linux. Everson Scherrer Borges Willen Borges de Deus

Atividade Proposta da Disciplina: Laboratório de Rede de Computadores

Introdução ao Sistema. Características

Compartilhamento da internet, firewall

Instalação Apache + MySQL + PHPMyAdmin CentOS

Squid autenticado no Active Directory com Winbind

Entendendo como funciona o NAT

Resolução de Problemas de Rede. Disciplina: Suporte Remoto Prof. Etelvira Leite

FACULDADE DE TECNOLOGIA SENAC GESTÃO DA TECNOLOGIA DA INFORMAÇÃO LABORATORIO DE REDE

MINISTÉRIO DA EDUCAÇÃO

SERVIDORES REDES E SR1

Procedimento para instalação do OMNE-Smartweb em Raio-X

Firewall. Tutorial Firewall em Linux Acadêmicos: Felipe Zottis e Cleber Pivetta

MANUAL PARA USO DO SISTEMA

Implementação do Protocolo 802.1x. Utilizando Servidor de Autenticação FreeRadius. Discentes: Luiz Guilherme Ferreira. Thyago Ferreira Almeida

SISTEMA LOGS May 20 11:37:47 felipe-virtualbox sudo: pam_unix(sudo:session): session opened for user root by felipe(uid=0)

Atualizações de Software Guia do Usuário

Proxy/Cache. Prof: Alberto Felipe Friderichs Barros

Auditando e criando relatório de análise de vulnerabilidades com Nessus

Manual do Instar Mail v2.0

- Wireless e NTP - 272

INSTALANDO UM SERVIDOR WINDOWS SERVER 2012 R2 SERVER CORE

Curso Firewall. Sobre o Curso de Firewall. Conteúdo do Curso

Lojamundi Tecnologia Sem Limites br

INSTALANDO SISTEMA PFSENSE COMO FIREWALL/PROXY

Instalação do PHP no Linux

SISTEMAS OPERACIONAIS ABERTOS Prof. Ricardo Rodrigues Barcelar

Linux Network Servers

Instalando servidor Apache com MySQL e as linguagens ColdFusion e PHP. XAMPP (xampp-win installer.exe), veja aqui.

LABORATÓRIO UNIDADES 1 REVISÃO LINUX E COMANDOS BÁSICOS ABRINDO A MÁQUINA VIRTUAL UBUNTU SERVER PELO VIRTUALBOX

PROVA INFORMÁTICA BANCO DO BRASIL 2007

Instalação e Configuração

Instalando o Debian em modo texto

LINX POSTOS AUTOSYSTEM

LABORATÓRIO 0 Revisão GNU/Linux

Administração de Sistemas Operacionais. Prof. Marlon Marcon

Guia de Instalação e Configuração do Noosfero

Instalando servidor Apache

MANUAL DA SECRETARIA

Transcrição:

SEMANA DE REDES DE COMPUTADORES 2015 FACULDADE ESTÁCIO DE SÁ SQUID UMA SOLUÇÃO DE PROXY PARA AMBIENTES HETEROGÊNEOS PROF: Flavio Alexandre dos Reis reis.falexandre@gmail.com

2/78 AGENDA APRESENTAÇÕES; INTRODUÇÃO; FIREWALL'S; PREPARAR O AMBIENTE; SERVIDORES PROXY; INSTALAÇÃO; COMANDOS; BÁSICO; CACHE; ACL; LOG; EXERCICIOS; AUTENTICAÇÃO; CONTROLE DE BANDA; DICAS;

3/78 SQUID

4/78 APRESENTAÇÕES Flavio Alexandre dos Reis Tecnólogo em Tecnologia da informação; Especialista em Redes de Computadores; Especialista em Segurança da Informação; Certificado LPI/CLA; Professor do Curso de Administração e Segurança de Sistemas Computacionais Faculdade Estácio de Sá; Professor de disciplinas com enfase em Sistemas Operacionais, Redes de Computadores e Segurança da Informação; Pesquisador independente de Software Livre e Segurança da Informação; Ministra curso de formação Linux com foco na Certificação LPI; Ministra cursos de Segurança de Redes, Servidores WEB, Firewall's, com enfase em software livre;

5/78 DISPONIBILIDADE INTRODUÇÃO 100 %? %? %? % SEGURANÇA RISCO

6/78 FIREWALL O Firewall é um programa que tem como objetivo proteger a máquina contra acessos indesejados, tráfego indesejado. Proteger serviços que estejam rodando na máquina e bloquear a passagem de coisas que você não deseja receber (como conexões vindas da Internet para sua segura rede local. Evitando acesso aos dados corporativos de uma empresa ou a seus dados pessoais). Vamos conhecer alguns tipos de Firewal's, existem basicamente dois tipos.

7/78 FIREWALL Nível de pacotes Este tipo de firewall toma as decisões baseadas nos parâmetros do pacote, como porta/endereço de origem/destino, estado da conexão, e outros parâmetros do pacote. O firewall então pode negar o pacote (DROP) ou deixar o pacote passar (ACCEPT). O iptables é um excelente firewall que se encaixa nesta categoria. Os dois tipos de firewalls podem ser usados em conjunto para fornecer uma camada dupla de segurança no acesso as suas máquinas/máquinas clientes. Normalmente, as empresas preferem implementar um Firewall baseado apenas em uma máquina, seja ele um host PC ou um roteador. Entretanto, os Firewalls mais robustos são compostos de várias partes. Agora sim você deve ter pensado ai, entendi porque to falando de iptables.

8/78 FIREWALL Packet Filter Trata 20 a 24 bytes Ou seja, ele trata todo o cabeçalho IP (primeiros 20 bytes) e parte do cabeçalho de transporte no que diz respeito a porta origem e destino, lembrando que esse campo tem 4 bytes (16 bits 2^16 = total de 65536 portas). StateLess Trata um pouco mais de 24 bytes, mais isso varia de acordo com a forma que a ferramenta foi implementada. Em alguns casos analisa o flag de início de conexão TCP mas não é capaz de tratar o conceito de estado de conexão. StateFull Trata no mínimo os 40 bytes iniciais, ou seja, todo cabeçalho IP seja qual for o protocolo de transporte (UDP, TCP), sabendo tratar estado de conexão.

9/78 FIREWALL

10/78 FIREWALL

11/78 FIREWALL Nível de aplicação Este tipo de firewall analisa o conteúdo do pacote para tomar suas decisões de filtragem. Firewalls deste tipo são mais intrusivos (pois analisam o conteúdo de tudo que passa por ele) e permitem um controle relacionado com o conteúdo do tráfego. Alguns firewalls em nível de aplicação combinam recursos básicos existentes em firewalls em nível de pacotes combinando as funcionalidade de controle de tráfego/controle de acesso em uma só ferramenta. Servidores proxy, como o squid, são um exemplo deste tipo de firewall.

12/78 PREPARANDO O AMBIENTE A escolha correta do hardware faz uma grande diferença. As vezes alguém chega pra você e diz assim: Pega aquela máquina velha lá e coloca um proxy pra rodar, Linux não roda em qualquer coisa.... Avalie essa frase, pense, reflita um pouco mais, quer mais tempo?. Iremos estudar durante o curso as vantagem de um proxy, mas há também os cuidados que temos que tomar para que ele não seja uma dor de cabeça. Nesse ponto preciso que você entenda que essa fase poderá influenciar no desempenho do seu proxy ( e muito, pode acreditar ).

13/78 ESPECIFICANDO O HARDWARE

14/78 INSTALAÇÃO PERSONALIZADA Olha, esse passo é muito importante, pois um espaço não previsto pode ser necessário. Servidores proxy utilizam de um espaço extra para gravação de logs e cache Todos esses logs e caches podem ser configurados, mas iremos partir do ponto em que estamos analisando o pior caso, onde o administrador ( nesse caso você ) deverá gerar logs de todos os acessos e manter um cache dos sites e arquivos trafegados na rede. Mas como no nossa mundo Linux temos sempre uma saída, se você errar no particionamento, há uma solução chamada LVM ( Logical Volume Manager ) mas não é nosso foco, quem sabe em um outro curso.

15/78 PARTICIONAMENTO /boot ext4 512 MB / ext4 15 GB /usr ext4 15 GB /home ext4 05 GB /var ext4 05 GB /var/log ext4 10 GB /var/squid1 ext4 10 GB /var/squid2 ext4 10 GB /var/squid3 ext4 10 GB /opt ext4 2,4 GB Swap * 2 GB /tmp ext4 1 GB

16/78 HARDENING

17/78 SERVIDORES PROXY Se você chegou até aqui é porque está realmente interessado em colocar seu servidor no ar. O que é um proxy? Pra que ele serve?

18/78 SERVIDORES PROXY Um proxy é um servidor que age como um intermediário para requisições de clientes solicitando recursos de outros servidores. Um cliente conecta-se ao servidor proxy, solicitando algum serviço, como um arquivo, conexão, página web ou outros recursos disponíveis de um servidor diferente e o proxy avalia a solicitação como um meio de simplificar e controlar sua complexidade. Os proxies foram inventados para adicionar estrutura e encapsulamento a sistemas distribuídos. Hoje, a maioria dos proxies são proxies web, facilitando o acesso ao conteúdo na World Wide Web e fornecendo anonimato.

19/78 TIPOS DE PROXY Proxy Transparente Não há a necessidade de configurar o uso do proxy, Proxy Controlado Se caracteriza pela necessidade de configuração do navegador. A principal vantagem deste serviço é a restrição imposta a equipamentos estranhos a empresa.

20/78 TIPOS DE PROXY Proxy Anônimo Um Proxy anônimo é um tipo especial de proxy que é executado com um software que apaga seu endereço IP de qualquer requisição de página e o substitui pelo seu próprio. Proxy Reverso Um proxy no modelo convencional, intercepta requisições da rede local com destino à Internet, já o proxy reverso intercepta requisições da internet com destino à rede local.

21/78 APLICAÇÕES Cache Autenticação Lista de Controle de Acesso Controle de Banda Proxy web

22/78 INSTALAÇÃO #aptitude search squid3 #aptitude install squid3

23/78 COMPILANDO $./configure \ --prefix=/usr \ --sysconfdir=/etc/squid \ --libexecdir=/usr/libexec/squid \ --datadir=/usr/share/squid \ --enable-carp --with-pthreads \ --enable-removal-policies="heap lru" \ --enable-icmp --enable-delay-pools \ --enable-useragent-log \ --enable-referer-log \ --enable-kill-parent-hack \ --enable-snmp \ --enable-arp-acl \ --enable-htcp --enable-ssl \ --with-openssl=/usr \ --enable-forw-via-db \ --enable-default-err-language=portuguese \

24/78 COMPILANDO --enable-err-languages="portuguese English Spanish" \ --enable-poll \ --enable-linux-netfilter \ --enable-leakfinder \ --enable-underscores \ --enable-auth="basic digest ntlm" \ --enable-basic-auth-helpers="pam YP SMB SASL NCSA LDAP winbind" \ --enable-ntlm-auth-helpers="smb winbind no_check fakeauth" \ --enable-digest-auth-helpers=password \ --enable-ntlm-fail-open \ --enable-external-acl-helpers="ip_user ldap_group unix_group wbinfo_group winbind_group" $ make $ su # make install

25/78 COMPILANDO Erros podem ocorrer no processo, normalmente os motivos dos erros são mostrados, são dependências, por isso preste bastante atenção nas linhas onde estão as saídas de erro, lá provavelmente estará o motivo do seu erro. Algumas opções Sobre as opções, suas definições estão todas em "./configure --help". --prefix=/usr - muda o caminho da instalação para "/usr" ao invés de "/usr/local"; --libexecdir=/usr/libexec/squid - envia todas as bibliotecas executáveis para /usr/libexec/squid; --enable-removal-policies="heap lru" - habilita as políticas de remoção de cache em memória; --enable-useragent-log - adiciona o log do cabeçalho "useragent"; --enable-referer-log - adiciona o log do cabeçalho "referer"; --enable-err-languages="portuguese English Spanish" - idioma das páginas de erro; --enable-default-err-language=portuguese - usa como padrão o idioma pt_br nas páginas de erro; --enable-linux-netfilter - adiciona suporte a proxy transparente; --enable-underscores - adiciona suporte a sublinhado;

26/78 COMPILANDO --enable-auth="basic digest ntlm" - habilita os esquemas de autenticação; --enable-basic-auth-helpers="pam YP SMB SASL NCSA LDAP winbind" - habilita os módulos que poderão ser usados para autenticação.

27/78 DIRETÓRIO DE INSTALAÇÃO # cd /etc/squid3/ # ls -l total 224 -rw-r--r-- 1 root root 1547 Ago 28 2014 errorpage.css -rw-r--r-- 1 root root 421 Ago 28 2014 msntauth.conf -rw-r--r-- 1 root root 206557 Ago 28 2014 squid.conf

28/78 ARQUIVO DE CONFIGURAÇÃO root@jarvis:/etc/squid3# head -n 15 squid.conf # WELCOME TO SQUID 3.1.20 # ---------------------------- # # This is the documentation for the Squid configuration file. # This documentation can also be found online at: # http://www.squid-cache.org/doc/config/ # # You may wish to look at the Squid home page and wiki for the # FAQ and other documentation: # http://www.squid-cache.org/ # http://wiki.squid-cache.org/squidfaq # http://wiki.squid-cache.org/configexamples # # This documentation shows what the defaults for various directives # happen to be. If you don't need to change the default, you should

29/78 REMOVENDO COMENTÁRIOS # cd /etc/squid3 # wc -l squid.conf 5539 squid.conf-original # mv squid.conf squid.conf_original # egrep -v ^# ^$ squid.conf_original >> squid.conf # wc -l squid.conf 28 squid.conf

30/78 SQUID.CONF # cat squid.confb 1 acl manager proto cache_object 2 acl localhost src 127.0.0.1/32 ::1 3 acl to_localhost dst 127.0.0.0/8 0.0.0.0/32 ::1 4 acl SSL_ports port 443 # https 5 acl Safe_ports port 80 # http 6 acl Safe_ports port 21 # ftp 7 acl Safe_ports port 443 # https 8 acl Safe_ports port 70 # gopher 9 acl Safe_ports port 210 # wais 10 acl Safe_ports port 1025-65535 # unregistered ports 11 acl Safe_ports port 280 # http-mgmt 12 acl Safe_ports port 488 # gss-http 13 acl Safe_ports port 591 # filemaker 14 acl Safe_ports port 777 # multiling http 15 acl CONNECT method CONNECT

31/78 SQUID.CONF 16 http_access allow manager localhost 17 http_access deny manager 18 http_access deny!safe_ports 19 http_access deny CONNECT!SSL_ports 20 http_access allow localhost 21 http_access deny all 22 http_port 3128 23 hierarchy_stoplist cgi-bin? 24 coredump_dir /var/spool/squid3 25 refresh_pattern ^ftp: 1440 20% 10080 26 refresh_pattern ^gopher: 1440 0% 1440 27 refresh_pattern -i (/cgi-bin/ \?) 0 0% 0 28 refresh_pattern. 0 20% 4320

32/78 COMANDOS ÚTEIS # squid3 -k parse Busca por erros no arquivo de configuração # squid3 -z Com o squid parado esse comando cria os diretórios de cache # squid3 -k reconfigure Recarrega o squid sem ter que reiniciá-lo, sempre que algo for alterado esse comando deve ser executado para que as mudanças entrem em vigor.

33/78 COMANDOS ÚTEIS # invoke-rc.d squid3 {start stop reload force-reload restart} # service squid3 {start stop reload force-reload restart} # /etc/init.d/squid3 {start stop reload force-reload restart} Os 3 comandos acima podem ser utilizados para iniciar, parar, reiniciar, o squid. O reload e force-reload tem a mesma função do squid3 -k reconfigure.

34/78 NAVEGADORES D

35/78 PRIMEIROS CONTROLES Você criar uma gpo no seu AD ou no samba para fazer isso automaticamente. Mais no fim irei mostrar como trabalhar com wpad ( uma opção bem interessante. ) Inserir após a linha acl localhost src 127.0.0.1/32 ::1 acl mynetwork src 192.168.30.0/29 Inserir após a linha http_access allow localhost http_access allow mynetwork Altero a linha http_port 3128 http_port 192.168.30.6:3128 Insira a linha a pós http_port visible_hostname ServidorProxy

36/78 PARAMETROS EXTRAS access_log /var/log/squid3/access.log squid refresh_pattern ^ftp: 1440 20% 10080 refresh_pattern ^gopher: 1440 0% 1440 refresh_pattern -i (/cgi-bin/ \?) 0 0% 0 refresh_pattern. 0 20% 4320 #disco cache_dir ufs /var/squid3 9000 16 256 maximum_object_size 512 MB minimum_object_size 0 KB cache_swap_low 90 cache_swap_high 95 #memória cache_mem 1500 MB maximum_object_size_in_memory 128 KB

37/78 PARAMETROS EXTRAS # Windows Update refresh_pattern windowsupdate.com/.*\.(cab exe dll msi) 10080 100% 43200 reload-into-ims refresh_pattern download.microsoft.com/.*\.(cab exe dll msi) 10080 100% 43200 reload-into-ims refresh_pattern www.microsoft.com/.*\.(cab exe dll msi) 10080 100% 43200 reload-into-ims refresh_pattern au.download.windowsupdate.com/.*\.(cab exe dll msi) 4320 100% 43200 reload-into-ims

38/78 LOG EM TEMPO REAL SHELL SCRIPT Uma tarefa as vezes complicada é identificar porque um determinado domínio está sendo bloqueado pelo proxy, ai você analisa oq ue o usuário te passou e mesmo assim não consegue identificar o que realmente está acontecendo. Talvez você não queira esperar o relatório do sarg para analisar o que está ocorrendo. Nesse ponto o uso de um script em shell com uso do awk pode ajudar muito. Abaixo segue um exemplo de script escrito em shell que mostra todo o log do squid em tempo real, com uso do comando grep pode-se criar mais uma opção de filtro e assim analisar somente as requisições do host em questão.

39/78 LOG EM TEMPO REAL SHELL SCRIPT #!/bin/bash # INICIO tail -f $1 awk '{ if (length($7)>76) { if ($4== TCP_DENIED/403 ) { printf \033[40;31;1m%15s %-27s %-7s %s/ /%s\033[m\n, $3, $4, $6,substr($7,1,56),substr($7,length($7)-14,15) } else { printf \033[40;36;1m%15s\033[m \033[40;36m%-27s\033[m \033[40;30;1m%- 7s\033[m \033[40;37m%s/ /%s\033[m\n, $3, $4, $6, substr($7,1,56),substr($7,length($7)-14,15) } } else { if ($4== TCP_DENIED/403 ) { printf \033[40;31;1m%15s %-27s %-7s %s\033[m\n, $3, $4, $6, substr($7,1,76) } else { printf \033[40;36;1m%15s\033[m \033[40;36m%-27s\033[m \033[40;30;1m%- 7s\033[m \033[40;37m%s\033[m\n, $3, $4, $6, substr($7,1,76)}} }' # FIM

40/78 LOG EM TEMPO REAL SHELL SCRIPT # cd /etc/squid3 # chmod a+x analiseproxy.sh #./analiseproxy.sh /var/squid3/acesses.log Pode-se usar filtros durante a consulta. #./analiseproxy.sh /var/squid3/acesses.log grep 192.168.30.123

41/78 ACLS dstdomain Bloqueia por domínios completos acl site dstdomain www.terra.com.br url_regex Bloqueia por palavras na url acl palavras url_regex terra dstdom_regex Bloqueia palavras inseridas na url. Ele bloqueia as palavras apenasna url e não no texto do site. Essa opção cria falsos positivos. Bloqueia páginas dinâmicas, onde palavras são passadas como parâmetros. acl palavras dstdom_regex terra

42/78 ACLS time Controla por horário acl allowalmoco time 12:00-13:30 src Controle por endereço de origem acl mynetwork src 192.168.30.0/29 dst Controle por endereço de destino acl to_localhost dst 127.0.0.0/8 0.0.0.0/32 ::1

43/78 ACLS proto A acl do tipo "proto" significa que será bloqueado um protocolo em específico, neste caso, o "cache_object". Ela poderia facilmente ser o protocolo "ftp" ou "http". Se você ainda não ouviu falar do protocolo "cache_object", não se preocupe, ele é um protocolo especifico do squid que retorna informações ao remetente a respeito de como o cache está configurada, ou como ele está sendo executado. Ele é utilizado na seção "http_access". Se você receber uma conexão tentando usar o protocolo cache_object (conforme definido na acl manager), le será negado, a menos que a origem seja do localhost. Assim, um programa em execução no servidor de cache real pode obter informações sobre o estado interno squid, mas não os hosts externos. acl manager proto cache_object

44/78 ACLS port Controle de portas acl SSL_ports port 443 acl Safe_ports port 80 proxy_auth Usado em autenticação acl groupwork proxy_auth flavio method O método PURGE exclui os objetos armazenados no cache do Squid, enquanto o método CONNECT diz ao Squid para deixar passar quem fizer parte da ACL CONNECT. arp Controle de Acesso por MAC acl macaccept arp 00:1f:3c:bf:ce:86

45/78 CRIANDO ACLS # cd /etc/squid3 # pwd # mkdir acls # cd acls Controle de Acesso por IP #vim ipaccept.acl

46/78 ACLS

47/78 PÁGINA DE RETORNO $ ls -l /usr/share/squid3/errors/pt-br total 172 -rw-r--r-- 1 root root 1062 Jun 18 2012 ERR_ACCESS_DENIED -rw-r--r-- 1 root root 1220 Jun 18 2012 ERR_ACL_TIME_QUOTA_EXCEEDED -rw-r--r-- 1 root root 1591 Jun 18 2012 ERR_AGENT_CONFIGURE -rw-r--r-- 1 root root 1589 Jun 18 2012 ERR_AGENT_WPAD -rw-r--r-- 1 root root 1090 Jun 18 2012 ERR_CACHE_ACCESS_DENIED -rw-r--r-- 1 root root 1245 Jun 18 2012 ERR_CACHE_MGR_ACCESS_DENIED -rw-r--r-- 1 root root 1447 Jun 18 2012 ERR_CANNOT_FORWARD -rw-r--r-- 1 root root 1345 Jun 18 2012 ERR_CONFLICT_HOST -rw-r--r-- 1 root root 1031 Jun 18 2012 ERR_CONNECT_FAIL -rw-r--r-- 1 root root 966 Jun 18 2012 ERR_DIR_LISTING -rw-r--r-- 1 root root 1132 Jul 9 2011 ERR_DNS_FAIL -rw-r--r-- 1 root root 1081 Jul 9 2011 ERR_ESI -rw-r--r-- 1 root root 1048 Jun 18 2012 ERR_FORWARDING_DENIED

48/78 EXERCÍCIOS Criação de acls para: Liberar determinado conteúdo; Bloquear determinado conteúdo; Bloqueio de downloads; Bancos; Trabalho; Palavras Horário;

49/78 SITE SEM CACHE # cd /etc/squid3 # vim squid.conf acl SITE dstdomain www.site-sem-chace.com.br no_cache deny SITE Ele não criará cache para os acesso feitos para o dominio www.site.com.br

50/78 CONTROLE DE BANDA Controle ocorre somente no tráfego de http, ou seja somente na navegação e download. Caso os usuários utilizem algum outro software, via P2P por exemplo (e-mule, kazaa e outros), o Squid não controla e, neste caso é necessário utilizar controle de banda via iproute (Outro assunto um pouco mais compelxo). Banda baixa (128 Kbs) Banda media (256 kbs) Banda alta (512 kbs) # vim /etc/squid3/squid.conf # ACLS acl bandabaixa proxy_auth usuario1 acl bandamedia proxy_auth usuario2 acl bandaalta proxy_auth usuario3

51/78 CONTROLE DE BANDA # Delay Pools delay_pools 3 delay_class 1 2 delay_class 2 2 delay_class 3 2 delay_access 1 allow bandabaixa delay_access 2 allow bandamedia delay_access 3 allow bandaalta delay_parameters 1-1/-1 13000/13000 delay_parameters 2-1/-1 25000/25000 delay_parameters 3-1/-1 52000/52000

52/78 SARG O SARG (Squid Analysis Report Generator) é uma ferramenta muito boa desenvolvida por um brasileiro que permite à você ver para onde seus usuários estão indo na Internet através da análise do arquivo de log access.log do famoso proxy Squid. O poder da ferramenta é incrível, ele pode dizer para você quais usuários acessaram quais sites, em que horas, quantos bytes foram baixados, quantas conexões foram feitas, relatórios de sites mais acessados, usuários que mais acessam, relatório de sites negados, falha de autenticação, entre outros. A gerência que você pode obter com isso é muito boa, principalmente para as empresas que querem economizar o uso da Internet

53/78 SARG #aptitude install sarg #aptitude install apache2 #vim /etc/sarg/sarg.conf 7 access_log /var/log/squid3/access.log 25 title "Squid User Access Reports" 120 output_dir /var/www/sarg/squid # sarg

54/78 SARG

55/78 MYSAR O MySar é um analisador de log, seu objetivo é ler o arquivo access.log do Squid da mesma forma que o Sarg. A Diferença é o tempo de atualização da lista (1 minuto) e a utilização de uma base de dados SQL (MySQL) para armazenar as informações. Baixando MySar Espelho da UFPR, utilize sempre a versão estável mais nova por questão de segurança: http://ufpr.dl.sourceforge.net/project/mysar/mysar/

56/78 MYSAR Dependências baixadas para rodar o MySar: - Mysql-server; - Apache2; - php5; - php5-mysql; - Squid; Caso não possua os pacotes baixe-os via apt-get: # apt-get install mysql-server apache2 php5 php5-mysql Descompacte para um diretório de sua preferência, no meu caso em /usr/local: # tar -zxvf mysar-2.1.4.tar.gz -C /var/www Será criado o diretório /var/www

57/78 MYSAR No APACHE Alias /mysar /var/www/mysar/www <Directory "/var/www/mysar/www"> Options Indexes MultiViews AllowOverride None Order allow,deny Allow from all </Directory> Restartando serviço do apache para aplicar modificação: # /etc/init.d/apache2 restart Agora vamos conceder permissão de dono do diretório mysar para www-data (Usuário do apache): # chown -R www-data /var/www/mysar

58/78 MYSAR Vamos "criar" o arquivo config.ini: # cd /var/www/mysar/etc # cp config.ini.example config.ini Agora o mysar já está pronto para ser configurado, essa configuração será feita acessando a web do servidor: http://ip_do_servidor/mysar Clique em "Click here to continue >>>" Siga as telas de configuração # rm -r /var/www/mysar/www/install

59/78 MYSAR Vamos apenas fazer os ultimos ajustes no mysar. Acesse pela web e clique em "Administration" Confira o caminho do arquivo access.log e confirme. OBS.: Como já utilizo o Sarg e estou implementando o mysar eu vou deixar que ele crie log de 1 dia e não resolva nome de estação. Recomendo que você utilize as opções padrão: Adicione as rotinas no contrab: # crontab -e * * * * * root /usr/local/mysar/bin/mysar-importer.php > /var/log/mysar/mysar-importer.log 2>&1 * * * * * root /usr/local/mysar/bin/mysar-resolver.php > /var/log/mysar/mysar-resolver.log 2>&1 0 1 * * * root /usr/local/mysar/bin/mysar-maintenance.php /var/log/mysar/mysar-maintenance.log 2>&1

60/78 LOG PERSONALIZADO Com a liberação de novas versões do squid surgiram várias novas funcionalidades e uma delas é o logformat que serve para manipular a forma em que o log será gerado. Funciona da seguinte forma: logformat < nome> < especificação do formato> O nome nada mais é do que um nome para manipulação do formato. A especificação do formato pode ser customizada como o administrador achar melhor, sempre adicionando o prefixo %. Segue a lista de especificações:

61/78 LOG PERSONALIZADO >a IP de origem da requisição (cliente) >A FQDN do cliente >p Porta de origem no cliente < A IP do servidor de destino la IP local do servidor Squid lp Porta local do servidor Squid ts Segundos passados desde a requisição tu Subsegundos tl Horário do servidor. Strings opcionais utilizadas como padrão. %d/%b/%y:%h: %M:%S %z tg Horário GMT. Strings opcionais utilizadas como padrão. %d/%b/%y:%h:%m:%s %z tr Tempo de resposta, em milisegundos) >h Cabeçalho de requisição. < h Cabeçalho de retorno. un Nome do usuário ul Login do usuário ui Ident do usuário us SSL

62/78 LOG PERSONALIZADO ue ACL externa Hs Status do código HTTP Ss Status da requisição (TCP_MISS/TCP_REFRESH/TCP_DENIED etc) Sh Status da hierarquia do Squid (DEFAULT_PARENT etc) mt MIME type do conteúdo rm Método requisitado na conexão(get/post/connect etc) ru URL requisitada rv Versão do protocolo requisitado ea String retornada por uma ACL externa < st Tamanho da resposta, incluindo cabeçalho HTTP % % literal

63/78 LOG PERSONALIZADO Nova forma para o log Para criar um novo template para o seu arquivo de log primeiro precisamos criar uma diretiva do tipo logformat que será usada mais a frente. logformat MEU_LOG IP do cliente: %>a - Username: %un - Horario: [%tl] - Metodo: %rm - URL: %ru - Status HTTP: Hs - Status Squid: %Ss Logo em seguida definimos onde será utilizado o novo template. Estou separando em dois arquivos de logs (access.log e gerencia.log) para não atrapalhar o correto funcionamento do SARG. O logformat com o nome squid é o padrão do Squid que estamos acostumados a ver e que o SARG necessita para que funcione corretamente. O logformat com o nome MEU_LOG foi o template que criei para poder enviar, em um formato mais amigável, para a gerencia. access_log /var/log/squid/access.log squid access_log /var/log/squid/gerencia.log MEU_LOG

64/78 LOG PERSONALIZADO Nunca esquecer de dar um reload no Squid para que as novas configurações entrem em vigor. # squid -k reconfigure Log de acesso Após a criação das regras meus dois logs de acesso, acessando o site http://www.integral.inf.br/, ficaram da seguinte forma access.log 1431486561.078 171 192.168.25.204 TCP_MISS/200 9847 GET http:///site/wp-content/themes/firmasite/assets/js/bootstrap.min.js? reisfa DIRECT/192.99.160.41 application/javascript 1431486561.125 104 192.168.25.204 TCP_MISS/200 42671 GET http://fonts.gstatic.com/s/ubuntucondensed/v6/dbct-nxn57mtafjityxdrk8ne7_gi- Xz52ZQ_AwfA78.woff reisfa DIRECT/216.58.222.35 font/woff

65/78 LOG PERSONALIZADO gerencia.log IP do cliente: 192.168.25.204 - Username: reisfa - Horario: [13/May/2015:00:09:19-0300] - Metodo: GET - URL: http://reisfa.eti.br/favicon.ico - Status HTTP: Hs - Status Squid: TCP_MISS IP do cliente: 192.168.25.204 - Username: reisfa - Horario: [13/May/2015:00:09:20-0300] - Metodo: GET - URL: http://reisfa.eti.br/favicon.ico - Status HTTP: Hs - Status Squid: TCP_MISS IP do cliente: 192.168.25.204 - Username: reisfa - Horario: [13/May/2015:00:09:20-0300] - Metodo: GET - URL: http:///site/ - Status HTTP: Hs - Status Squid: TCP_MISS IP do cliente: 192.168.25.204 - Username: reisfa - Horario: [13/May/2015:00:09:20-0300] - Metodo: GET - URL: http://fonts.googleapis.com/css? - Status HTTP: Hs - Status Squid: TCP_MISS IP do cliente: 192.168.25.204 - Username: reisfa - Horario: [13/May/2015:00:09:20-0300] - Metodo: GET - URL: http:///site/wpcontent/themes/firmasite/style.css? - Status HTTP: Hs - Status Squid: TCP_MISS IP do cliente: 192.168.25.204 - Username: reisfa - Horario: [13/May/2015:00:09:20-0300] - Metodo: GET - URL: http:///site/wpcontent/themes/firmasite/assets/themes/united/bootstrap.min.css? - Status HTTP: Hs - Status Squid: TCP_MISS

66/78 LOG PERSONALIZADO Tratando ACL Com essa nova funcionalidade podemos atrelar um arquivo de log para cada acl como abaixo. logformat LOG_DOMINIOS_LIBERADOS IP do cliente: %>a - Username: %un - Horario: [%tl] - Metodo: %rm - URL: %ru - Status HTTP: shs - Status Squid: %Ss acl DOMINIOS_LIBERADOS dstdomain "/etc/squid3/acls/dominios_liberados.acl" access_log /var/log/squid/dominios_liberados.log LOG_DOMINIOS_LIBERADOS DOMINIOS_LIBERADOS Desta forma todo o acesso que casar com a acl DOMINIOS_LIBERADOS será gravado no arquivo de log /var/log/squid/dominios_liberados.log com o formato definido em LOG_DOMINIOS_LIBERADOS

67/78 AUTENTICAÇÃO - NCSA #locate ncsa #cd /etc/squid3 #touch squidpasswd #aptitude install apache2-utils #htpasswd squidpasswd reisfa #vim squid.conf auth_param basic realm Squid-digite uma senha auth_param basic program /usr/lib/squid3/ncsa_auth /etc/squid3/squidpasswd acl autenticados proxy_auth REQUIRED http_access allow autenticados http_access allow localhost

68/78 AUTENTICAÇÃO #squid3 -k reconfigure

69/78 BANNER FILTER O bannerfilter faz o bloqueio de diversos banners de publicidade; Influencia na navegabilidade; Evita que usuário cliquem em links possivelmente contaminados; #wget http://phroggy.com/files/unix/bannerfilter-1.31.tar.gz # tar zxvf bannerfilter-1.31.tar.gz # cd bannerfilter-1.31

70/78 BANNER FILTER Mova o conteúdo do diretório www para algum lugar acessível em seu Web server. Esses arquivos PRECISAM estar acessíveis ao squid via HTTP. Mova todo o resto para /etc/squid3/bannerfilter ou /usr/local/squid3/etc/bannerfilter Edite o redirector.pl. Se você não tem o perl no local padrão (/usr/bin/perl), mude a primeira linha (ou crie um symlink). Mude as variáveis $DATA e $WWW como indicado nos comentários. Opcionalmente, mude também $LOG e $BANNERGIF como indicado. Teste o redirector.pl rodando-o (perl redirector.pl), digite alguma coisa e veja se recebe essa coisa de volta.. #perl redirector.pl Pressione Crtl-C para parar.

71/78 BANNER FILTER Editando o squid.conf Procure pela seção que fala sobre redirect (TAG: redirect_program) e insira a linha: #vim /etc/squid3/squid.conf redirect_program /etc/squid/bannerfilter/redirector.pl ou redirect_program /usr/local/etc/bannerfilter/redirector.pl

72/78 SQUIDGUARD #aptitude install squidguard # wget -c http://squidguard.mesd.k12.or.us/blacklists.tgz # wget -c http://www.shallalist.de/downloads/shallalist.tar.gz # cp blacklists.tgz shallalist.tar.gz /var/lib/squidguard/db/ # cd /var/lib/squidguard/db/ # tar zvxf blacklists.tgz # tar zxvf shallalist.tar.gz

73/78 SQUIDGUARD # vim /etc/squid/squidguard.conf dbhome /var/lib/squidguard/db/blacklists logdir /var/log/squid dest porn { domainlist porn/domains urllist porn/urls } dest proxy { domainlist proxy/domains urllist proxy/urls } acl { default { pass!porn!proxy all redirect http:// } }

74/78 SQUIDGUARD # squidguard -C all # cd /var/lib/squidguard # pwd /var/lib/squidguard # chown -R proxy.proxy db/ # find db/ -type f xargs chmod 644 # find db/ -type d xargs chmod 755

75/78 SQUIDGUARD #cd /etc/squid3 #vim /etc/squid3/squid.conf redirect_program /usr/bin/squidguard redirect_children 8 redirector_bypass on #/etc/init.d/squid3 restart #squidguard -C all #squid3 -k reconfigure #tail -f /var/log/squid/squidguard.log

76/78 PROXY TRANSPARENTE # modprobre iptables_nat # iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE # echo 1 > /proc/sys/net/ipv4/ip_forward # iptables -t nat -A PREROUTING -i eth0 -p tcp dport 80 -j REDIRECT to-port 3128 # iptables -A INPUT -m tcp -p tcp -s!127.0.0.1 dport 3128 -j DROP # vim /etc/squid3/squid.conf http_port ip:porta transparent D

77/78 PERGUNTAS

78/78 SEMANA DE REDES DE COMPUTADORES 2015 SQUID UMA SOLUÇÃO DE PROXY PARA AMBIENTES HETEROGÊNEOS Flávio Alexandre dos Reis reis.falexandre@gmail.com