• Nenhum resultado encontrado

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

N/A
N/A
Protected

Academic year: 2021

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

Copied!
78
0
0

Texto

(1)

SQUID

____________________________________________

SEMANA DE REDES DE COMPUTADORES

2015

FACULDADE ESTÁCIO DE SÁ

UMA SOLUÇÃO DE PROXY PARA

AMBIENTES HETEROGÊNEOS

(2)

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)
(4)

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,

(5)

5/78

INTRODUÇÃO

? %

? %

? %

SEGURANÇA

RISCO

DISPONIBILIDADE

(6)

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)

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)

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)
(10)
(11)

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.

(12)

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)
(14)

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

(15)

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)
(17)

17/78

SERVIDORES PROXY

Se você chegou até aqui é porque está realmente interessado em colocar

seu servidor no ar.

O que é um proxy ?

(18)

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)

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

(20)

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

(21)

21/78

APLICAÇÕES

Cache

Autenticação

Lista de Controle de Acesso 

Controle de Banda

(22)

22/78

INSTALAÇÃO

#aptitude search squid3

(23)

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)

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

(25)

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)

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)

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)

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)

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

(30)

30/78

SQUID.CONF

# cat squid.conf

B

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)

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)

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)

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.

(34)

34/78

NAVEGADORES

(35)

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 ”

(36)

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)

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)

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

(39)

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)

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.

(41)

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.

(42)

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

(43)

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.

(44)

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

(45)

45/78

CRIANDO ACLS

# cd /etc/squid3

# pwd

# mkdir acls

# cd acls

– Controle de Acesso por IP

(46)
(47)

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

(48)

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)

49/78

SITE SEM CACHE

# cd /etc/squid3 # vim squid.conf

acl SITE dstdomain www.site-sem-chace.com.br no_cache deny SITE

(50)

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)

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)

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)

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

(54)
(55)

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:

(56)

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:

(57)

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):

(58)

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

(59)

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)

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)

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)

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)

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

(64)

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://www.reisfa.eti.br/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)

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://www.reisfa.eti.br/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://www.reisfa.eti.br/site/wp-content/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:

(66)

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)

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)

68/78

AUTENTICAÇÃO

(69)

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

(70)

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..

(71)

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

(72)

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

(73)

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

(74)

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)

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)

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

(77)
(78)

78/78

SQUID

UMA SOLUÇÃO DE PROXY PARA

AMBIENTES HETEROGÊNEOS

Flávio Alexandre dos Reis

reis.falexandre@gmail.com

www.reisfa.eti.br

SEMANA DE REDES DE COMPUTADORES

2015

Referências

Documentos relacionados

É perceptível, desta forma, o constante aumento do aprofundamento dos personagens: os “príncipes” têm agora não só nome e falas, mas personalidades bem desenvolvidas,

Espera-se que o produto seja rapidamente biodegradado, entretanto, concentrações elevadas como em caso de derramamento, podem causar toxicidade aos organismos do solo.. Comentários:

O axiliar modal dever, como se apresenta nas seguintes sentenças, pode comportar tanto interpretação de raíz quanto interpretação epistêmica, como já fora

- Se o estagiário, ou alguém com contacto direto, tiver sintomas sugestivos de infeção respiratória (febre, tosse, expetoração e/ou falta de ar) NÃO DEVE frequentar

A água teve uma benéfica mudança com a chegada das águas da transposição do Rio São Francisco e de acordo com os parâmetros analisados, a água poderá ser consumida

Estimativa dos coeficientes da regressão binomial negativa, erro padrão e p-valores para o efeito do grau de disfunção neurológica sobre o total de células nucleadas (TCN)

No modo de funcionamento Ar quente plus   pode assar com temperaturas mais baixas do que no modo de funcio- namento Aquecimento superior/infe- rior  , já que o calor

Aguarda-se seja determinada a citação da parte contrária para que pague o débito total atualizado com juros e correção monetária, de acordo com a legislação vigente, além de