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



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

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

SQUID Linux. Rodrigo Gentini

Prof. Samuel Henrique Bucke Brito

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

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

Servidor proxy - Squid PROFESSOR : RENATO WILLIAM

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

Instalação e configuração do serviço web Apache.

Firewall iptables e criação de regras.

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

III WTR do POP-BA III Workshop de Tecnologias de Redes Ponto de Presença da RNP na Bahia Instrutor: Ibirisol Fontes Monitor: Jundaí Abdon.

Administração de Sistemas Operacionais

IPTABLES. Helder Nunes

TUTORIAL DE SQUID Versão 3.1

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

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

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

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

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

Entendendo como funciona o NAT

PROJETO DE IMPLEMENTAÇÃO DE UM SERVIDOR FIREWALL LIVRE UTILIZANDO IPTABLES

Relatório SQUID e SAMBA. Instalação e Configuração de Servidores de Rede

Senha Admin. Nessa tela, você poderá trocar a senha do administrador para obter acesso ao NSControl. Inicialização

PRÁTICA DE DNS - LINUX DIFERENÇAS NO ROTEIRO EM RELAÇÃO A IMAGEM DO DVD 1.A) INSTALAÇÃO DO SERVIDOR DNS INICIALIZAÇÃO DO AMBIENTE DO DVD

ADMINISTRAÇÃO DE REDES I LINUX. Firewall. Frederico Madeira LPIC 1, CCNA fred@madeira.eng.br

Segurança de Redes. Firewall. Filipe Raulino

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

Edital 012/PROAD/SGP/2012

Guia de instalação para ambiente de Desenvolvimento LINUX

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

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

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

Pré-requisitos e passos iniciais. Topologia visual

Firewall - IPTABLES. Conceitos e Prática. Tópicos em Sistemas de Computação Prof. Dr. Adriano Mauro Cansian adriano@acmesecurity.

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

Passo 1: Abra seu navegador e digite Passo 2: Na tela que surgir, clique em Get Started.

Prof. Samuel Henrique Bucke Brito

Mecanismos de QoS em Linux Hierarchical Token Bucket (HTB)

TuxFrw 3.0 MSPF Modular Stateful Packet Filter

Compartilhamento da internet, firewall

Passo a Passo da instalação da VPN

Tutorial, Instalando e configurando o apache no linux.

Obs: Endereços de Rede. Firewall em Linux Kernel 2.4 em diante. Obs: Padrões em Intranet. Instalando Interface de Rede.

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

Segurança em Sistemas de Informação

02-Configurando um Servidor DHCP. Prof. Armando Martins de Souza

Lazarus pelo SVN Linux/Windows

Configuração de um servidor FTP. Campus Cachoeiro Curso Técnico em Informática

Sarg Proxy transparente

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

GUIA PRÁTICO DE INSTALAÇÃO

Servidor Proxy armazenamento em cache.

TUTORIAL INSTALAÇÃO UBUNTU SERVER COM THUNDERCACHE

Ilustração 1: Componentes do controle de acesso IEEE 802.1x

Segurança de Redes de Computadores

Entrar neste site/arquivo e estudar esse aplicativo Prof. Ricardo César de Carvalho

01 - Entendendo um Firewall. Prof. Armando Martins de Souza armandomartins.souza@gmail.com


Autor: Armando Martins de Souza <armandomartins.souza at gmail.com> Data: 12/04/2010

Acesso Remoto Placas de captura

Prática DNS. Edgard Jamhour

Uso do iptables como ferramenta de firewall.

Manual de Instalação do Agente Citsmart

SUMÁRIO 1. AULA 6 ENDEREÇAMENTO IP:... 2

Trabalhando com NAT no PFSense

Sistema Operacional Unidade 12 Comandos de Rede e Acesso Remoto

FIREWALL COM IPTABLES. by João Eriberto Mota Filho 3. TABELAS. Tabela Filter ESQUEMA DA TABELA FILTER

Firewalls, um pouco sobre...

Manual Captura S_Line

Configurando um servidor DHCP

L A B O RATÓRIO DE REDES

cio Roteamento Linux

Atualizaça o do Maker

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

Manual do Visualizador NF e KEY BEST

MANUAL DE UTILIZAÇÃO

Web Design Aula 11: Site na Web

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

Omega Tecnologia Manual Omega Hosting

Instalação Apache + MySQL + PHPMyAdmin CentOS

Curso de extensão em Administração de sistemas GNU/Linux: redes e serviços

Na tela dele, clique no sinal de + ao lado do nome do seu computador, para expandi-lo. A seguir, expanda também o item "Sites da web".

LABORATÓRIO 0 Revisão GNU/Linux

Configurando o IIS no Server 2003

MANUAL DO ADMINISTRADOR

Firewall e Proxy. Relatório do Trabalho Prático nº 2. Segurança em Sistemas de Comunicação

MANUAL PORTAL CLIENTE AVANÇO

Orientador de Curso: Rodrigo Caetano Filgueira

III WTR do POP-BA III Workshop de Tecnologias de Redes Ponto de Presença da RNP na Bahia Instrutor: Ibirisol Fontes Monitores: Jundaí Abdon.

Maker Planet Manual do Usuário

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

DarkStat para BrazilFW

Integração entre o IBM HTTP SERVER, APACHE WEB Server e IBM Websphere Application Server

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

Iptables. Adailton Saraiva Sérgio Nery Simões

Desenvolvendo Websites com PHP

Transcrição:

Serviço proxy Squid agosto/2015 Instalação e configuração do serviço proxy Squid. 1 Serviço proxy Serviço proxy é um representante do cliente web, que busca na internet o conteúdo requisitado por este. Desse modo, o serviço proxy se situa como um intermediário entre o cliente web [navegador] e o serviço web na internet. Por exemplo, quando determinado cliente solicita alguma página em www.jairo.pro.br, o serviço proxy busca essa página na internet e a entrega ao cliente, atendendo à solicitação. Um serviço proxy normalmente é usado com as seguintes funções: cache: uma vez atandida à solicitação de determinado cliente, o arquivo que foi buscado na internet é guardado no cache, então quando o próximo cliente solicitar esse mesmo conteúdo o servidor proxy não precisará buscar na internet de novo, pois já tem no cache. Isso agiliza o acesso à internet e economiza banda de dados [link] de acesso à internet; regras de filtragem: como o proxy centraliza as atividades de acesso à internet, basta aplicar filtros de acesso a conteúdo no serviço proxy que irá afetar a todos os clientes web. 2 Proxy Squid Squid é um serviço proxy e daemon cache web. É usado principalmente no acesso HTTP, HTTPS e FTP. O proxy Squid é popular devido a sua performance, economia e recursos avançados. Sabendo que a maior parte do consumo de linque de dados com a internet é HTTP, então o uso do Squid pode proporcionar uma economia de cerca de 50% nesse consumo. proxy server internet clientes web Serviço proxy Squid www.jairo.pro.br 1/15

3 Instalação do proxy Squid Essa instalação também será standalone. Para descobrir se o serviço Squid está instalado, procurar pelo seu script de inicialização em /etc/init.d: shell# ls /etc/init.d grep squid /etc/init.d/squid Se não houver saída no comando acima é indicativo de que o serviço squid não está instalado. Nesse caso, instalar com o comando yum: shell# yum install squid Num Ubuntu, o comando para instalar seria "apt-get install squid squid-common". Após instalado, verificar se existem os seguintes arquivos: shell# file /etc/init.d/squid /etc/init.d/squid: Bourne shell script text executable shell# file /usr/sbin/squid /usr/sbin/squid: ELF 32-bit LSB shared object, Intel 80386, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.18, stripped shell# file /etc/squid /etc/squid: directory onde: /etc/init.d/squid: é o script de inicialização do serviço squid; /usr/sbin/squid: é o executável que dará origem ao processo daemon; /etc/squid: é o diretório de configuração do serviço squid. 4 Configuração do serviço Serviço proxy Squid www.jairo.pro.br 2/15

Inicialmente, olhar as configurações de instalação do serviço. Para isso, entrar no diretório /etc/squid: shell# cd /etc/squid shell# ls squid.conf O arquivo de configuração do serviço é "squid.conf". Num Ubuntu, o diretório é /etc/squid3. shell# more squid.conf Porém, esse arquivo tem quase 5000 linhas, então procurar alguma coisa olhando linha a linha não é boa ideia. E dessas quase 5000 linhas, a maior parte são comentários ou linha em branco. Desse modo, visualizar o conteúdo do arquivo sem linhas de comentário e sem linhas em branco ajuda muito, e isso é obtido com o comando abaixo: shell# grep -v "^#" squid.conf grep -v "^$" more Nesse comando, "^#" é a expressão regular para encontrar o comentário [cerquilha, #] no início da linha e "^$" é a expressão regular para linha em branco. No comando grep, a opção -v é para inverter a busca, nesse caso então vai mostrar apenas as linhas que não iniciam por cerquilha nem são linhas em branco. Nesse momento, duas configurações merecem atenção: http_port 3128 visible_hostname aluno => é a porta de serviço onde o cliente é atendido; => é o nome que será enviado para o cliente. Também é necessário verificar se existem as seguintes linhas de configuração: acl localnet src 10.0.0.0/8 acl localnet src 172.16.0.0/12 acl localnet src 192.168.0.0/16 http_access allow localnet => acl 1 que declara o endereço da rede interna, onde estão os clientes que vão usar o serviço proxy; => rede interna; => rede interna; => permite aos clientes da rede 1 acl: access control list, ou lista de controle de acesso. Serviço proxy Squid www.jairo.pro.br 3/15

interna usar o serviço proxy; acl blacklist url_regex -i "/etc/squid/blacklist"=> acl que define uma lista com endereços de determinados sites no arquivo /etc/squid/blacklist. Nesse arquivo, podem ser declaradas também expressões regulares, isso para facilitar e não precisar escrever o nome completo dos sites; http_access deny blacklist => bloqueia o acesso aos sites cadastrados na acl blacklist. A posição da linha de configuração no arquivo squid.conf é importante, senão não funciona. Desse modo, num arquivo com cerca de 5000 linhas, fica difícil configurar. Então, para não perder tempo, o melhor é baixar do site www.jairo.pro.br um arquivo tar.gz que já tem tudo isso pronto. Conforme aulas anteriores, será usado o comando wget para baixar essas configurações. E como estamos num laboratório de informática debaixo de um proxy que exige autenticação, então é necessário instruir 2 essa aplicação a usar o proxy da Uninove. Isso é feito pela configuração da variável http_proxy, com o comando export: shell# export http_proxy=http://ra:senha@186.251.39.196:3128 Onde RA é o RA do aluno, SENHA é a senha de acesso do usuário, 186.251.39.196 é o endereço IP do serviço proxy e 3128 é a porta do serviço. Depois disso, é só entrar no diretório /tmp e baixar o arquivo squid26.tar.gz com wget: shell# cd /tmp shell# wget www.jairo.pro.br/squid26.tar.gz --2012-09-16 12:54:53-- http://www.jairo.pro.br/squid26.tar.gz Resolving www.jairo.pro.br... 187.73.33.34 Connecting to www.jairo.pro.br 187.73.33.34 :80... connected. HTTP request sent, awaiting response... 200 OK Length: 49522 (48K) [application/x-gzip] Saving to: squid26.tar.gz.2 100%[==================================>] 49,522 130K/s in 0.4s 2012-09-16 12:54:54 (130 KB/s) - squid26.tar.gz saved [49522/49522] 2 Instruir o cliente: no caso do wget, basta apenas carregar a variável http_proxy, porém num navegador é necessário configurá-lo para usar determinado proxy. Serviço proxy Squid www.jairo.pro.br 4/15

Num Ubuntu, baixar o arquivo squid31.tar.gz. Agora, descompactar o arquivo squid26.tar.gz e extrair o seu conteúdo: shell# gunzip squid26.tar.gz shell# tar -xvf squid26.tar squid26/ squid26/accept_ssh3.sh squid26/squid.conf squid26/transp.sh squid26/blacklist squid26/clean.sh squid26/accept_ssh.sh squid26/accept_ssh2.sh squid31.tar.gz contém os arquivos squid.conf, clean.sh, transp.sh, transp1.sh, transp2.sh, accept_ssh.sh, accept_ssh2.sh, accept_ssh3.sh e blacklist. A extração do conteúdo de squid26.tar.gz cria o diretório /tmp/squid26. Entrar nesse diretório com o comando cd: shell# cd squid26 shell# ls accept_ssh2.sh accept_ssh3.sh accept_ssh.sh blacklist clean.sh squid.conf transp.sh No Ubuntu, o diretório é squid31. Dessa extração obtivemos sete arquivos, porém nesta aula serão usados somente quatro: blacklist, clean.sh, squid.conf e transp.sh. Para saber as diferenças entre o arquivo squid.conf baixado de www.jairo.pro.br e o que está instalado em /etc/squid, usar o comando diff: shell# diff squid.conf /etc/squid/squid.conf O comando diff mostra apenas as linhas que são diferentes entre os arquivos comparados. No caso, vai mostrar que o arquivo squid.conf baixado de www.jairo.pro.br contém as configurações mencionadas acima. Uma configuração que precisa ser acertada em squid.conf é cache_peer pois o proxy da Uninove, no IP 186.251.39.196, exige autenticação também do serviço proxy que estamos configurando. Serviço proxy Squid www.jairo.pro.br 5/15

Desse modo, precisa acertar a seguinte linha de configuração: === squid.conf ========================================================== cache_peer 186.251.39.196 parent 3128 0 no-query default proxy-only login=ra:senha ====================================================================== Nessa configuração, onde está RA deve ser alterado para o RA do aluno, e onde está SENHA deve ser alterado para a senha do aluno. Assim, quando o proxy que estamos configurando fizer requisições ao proxy da Uninove, o usuário e senha serão enviados para autenticar e liberar o acesso. O passo seguinte é copiar os arquivos squid.conf e blacklist baixados de www.jairo.pro.br para o diretório /etc/squid. Isso é feito com o comando cp: shell# cp squid.conf /etc/squid shell# cp blacklist /etc/squid Agora, é só iniciar o serviço proxy squid: shell# /etc/init.d/squid start Iniciando o squid: [ OK ] Depois disso, o scan de portas com nmap vai mostrar que a porta 3128 está aberta: shell# nmap localhost Starting Nmap 4.76 ( http://nmap.org ) at 2009-11-29 21:09 BRST Interesting ports on localhost (127.0.0.1): Not shown: 998 closed ports PORT STATE SERVICE 3128/tcp open squid-http Nmap done: 1 IP address (1 host up) scanned in 0.07 seconds E o comando ps vai mostrar que o daemon squid está rodando: shell# ps -ef grep squid root 4574 1 0 21:10? 00:00:00 squid -D -f /etc/squid/squid.conf squid 4576 4574 0 21:10? 00:00:00 (squid) -D -f /etc/squid/squid.conf Serviço proxy Squid www.jairo.pro.br 6/15

Notar que o processo daemon squid tem [nesse caso] PID 3 4574 e pertence ao usuário root, já os outros dois são processo filhos desse daemon e pertencem ao usuário squid. 5 Testar o acesso com a aplicação cliente wget Já que a aplicação wget baixa o arquivo do serviço web, ir para o diretório /tmp e de lá acessar o serviço squid em localhost. Porém, antes de comandar wget é necessário instruir 4 essa aplicação a usar o proxy e não ir direto ao site para baixar arquivo: shell# cd /tmp shell# export http_proxy=http://localhost:3128 onde o comando export http_proxy=http://localhost:3128 instrui o wget a usar o proxy squid em localhost, na porta 3128. Agora, é só testar o acesso via proxy: shell# wget www.jairo.pro.br --2009-11-29 21:23:30-- http://www.jairo.pro.br/ Resolvendo localhost... 127.0.0.1 A conectar localhost 127.0.0.1 :3128... conectado! Proxy requisição enviada, aguardando resposta... 200 OK Tamanho: 1979 (1,9K) [text/html] A gravar em: 'index.html' 100%[========================================>] 1.979 --.-K/s em 0,01s 2009-11-29 21:23:30 (141 KB/s) - 'index.html' gravado [1979/1979] 6 Arquivo de log de acesso do proxy O comando tail /var/log/squid/access.log mostra as últimas 10 linhas do arquivo de log do squid. Para verificar esses logs, antes comandar wget três vezes para acessar um mesmo site, e depois olhar o final do arquivo de log do squid: 3 PID: Process Identifier [identificador do processo, é um número atribuído ao processo] 4 Instruir o cliente: no caso do wget, basta apenas carregar uma variável, porém num navegador é necessário configurá-lo para usar determinado proxy. Serviço proxy Squid www.jairo.pro.br 7/15

Num Ubuntu, o diretório de logs é /var/log/squid3. shell# tail /var/log/squid/access.log 1259537010.549 266 127.0.0.1 TCP_MISS/200 2357 GET http://www.jairo.pro.br/ - DIRECT/187.16.23.138 text/html 1259537022.943 0 127.0.0.1 TCP_MEM_HIT/200 2364 GET http://www.jairo.pro.br/ - NONE/- text/html 1259537027.233 0 127.0.0.1 TCP_MEM_HIT/200 2364 GET http://www.jairo.pro.br/ - NONE/- text/html onde: TCP_MISS TCP_MEM_HIT informa que o arquivo ainda não existe no cache informa que o arquivo foi pego da memória [cache] Para testar, na prática, o ganho de velocidade no download, baixar um arquivo grande duas vezes: na primeira vez demora um pouquinho, na segunda já estará em cache e vai baixar bem mais rápido: shell# wget www.jairo.pro.br/servicos_redes/gnu-linux.pdf --2013-08-17 20:35:22-- http://www.jairo.pro.br/servicos_redes/gnu-linux.pdf Resolving www.jairo.pro.br... 187.73.33.34 Connecting to www.jairo.pro.br 187.73.33.34 :80... connected. HTTP request sent, awaiting response... 200 OK Length: 156873 (153K) [application/pdf] Saving to: gnu-linux.pdf 100%[====================================>] 156,873 137K/s in 1.1s 2013-08-17 20:35:23 (137 KB/s) - gnu-linux.pdf saved [156873/156873] shell# wget www.jairo.pro.br/servicos_redes/gnu-linux.pdf --2013-08-17 22:15:12-- http://www.jairo.pro.br/servicos_redes/gnu-linux.pdf Resolving www.jairo.pro.br... 187.73.33.34 Connecting to www.jairo.pro.br 187.73.33.34 :80... connected. HTTP request sent, awaiting response... 200 OK Length: 156873 (153K) [application/pdf] Saving to: gnu-linux.pdf 100%[====================================>] 156,873 137K/s in 0,006s 2013-08-17 22:15:13 (137 KB/s) - gnu-linux.pdf.1 saved [156873/156873] onde no primeiro download gastou 1,1 segundos, e no segundo apenas 0,006. No arquivo de log, aparece agora TCP_HIT [no segundo acesso] e não TCP_MEM_HIT pois o arquivo é grande [150KB]. Serviço proxy Squid www.jairo.pro.br 8/15

shell# tail /var/log/squid/access.log 1259537010.549 266 127.0.0.1 TCP_MISS/200 2357 GET http://www.jairo.pro.br/ - DIRECT/187.16.23.138 text/html 1259537022.943 0 127.0.0.1 TCP_MEM_HIT/200 2364 GET http://www.jairo.pro.br/ - NONE/- text/html 1259537027.233 0 127.0.0.1 TCP_MEM_HIT/200 2364 GET http://www.jairo.pro.br/ - NONE/- text/html 1259537032.139 72 127.0.0.1 TCP_MISS/200 156944 GET http://www.jairo.pro.br/redes/apost_redes.pdf - DIRECT/187.16.23.138 application/pdf 1259537039.134 4 127.0.0.1 TCP_HIT/200 156944 GET http://www.jairo.pro.br/redes/apost_redes.pdf - NONE/- application/pdf Analogamente ao caso de usar o serviço proxy em localhost, também poderia acessar esse serviço em outro servidor. Nesse caso, bastaria instruir o cliente a usar [por exemplo] o proxy no IP 192.168.1.10: shell# export http_proxy=http://192.168.1.10:3128 Depois, é só acessar algum site com wget que o proxy em 192.168.1.10:3128 irá atender a essa requisição. 7 Configurar lista de controle de acesso [acl] Uma acl 5 é uma lista de controle de acesso. É usado no Squid para filtro de acesso a conteúdo na web. A ideia aqui é implementar uma lista chamada "blacklist", que impede o acesso a URL 6 que contenha a string incluída nessa lista. Nesse arquivo, temos o seguinte conteúdo: ========== arquivo /etc/squid/blacklist ========================================.*amateur.*.*jogos.*.*vids.*.*cams.*.*webcam.*.*radiouol.*.*ninfa.*.*ninfet*.*lolita.*.*zoofilia.* 5 acl: access control list [lista de controle de acesso] 6 URL: Uniform Resource Locators [um endereço na web]. Serviço proxy Squid www.jairo.pro.br 9/15

.*safada.*.*virgem.*.*virgens.*.*playboy.*.*biscat.*.*voyeur.*.*proxy.*.*fotolog.* ======================================================================= então qualquer URL que contenha a string listada nesse arquivo será bloqueada. Agora, testar o acesso a algum site que contenha uma string em blacklist, por exemplo o site www.amateurs.com: shell# cd /tmp shell# wget www.amateurs.com --2009-11-29 23:07:38-- http://www.amateurs.com/ Resolvendo localhost... 127.0.0.1 A conectar localhost 127.0.0.1 :3128... conectado! Proxy requisição enviada, aguardando resposta... 403 Forbidden 2009-11-29 23:07:38 ERRO 403: Forbidden. No arquivo de log, irá aparecer a seguinte linha: ========== arquivo /var/log/squid/access.log =================================== 1259543258.726 0 127.0.0.1 TCP_DENIED/403 1810 GET http://www.amateurs.com/ - NONE/- text/html ======================================================================= 8 Proxy transparente Conforme foi visto, o cliente precisa ser instruído [ou configurado] para usar determinado proxy. Ora, então determinado usuário pode modificar as configurações no navegador [por exemplo] e não usar mais o proxy que filtra o conteúdo que ele gostaria de acessar. Também existe o caso de todos os navegadores estarem configurados para usar o proxy, e este repentinamente ficar inacessível. Isso exigiria reconfigurar todos os navegadores para permitir aos usuários continuarem navegando, que pode ser uma tarefa bem demorada dependendo do número de máquinas envolvidas. Para resolver esses dois casos, existe o proxy transparente. Serviço proxy Squid www.jairo.pro.br 10/15

Proxy transparente recebe esse nome por ser transparente ao cliente, que independentemente das configurações no seu navegador vai sempre ser obrigado a navegar servido pelo proxy. Para funcionar, o proxy transparente envolve configurar o firewall para redirecionar pacotes. Assim, toda vez que o cliente enviar pacotes de dados buscando conteúdo na internet, esses pacotes serão redirecionados para o proxy, que irá buscar esse conteúdo para o cliente. Evidentemente, também filtra o conteúdo solicitado pelo cliente. Client LAN Firewall internet Normalmente, o servidor que hospeda o serviço proxy fica na DMZ 7. DMZ Proxy No proxy transparente, se o serviço proxy fica inacessível basta modificar a regra de redirecionamento de pacotes no firewall que os clientes passarão a acessar a internet diretamente. Esta é uma solução rápida para garantir o acesso à internet em caso de falha do proxy. Para configurar um proxy transparente, no arquivo squid.conf é necessário retirar o comentário da linha http_port 3128 transparent e comentar a linha http_port 3128: ========== arquivo /etc/squid/squid.conf ====================================== http_port 3128 transparent # http_port 3128 ======================================================================= Essa configuração só é válida a partir da versão 2.6 do Squid. Depois disso, reiniciar o serviço para a configuração tomar efeito. Vamos estudar duas topologias: firewall e proxy na mesma máquina e firewall e proxy em máquinas diferentes, sendo essa última a que de fato normalmente é usada num ambiente em produção. 8.1) Firewall e proxy na mesma máquina No arquivo squid26.tar.gz baixado de www.jairo.pro.br, além de squid.conf, também está incluído o script transp.sh que vai ser usado para aplicar as regras no proxy transparente. Abaixo, segue o conteúdo do arquivo transp.sh: === arquivo transp.sh =================================================== #!/bin/bash 7 DMZ: Vem da expressão DeMilitarized Zone, ou zona desmilitarizada, pois pode ser acessada da internet. A LAN não pode ser acessada da internet. Na DMZ, além do proxy costumam ficar os serviços de e-mail, DNS e web. Serviço proxy Squid www.jairo.pro.br 11/15

# regras de firewall para proxy transparente # pre-requisitos: # 1 - proxy Squid configurado para proxy transparente; # 2 - os clientes que terao os pacotes redirecionados para o proxy precisam # ter como default gateway o endereco IP da maquina firewall. DNS_SERVER="186.251.39.194" LAN_ADDR="192.168.1.0/24" # inicialmente, remover todas as regras anteriores [F: flush, X: delete]. iptables -F iptables -t nat -F iptables -t mangle -F iptables -X iptables -t nat -X iptables -t mangle -X # regra padrao para primeiro bloquear tudo, depois liberar o que for necessario #iptables -P INPUT DROP #iptables -P OUTPUT DROP #iptables -P FORWARD DROP # permitir o roteamento de pacotes no kernel Linux. echo 1 > /proc/sys/net/ipv4/ip_forward # redirecionamento de pacotes para o servico DNS na porta 53. iptables -t nat -A PREROUTING -p tcp --dport 53 -j DNAT --to $DNS_SERVER:53 # redirecionamento de pacotes para o servico proxy na porta 3128. iptables -t nat -A PREROUTING -s $LAN_ADDR -p tcp --dport 80 -j REDIRECT --to-port 3128 # caso do servico proxy em maquina diferente do firewall, habilitar essa regra TAMBEM # iptables -t nat -A PREROUTING -s $LAN_ADDR -p tcp --dport 80 -j DNAT --to 10.102.1.221:3128 ===================================================================== Nesse script, é necessário acertar: o IP do serviço DNS na variável DNS_SERVER; o endereço da rede onde estão firewall e cliente do serviço proxy, na variável LAN_ADDR. Convém notar que esse script foi projetado para um caso de uma máquina com apenas uma interface de rede, que é o que ocorre nos laboratórios acadêmicos. Num caso mais realista, seria necessário duas interfaces de rede. Antes de disparar o script transp.sh para impor as regras de redirecionamento de pacotes, fazer um scan de portas na máquina firewall. Isso irá mostrar que a porta 80 está fechada. Depois, executar o script transp.sh: Serviço proxy Squid www.jairo.pro.br 12/15

shell# /tmp/squid26/transp.sh Num Ubuntu, o comando é /tmp/squid31/transp.sh. Depois de disparado o script, fazer de novo o scan de portas na máquina firewall e observar que a porta 80 agora está aberta. Isso é devido à ação de redirecionamento de pacotes, e não que tenha sido instalado um serviço web nessa máquina. Para o cliente testar o acesso ao proxy transparente, usar duas maneiras distintas: a) apenas configurando a variável http_proxy para a porta 80; b) alterando a rota default na máquina cliente. No caso (a), carregar um novo valor na variável http_proxy, para usar a porta 80 e não mais a 3128. Ao carregar um novo valor numa variável, caso houvesse, o valor antigo seria perdido. shell_cliente$ export http_proxy=http://192.168.1.10:80 onde: O endereço IP da máquina firewall é 192.168.1.10 [o cliente está no IP 192.168.1.12]. Agora, o cliente testa o acesso com o comando wget e observa que o proxy busca a página. Ou seja, embora esteja usando a porta 80 e não 3128, mesmo assim o cliente foi atendido pelo proxy. Isso é devido ao redirecionamento de pacotes no firewall. No caso (b), na máquina cliente não será mais usado configuração na variável http_proxy para acessar a internet através do proxy. E para esvaziar o valor que havia na variável http_proxy, usar o comando unset: shell_cliente$ unset http_proxy Desse modo, a variável http_proxy vazia não instrui mais o cliente a acessar o proxy. Para confirmar que a variável http_proxy está mesmo vazia, comandar: Se não houver saída no comando acima, isso indica que a variável está mesmo vazia. shell_cliente$ echo $http_proxy Mas, além disso, precisa remover a rota default gateway do cliente e incluir uma nova, que Serviço proxy Squid www.jairo.pro.br 13/15

passará a apontar para o IP da máquina firewall. Para isso, na máquina cliente [192.168.1.12], o usuário precisa virar root para excluir a rota default antiga e incluir uma nova rota default. Para virar root é usado o comando "sudo su -", e para excluir e incluir rota é usado o comando route: shell_cliente$ sudo su - [sudo] password for aluno: shell_cliente_root# route del default shell_cliente_root# route add default gw 192.168.1.10 eth0 shell_cliente_root# exit shell_cliente$ Por fim, testar o acesso com wget: shell_cliente$ wget www.jairo.pro.br O comando acima baixa o arquivo através do proxy, pelo redirecionamento de pacotes imposto pelo script transp.sh na máquina firewall [que é a mesma que hospeda o serviço proxy]. Por fim, na máquina firewall [192.168.1.10], retirar as regras de redirecionamento de pacotes para demonstrar que a partir daí o cliente não irá mais acessar a internet. Para isso, usar o script clean.sh: shell#./clean.sh E na máquina cliente [192.168.1.12], testar o acesso de novo com wget. Agora não deverá conseguir acessar, pois no firewall não existe mais redirecionamento de pacotes. Convém notar que, num caso mais realista, todas as máquinas da LAN têm como default gateway o switch ou roteador na rede, e que a partir daí os roteadores levam os pacotes de dados para o firewall. Isso é o equivalente a ter configurado na máquina cliente o endereço IP da máquina firewall como default gateway. 8.2) Firewall e proxy em máquinas diferentes Até aqui, já sabemos que o firewall está no IP 192.168.1.10 e que o cliente do serviço proxy está no IP 192.168.1.12. Agora, vamos disponibilizar o proxy transparente na máquina 192.168.1.11 e não mais em Serviço proxy Squid www.jairo.pro.br 14/15

192.168.1.10. Para instalar e configurar o proxy transparente na máquina 192.168.1.11 basta seguir os mesmos procedimentos já descritos acima. O que muda, é na máquina firewall editar o arquivo transp.sh e tirar o comentário da última linha de configuração: === arquivo transp.sh ===================================================... # caso do servico proxy em maquina diferente do firewall, habilitar essa regra TAMBEM iptables -t nat -A PREROUTING -s $LAN_ADDR -p tcp --dport 80 -j DNAT --to 192.168.1.11:3128 ===================================================================== Aqui, foi configurado o endereço 192.168.1.11 para o serviço proxy transparente. Feito isso, basta disparar novamente o script transp.sh que as novas regras tomam efeito. Agora, no cliente [192.168.1.12], acessar novamente com wget: shell_cliente$ wget www.jairo.pro.br O comando acima baixa o arquivo através do proxy em 192.168.1.11, pelo redirecionamento de pacotes imposto pelo script transp.sh na máquina firewall. Serviço proxy Squid www.jairo.pro.br 15/15