Squid
Upcoming SlideShare
Loading in...5
×
 

Squid

on

  • 19,092 views

 

Statistics

Views

Total Views
19,092
Views on SlideShare
19,088
Embed Views
4

Actions

Likes
3
Downloads
608
Comments
1

1 Embed 4

http://www.f2suporte.com 4

Accessibility

Categories

Upload Details

Uploaded via as Microsoft Word

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
  • estou gostando deste site, está me ajudando muito, obrigada.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

Squid Squid Document Transcript

  • Configurando um proxy-cache usando o squid no ubuntu e debian (básico) Postado em Linux (OS) Network(Servidores) Por julio em 8/06/08 Esse tutorial eu irei ensinar a configurar o o básico do squid, que é um proxy-cache , que é uma ferramenta fundamental para admistradores de redes com tráfego extremos para ajudar a diminuir o consumo do link. Um exemplo prático, se 10 usuários ascessarem o mesmo Web site ele na verdade será carregado apenas uma vez no servidor de proxy , diminuindo o tráfego do link, que na maioria das vezes não é muito largo. outro exemplo se 10 usuários baixarem 10 vezes um arquivo, ele só vai ser realmente baixado 1 vez , o resto vai vir do cache do proxy, isso se aplica a imagens vídeos e outras coisas . Para esse tutorial é importante que você saiba o básico de comandos do console e da estrutura de diretórios e inicialização de programas em modo texto (console) recomendo ler o guia foca se quiser se aprofundar no mundo do software livre . Outra coisa , aprenda a usar o google , ele sempre lhe trará respostas , antes mesmo de postar em foruns e listas. Bem vamos começar . Passos que vão ser feitos nesse tutorial. 1.Instalar o programa . 2.Criar o arquivo ip_Liberados dentro do diretório /etc/squid/ 3.Renomear a conf padrão . 4.Baixar e descompactar a conf que eu editei . 5.Reiniciar o squid 6.Habilitar o proxy no navegador 7.Testar ver se está funcionando corretamente. 8.Duvidas consultar o google . Vamos instalar o squid . No ubuntu . sudo apt-get install squid No debian como root. apt-get install squid A conf padrão dele fica no diretório. /etc/squid se chama squid.conf /etc/squid/squid.conf Dica! caso você queira tirar os comentários # do arquivo squid.conf cat squid_original.conf | grep -v ^# | uniq | tee squid.conf Então vamos primeiro criar um aquivo e no qual vamos inserir os Ips que desejamos liberar no proxy, para evitar o uso de seu proxy na internet . sudo touch /etc/squid/ip_Liberados ou no debian # touch /etc/squid/ip_Liberados E vamos iserir os ips que desejamos . para saber o ip da sua máquina
  • sudo ifconfig julio6@Ubuntu-Desktop:~$ sudo ifconfig [sudo] password for julio6: eth0 Encapsulamento do Link: Ethernet Endereço de HW 00:15:F2:2B:98:52 inet end.: 192.168.254.20 Bcast:192.168.254.255 Masc:255.255.255.0 endereço inet6: fe80::215:f2ff:fe2b:9852/64 Escopo:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Métrica:1 pacotes RX:65393 erros:0 descartados:0 excesso:0 quadro:0 Pacotes TX:60230 erros:0 descartados:0 excesso:0 portadora:0 colisões:0 txqueuelen:1000 RX bytes:64778657 (61.7 MB) TX bytes:9155948 (8.7 MB) IRQ:18 Endereço de E/S:0xb000 Vamos editar o arquivo que criamos e vamos inserir os ips que desejamos . sudo nano /etc/squid/ip_Liberados No meu caso esses. 192.168.254.1 192.168.254.20 192.168.254.2 192.168.254.3 192.168.254.4 192.168.254.5 192.168.254.15 O squid já vem com a conf dele padao e pronta para usar Agora eu vou mostrar a conf abaixo editada por min . ################################ ############Porta Padrão ##################### http_port 3128 ######################################### hierarchy_stoplist cgi-bin ? acl QUERY urlpath_regex cgi-bin ? cache deny QUERY ####### Caso exista o Apache evita conflitos ############# acl apache rep_header Server ^Apache broken_vary_encoding allow apache ############Logs do Squid###################### access_log /var/log/squid/access.log squid cache_log /var/log/squid/cache.log squid ############ verifica o arquivo de Host da maquina ######## hosts_file /etc/hosts ########################################### ############Configuração do cache################## ############tamanho do cache coloque o melhor pra seu uso # cache_mem 10 GB ############ tamanho maximo de arquivos na memoria #### maximum_object_size_in_memory 128 KB ############ tamanho maximo do arquivo no cache ####### maximum_object_size 300 MB minimum_object_size 0 KB cache_swap_low 90
  • cache_swap_high 95 ########################################### ############Regras de Liberar O seu IP ############### ############ Proteger a sua rede de usos externos ao squid ### ############Acl que consulta o arquivo ########## acl Libera_IP src “/etc/squid/ip_Liberados” ############ Regra que libera a acl Libera_IP ####### http_access allow Libera_IP ###################################### ############Log de erros em Portugues########## ###################################### error_directory /usr/share/squid/errors/Portuguese ####################################### ############Atualizar Cache################## ####################################### refresh_pattern ^ftp: 1440 20% 10080 refresh_pattern ^gopher: 1440 0% 1440 refresh_pattern . 0 20% 4320 ############Faixa da rede interna ############## acl all src 0.0.0.0/255.255.255.0 ####################################### acl manager proto cache_object acl localhost src 127.0.0.1/255.255.255.255 acl to_localhost dst 127.0.0.0/8 ############Partas do SSL padrão ############# acl SSL_ports port 443 # https acl SSL_ports port 563 # snews acl SSL_ports port 873 # rsync ############ Portas Liberadas ################## acl Safe_ports port 80 # http acl Safe_ports port 21 # ftp acl Safe_ports port 443 # https acl Safe_ports port 70 # gopher acl Safe_ports port 210 # wais acl Safe_ports port 1025-65535 # unregistered ports acl Safe_ports port 280 # http-mgmt acl Safe_ports port 488 # gss-http acl Safe_ports port 591 # filemaker acl Safe_ports port 777 # multiling http acl Safe_ports port 631 # cups acl Safe_ports port 873 # rsync acl Safe_ports port 901 # SWAT ########################################## acl purge method PURGE acl CONNECT method CONNECT http_access allow manager localhost http_access deny manager http_access allow purge localhost http_access deny purge ############Bloqueia todas as portas menos as sefe portas### http_access deny !Safe_ports ##########################################
  • http_access deny CONNECT !SSL_ports ############Libera Localhost##################### http_access allow localhost ############Bloquear todos ips e acessos externos ####### http_access deny all ############## Libera que recarregue as páginas######### http_reply_access allow all ############Libera consultas icpms ################# icp_access allow all ############################################ cache_effective_group proxy ############endereço de erros do cache ############### coredump_dir /var/spool/squid Baixe aqui a conf . No console. cd /etc/squid Renomeiar a conf padrão sudo mv squid.conf squid.conf-old wget http://www.xjulio.info/blog/squid.conf.tar.gz tar -xzvf squid.conf.tar.gz Reniciar o squid. # /etc/init.d/squid restart ou sudo /etc/init.d/squid restart Lembrando que a conf que vem no squid já é o suficiente, basta editar a parte que libera acessos externos . Para habilitar o proxy no navegador firefox . vai em preferências do navegador . E coloca o endereço de ip do seu proxy . Etapa 4: Realizar a instalação e configuração do servidor proxy squid O squid 2.6 pode ser instalado via apt-get, pois já possui suporte a NTLM nativo. Vamos ao que interessa: - Efetuando o Download e a Instalação # apt-get install squid
  • - Efetuando bkp do arquivo de configuração original # cd /etc/squid # mv squid.conf squid.original - Limpando todas as linhas comentadas do squid.original e gerando o squid.conf # egrep -v "^#|^$" squid.original > squid.conf - Gerando o diretório de logs e liberando as permissões # mkdir /var/log/squid # chown -R proxy.proxy /var/log/squid Editando o arquivo squid.conf e colocando as linhas abaixo (As linhas em vermelho são as linhas utilizadas pela autenticação) # nano /etc/squid/squid.conf http_port 3128 cache_effective_user proxy cache_effective_group proxy cache_log /var/log/squid/cache.log cache_access_log /var/log/squid/access.log cache_store_log /var/log/squid/store.log hierarchy_stoplist cgi-bin ? acl QUERY urlpath_regex cgi-bin ? no_cache deny QUERY auth_param ntlm program /usr/bin/ntlm_auth TESTE/DC01 –helper-protocol=squid-2.5-ntlmssp auth_param ntlm use_ntlm_negotiate off auth_param ntlm children 10 auth_param ntlm max_challenge_reuses 0 auth_param ntlm max_challenge_lifetime 5 minutes auth_param basic program /usr/bin/ntlm_auth TESTE/DC01 –helper-protocol=squid-2.5-basic auth_param basic children 5 auth_param basic realm Digite o LOGIN/SENHA auth_param basic credentialsttl 2 hours auth_param basic casesensitive off refresh_pattern ^ftp: 1440 20% 10080 refresh_pattern ^gopher: 1440 0% 1440 refresh_pattern .0 20% 4320 acl all src 192.168.88.0/255.255.255.0 acl manager proto cache_object acl localhost src 127.0.0.1/255.255.255.255 acl to_localhost dst 127.0.0.0/8 acl SSL_ports port 443 563 acl Safe_ports port 80 # http acl Safe_ports port 21 # ftp acl Safe_ports port 443 563 # https, snews acl Safe_ports port 70 # gopher acl Safe_ports port 210 # wais acl Safe_ports port 1025-65535 # unregistered ports acl Safe_ports port 280 # http-mgmt acl Safe_ports port 488 # gss-http acl Safe_ports port 591 # filemaker acl Safe_ports port 777 # multiling http acl CONNECT method CONNECT acl acesso proxy_auth REQUIRED # Solicitando a autenticação http_access allow manager localhost
  • http_access deny manager http_access deny !Safe_ports http_access deny CONNECT !SSL_ports http_access allow acesso # Liberando usuários autenticados http_access allow all http_reply_access allow all icp_access allow all coredump_dir /usr/local/squid/var/cache - Criando o cache e iniciando o squid. # squid -z # squid & - Para utilizar as regras baseadas em Grupos do Active Directory, utilize as seguintes linhas no seu squid.conf: external_acl_type nt_group %LOGIN /usr/lib/squid/wbinfo_group.pl acl AllowedWindowsGroups external nt_group GrupodoAD http_access allow AllowedWindowsGroups Depois de editar o seu squid.conf, não esqueça de recarregá-lo: # squid –k reconfigure Reiniciando: # /etc/init.d/squid restart Testes: Efetue a configuração do PROXY no navegador (Servidor Proxy: 192.168.0.1 Porta:3128) e tente acessar algum website. Monitoramento: Monitorando o arquivo de log de acessos do squid com o commando tail –f e vemos que o acesso foi liberado utilizando o usuário dunha, que é o usuário logado na estação de trabalho. # tail –f /var/log/squid/access.log 1172165029.325 756 192.168.0.10 TCP_MISS/200 9646 GET Instalação Para instalar o SARG no Ubuntu 10.04 LTS Lucid Lynx primeiramente vamos atualizar a lista de pacotes do Ubuntu. sudo apt-get update Após a atulização da listagem de pacotes, vamos instalar o pacote do SARG no Lucid. sudo apt-get install sarg Configuração do SARG no Ubuntu Após a instação é necessário configurar o SARG no Ubuntu 10.04 LTS Lucid Lynx para que o mesmo funcione corretamente. Acesse a pasta de configuração do SARG
  • cd /etc/sarg Abrir o arquivo de configuração do SARG com seu editor favorito, nos exemplos abaixo estarei usando o vim sudo vim sarg.conf Caso deseje alterar o idioma do SARG altere a linha: language English para language Portuguese Para que as páginas dos relatórios gerados pelo SARG sejam visualizadas no navegador, é necessário linkar a pasta de saída dos relatórios do SARG para a pasta do servidor web. sudo ln -s /var/lib/sarg /var/www/ Ao se executar o comando sudo sarg os relatórios são gerados, porém a seguinte mensagem de erro aparece na saída da linha de comando: SARG: Unknown option site_user_time_date_type table Para que a mesma não apareça, acesse o arquivo de configuração do SARG e comente a seguinte linha do arquivo: site_user_time_date_type table Para gerar os relatórios do SARG e verificar se tudo correu como esperado execute: sudo sarg Para verificar páginas de relatório geradas pelo SARG acesse no seu navegador: http:/ip-do-servidor//sarg SARG e o cron do Ubuntu Para que o SARG seja executado automáticamente todos os dias, gerando os relatórios de acesso do SQUID automaticamente é necessário alterar o arquivo /etc/cron.daily/sarg para que o mesmo execute o comando corretamente, para isso acesse o arquivo: sudo /etc/cron.daily/sarg O script de execução do SARG deve ficar conforme abaixo: #!/bin/sh if [ -x /usr/bin/sarg ]; then /usr/bin/sarg fi Para que o SARG execute antes do logrotate do SQUID é necessário alterar o nome do arquivo: sudo mv /etc/cron.daily/sarg /etc/cron.daily/ksarg Assim o script do SARG irá executar logo antes do script do logrotate, gerando os relátorios corretamente. Remover os scripts de executação semanal e mensal do SARG: sudo rm /etc/cron.weekly/sarg sudo rm /etc/cron.monthly/sarg
  • Aumentando a segurança Para aumentar a segurança dos relatórios do SARG, permitindo apenas usuários autorizados acessarem os mesmos, iremos fazer com que o servidor web peça um usuário e senha para acessar as páginas do SARG. Acesse a pasta com as de saída do SARG: cd /var/lib/sarg Crie o arquivo .htaccess nessa pasta: sudo vim .htaccess E, dentro do arquivo criado, coloque o seguinte conteúdo: AuthType Basic AuthName "Acesso restrito!" AuthUserFile /var/lib/sarg/.htpasswd require valid-user Agora iremos criar o arquivo contendo os usuários e as senhas com permissão para visualizar os relatórios do SARG: sudo htpasswd -c /var/lib/sarg/.htpasswd admin Após a executação do comando acima, será solicitado a senha e sua confirmação para o usuario admin. Agora iremos editar o arquivo de configuração do Servidor Web Apache sudo vim /etc/apache2/httpd.conf E adicione as seguintes linhas: #Relatorio SARG Alias /sarg /var/www/sarg Options Indexes MultiViews AllowOverride All Order allow,deny Allow from all É necessário reiniciar o Servidor Web Apache para as que as configurações tenham efeito: sudo /etc/init.d/apache2 restart PROXY TRANSPARENTE Com o Proxy Transparente autenticação não funciona, é necessário implementar um linha de IPTABLES para que possamos redirecionar o tráfego da porta 80 para a porta 3128. Para ativar o proxy transparente, rode o comando abaixo: iptables -t nat -A PREROUTING -i eth0 -p tcp –dport 80 -j REDIRECT –to-port 3128 iptables -t nat -A PREROUTING -i eth0 -p tcp –dport 8080 -j REDIRECT –to-port 3128 Para ativar o suporte ao modo transparente dentro do arquivo “/etc/squid/squid.conf” coloque a seguinte linha e depois reiniciar o serviço.
  • sudo gedit /etc/squid/squid.conf http_port 3128 transparent Salve o arquivo sudo /etc/init.d/squid restart squid.conf acl all src 0.0.0.0/0.0.0.0 acl localhost src 127.0.0.1/255.255.255.255 acl redelocal src 10.1.0.0/24 acl manager proto cache_object acl to_localhost dst 127.0.0.0/8 acl SSL_ports port 443 563 # https, snews acl SSL_ports port 873 # rsync acl Safe_ports port 80 # http acl Safe_ports port 21 # ftp acl Safe_ports port 443 563 # https, snews acl Safe_ports port 70 # gopher acl Safe_ports port 210 # wais acl Safe_ports port 1025-65535 # unregistered ports acl Safe_ports port 280 # http-mgmt acl Safe_ports port 488 # gss-http acl Safe_ports port 591 # filemaker acl Safe_ports port 777 # multiling http acl Safe_ports port 631 # cups acl Safe_ports port 873 # rsync acl Safe_ports port 901 # SWAT acl sectionx proxy_auth REQUIRED acl purge method PURGE acl CONNECT method CONNECT http_access allow manager localhost http_access allow users http_access deny redelocal http_access deny manager http_access allow purge localhost http_access deny purge http_access deny !Safe_ports http_access deny CONNECT !SSL_ports http_access allow localhost http_access deny all http_reply_access allow all icp_access allow all Redirecionamento do HTTP traffic. eth1 LAN eth0 WAN 192.168.0.1 Endereço da placa de rede da LAN iptables -t nat -A PREROUTING -i eth1 -p tcp -m tcp –dport 80 -j DNAT –to-destination 192.168.0.1:3128 iptables -t nat -A PREROUTING -i eth0 -p tcp -m tcp –dport 80 -j REDIRECT –to-ports 3128
  • squid.conf http_port 3128 visible_hostname Poseidon # Configuração do cache cache_mem 42 MB maximum_object_size_in_memory 64 KB maximum_object_size 300 MB minimum_object_size 0 KB cache_swap_low 90 cache_swap_high 95 cache_dir ufs /var/spool/squid 2048 16 256 # Localização do log de acessos do Squid cache_access_log /var/log/squid/access.log # Erros error_directory /usr/share/squid/errors/Portuguese refresh_pattern ^ftp: 15 20% 2280 refresh_pattern ^gopher: 15 0% 2280 refresh_pattern . 15 20% 2280 acl all src 0.0.0.0/0.0.0.0 acl manager proto cache_object acl localhost src 127.0.0.1/255.255.255.255 acl SSL_ports port 443 563 10000 20000 acl Safe_ports port 80 # http acl Safe_ports port 21 # ftp acl Safe_ports port 443 563 # https, snews acl Safe_ports port 70 # gopher acl Safe_ports port 210 # wais acl Safe_ports port 1025-65535 # unregistered ports acl Safe_ports port 280 # http-mgmt acl Safe_ports port 488 # gss-http acl Safe_ports port 591 # filemaker acl Safe_ports port 777 # multiling http acl Safe_ports port 901 # SWAT acl Safe_ports port 995 143 25 110 # Email acl purge method PURGE acl CONNECT method CONNECT http_access allow manager localhost http_access deny manager http_access allow purge localhost http_access deny purge http_access deny !Safe_ports http_access deny CONNECT !SSL_ports
  • # Filtros por palavras e por dominios acl proibidos dstdom_regex "/etc/squid/secure/block" http_access deny proibidos # Libera para a rede local acl redelocal src 192.168.2.0/24 http_access allow localhost http_access allow redelocal # Bloqueia acessos externos http_access deny all esse aqui é um script de iptables que eu fiz uma vez, nele eu redireciono tudo que ta entrando na porta do squid para a porta 80, portanto usando proxy transparente. No qual nao é necessario configurar os clientes. echo "##########################" echo "# INICIANDO FIREWALL #" echo "##########################" modprobe iptable_nat modprobe ip_nat_ftp modprobe ip_conntrack_ftp modprobe ip_conntrack iptables -F iptables -F INPUT iptables -F OUTPUT iptables -F POSTROUTING -t nat iptables -F PREROUTING -t nat iptables -P FORWARD ACCEPT WAN="eth0" iptables -t nat -A PREROUTING -s 192.168.2.0/24 -p tcp --dport 80 -j REDIRECT --to-port 3128 iptables -t nat -A PREROUTING -s 192.168.2.0/24 -p tcp --dport 110 -j REDIRECT --to-port 8110 iptables -A POSTROUTING -t nat -s 192.168.2.0/24 -o $WAN -j MASQUERADE iptables -t nat -A PREROUTING -p tcp --dport 81 -i eth0 -j DNAT --to 192.168.2.1:80 echo 1 > /proc/sys/net/ipv4/ip_forward IPREDE=192.168.2.0/24 DNS1=200.165.132.148 DNS2=200.149.55.142
  • Primeiro descubra qual é a interface eth0 e eth1! :) Edite o arquivo /etc/network/interfaces O arquivo deve ficar assim ## Inicio do arquivo auto lo iface lo inet loopback # Interface eth0 conectada ao modem auto eth0 iface eth0 inet dhcp # Interface eth1 conectada ao roteador/swicth auto eth1 iface eth1 inet static address 192.168.1.1 netmask 255.255.255.0 broadcast 192.168.1.255 network 192.168.1.0 ## Fim do arquivo Reinicie o serviço: # /etc/init.d/networking restart Crie um arquivo chamado nat.sh e cole isto lá dentro: echo 1 > /proc/sys/net/ipv4/ip_forward iptables -F iptables -t nat -F iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -j MASQUERADE Salve e mude as propriedades do arquivo para que ele possa ser executado: # chmod +x nat.sh Execute-o: # ./nat.sh tenho dois arquivos que rodam na inicialização nat e firewall descrição: nat: iptables -F iptables -F INPUT iptables -F OUTPUT iptables -F POSTROUTING -t nat iptables -F PREROUTING -t nat modprobe iptable_nat
  • echo 1 > /proc/sys/net/ipv4/ip_forward iptables -P FORWARD ACCEPT iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE iptables -A PREROUTING -t nat -i eth1 -p tcp --dport 80 -j REDIRECT --to-port 3128 firewall: echo 1 > /proc/sys/net/ipv4/conf/default/rp_filter iptables -A INPUT -m state --state INVALID -j DROP iptables -A INPUT -i lo -j ACCEPT iptables -A INPUT -i eth1 -j ACCEPT iptables -A INPUT -p tcp --dport 22 -j ACCEPT iptables -A INPUT -p tcp --syn -j DROP Estou usando o Ubuntu 10.04 LTS, que acabei de atualizar a partir do 9.10, squid 2.7 STABLE6(somente como cache/web) o micro tem duas placas de rede eth0 = ip fixo, de onde vem a conexão com a internet eth1 = conexão até um AP com software da ApRouter, configurado como bridge * Estações conectam ao servidor via wireless Agora vem o problema. - as estações conectam à internet, desde que estejam configuradas para usar o proxy, sendo que o mesmo "era" para ser transparente - se eu tirar o proxy nas estações, não há navegação - incluí as linhas /nat e /firewall no arquivo /etc/rc.local - quando inicio o servidor, tenho que reiniciar o squid para a conexão funcionar arquivo rl.local= /nat /firewall /etc/init.d/squid restart exit0 Edite o arquivo de configuração do SQUID (no Linux, geralmente em /etc/squid/squid.conf) e acrescente as seguintes instruções: acl streaming req_mime_type ^video/x-ms-asf acl musica urlpath_regex -i .aif$ .aifc$ .aiff$ .asf$ .asx$ .avi$ .au$ .m3u$ .med$ .mp3$ .m1v$ .mp2$ .mp2v$ .mpa$ .mov$ .mpe$ .mpg$ .mpeg$ .ogg$ .pls$ .ram$ .ra$ .ram$ .snd$ .wma$ .wmv$ .wvx$ .mid$ .midi$ .rmi$ http_access deny musica http_reply_access deny streaming Depois é só reiniciar o serviço. No caso do Debian e afins: # /etc/init.d/squid restart Na prática, as ACLs acima bloqueiam o áudio e vídeo de rádios online, download de arquivos MP3 (que possam ser feitos eventualmente via HTTP), filmes e demais formatos que sobrecarregam o seu link. Uma observação importante é que no SQUID, as regras/listas de acesso são executadas
  • sempre seqüencialmente, por isso a ordem em que elas aparecem no arquivo de configuração pode influenciar no comportamento do webproxy. Isso significa que ao entrar em uma ACL (a condição for verdadeira) o SQUID não checa/executa as posteriores. Ubuntu + Squid Proxy + Dansguardian Depois de andar às voltas e sem sucesso a tentar por um proxy gratuito a funcionar em Windows com funcionalidade de filtro de conteúdos, resolvi virar-me para o Linux… Neste caso uma configuração de Ubuntu 6.10 Edgy (desktop) + Proxy Squid e para filtro de conteúdos o DansGuardian. Começando… Se a instalação do Ubuntu foi recente ou se ainda não se definiu a password para o root, esta é a altura para fazê-lo. sudo passwd De seguida vamos actualizar o sistema. Esta operação vai demorar um pouco e pode ser necessário o cd de instalação do Ubuntu. sudo apt-get update sudo apt-get upgrade Instalar o Apache Web Server sudo aptitude install apache2 Para servir de proxy o computador terá de estar configurado com ip fixo e não por dhcp. Para isso editamos o ficheiro de configuração de rede e alteramos para os valores pretendidos. sudo gedit /etc/network/interfaces Procurar este texto e alterar para os valores pretendidos. # The primary network interface auto eth0 iface eth0 inet static address 134.175.60.138 netmask 255.255.255.0 gateway 134.175.60.250 Gravar, fechar o ficheiro e reiniciar a rede: sudo /etc/init.d/networking restart Instalação do Proxy Squid. sudo aptitude install squid Nota: se no fim da instalação tiverem o erro “FATAL: Could not determine fully qualified hostaname. Please set ‘visible_hostname’”, fazer: sudo gedit /etc/squid/squid.conf Procurar o texto “visible_hostname” e acrescentar a linha:
  • visible_hostname localhost Gravar, fechar o ficheiro e reiniciar o squid: sudo /etc/init.d/squid restart Com isto o Squid deve estar a funcionar correctamente, passamos á instalação do DansGuardian sudo aptitude install dansguardian Se o comando anterior der um erro a dizer que não foi encontrado nenhum pacote com o nome “Dansguardian”, temos de editar o ficheiro de sources do aptitude. Para isso fazemos: sudo gedit /etc/apt/sources.list Procurar e tirar o “#” das linhas: # deb http://pt.archive.ubuntu.com/ubuntu/ edgy universe # deb -src http://pt.archive.ubuntu.com/ edgy universe Gravar e fechar o ficheiro, de seguida fazer: sudo apt-get update Votar a fazer: sudo aptitude install dansguardian Editar o ficheiro de configuração do dansguardian de maneira a filtrar tudo o que passa pelo proxy: sudo gedit /etc/dansguardian/dansguardian.conf No incio do ficheiro procurar a tag “UNCONFIGURED” e alterar para: # UNCONFIGURED filterip= filterport=8080 proxyip=127.0.0.1 proxyport=3128 Gravar, fechar e reiniciar o dansguardian sudo /etc/init.d/dansguardian restart Agora é só configurar os browsers para usarem o proxy: Para testar basta tentar aceder por exemplo a www.playboy.com e deve surgir um ecrã semelhante a este:
  • Servidor Proxy (Squid) Um servidor proxy é uma peça importante em uma rede interna que tenha contato com outra pública, pois implementa uma série de facilidades e controles. Veremos, definitivamente, tudo sobre ele. Ao final deste artigo você será capaz de: •Instalar e configurar o servidor proxy (squid) •Configurar o squid para atuar como proxy transparente. Conceitos de Servidores Proxy O objetivo principal de um servidor proxy é possibilitar que máquinas de uma rede privada possam acessar uma rede pública, como a Internet, sem que para isto tenham uma ligação direta com esta. O Servidor proxy costuma ser instalado em uma máquina que tenha acesso direto à internet, sendo que as demais efetuam as solicitações através desta. Justamente por isto, este tipo é chamado de Proxy, pois é um procurador, ou seja, sistema que faz solicitações em nome de outros. Considerações Iniciais •Utilizaremos duas ferramentas de instalações. •A primeira é a urpmi utilizada em algumas distribuições como a Mandriva e etc. •A Segunda é o APT-GET utilizado em outras distribuições como Ubuntu e etc. Instalação do Squid Para instalar o Squid no Mandriva Linux, utilize o urpmi: #urpmi squid -auto Para instalar o Squid no Ubuntu, utilize o apt-get: #apt-get install squid O código fonte do Squid pode ser obtido no site oficial do projeto listado na seção "Para saber mais". Configurando o Squid A Configuração do squid fica gravada em um arquivo chamado squid.conf, no diretório /etc/squid. Entre várias opções de configurações do Squid, algumas merecem atenção especial pois definem o funcionamento básico do programa. http_port n Esta opção é utilizada para definir em quais portas (n) o squid espera por conexões http. A porta padrão é 3128, mas é possível especificar uma outra qualquer, dependendo da necessidade. Exemplo: http_port 3128 cache_dir Tipo diretório Mbytes Nível-1 Nível-2 Esta opção serve para definir em quais diretórios serão armazenados os objetos. Tipo especifica o tipo de sistema de armazenamento a ser utilizado. Atualmente o tipo que pode ser utilizado com segurança é ufs. Diretório especifica o nome do diretório onde há o arquivo que mantém os metadados dos objetos
  • armazenados no disco. Este arquivo é utilizado para recriar o cache durante a inicialização do Squid. Mbytes especifica a quantidade de espaço em disco que deverá ser utilizada sob este diretório. O valor padrão é 100 MB. Nível-1 e Nível-2 especificam o número de diretórios de primeiro e segundo nível, respectivamente, a serem criados, definindo na opção Diretório. Os valores padrão são 16 e 256, respectivamente. É possível ter vários diretórios para cache, inclusive em discos distindos. Exemplo: cache_dir ufs /var/spool/squid 100 16 256 cache_mgr e-mail Esta opção permite especificar o e-mail do usuário do sistema que receberá uma mensagem caso o Squid venha a ser encerrado de forma anormal. Este endereço também é mostrado em páginas de erros retornadas aos usuários caso, por exemplo, a máquina remota não possa ser acessada. Exemplo: cache_mgr squid_adm@imasters.com.br cache_efective_user usuarop, cache_efective_group grupo Estas opções servem para informar ao Squid com qual ID de usuário e de grupo, respectivamente, ele deve ser executado, caso seja iniciado como root, que é como ele costuma ser iniciado. Exemplo: cache_efective_user squid cache_efective_group squid| cache_mem mem O squid utiliza muita memória por razões de desempenho. É muito mais demorado ler algo do disco do que diretamente da memória como todos sabem. Mas deve-se estar atento ao definir este valor, pois esse parâmetro não é o total de memória que o Squid usa, ele apenas põe um limite em um dos aspectos da memória. Mas ele usa memória para outras atividades, assim, é necessário reservar espaços para os outros processos. Para verificar quanta memória o squid esta utilizando, podemos utilizar o comando top, por exemplo. Exemplo: cache_mem 8MB| visible_hostname computador Esta opção define o nome do computador que aparece em mensagens de erro e em outras informações compartilhadas entre servidore cache. Colocar o nome do computador local. Exemplo: visible_hostname Parede_de_fogo Para iniciar o serviço squid como super usuário (root), o comando: #service squid start (Mandriva)| etc/init.d# ./squid start (Ubuntu) Controle de acesso O controle de acesso do squid tem recursos suficientes para definir com precisão quais tipos de serviços podem ser acessados por quais máquinas e em quais horários. As regras da lista de controle de acesso (Access Control List ou simplismente ACLs) tem uma sintaxe bastante simples, e são incluídas no arquivo squid.conf
  • Tipos de elementos de ACL: •src: endereço IP de origem (cliente); •dst: endereço IP de destino (servidor); •srcdomain: um domínio de origem (cliente); •dstdomain: um domínio de destino (servidor); •srcdom_regex: padrão de texto, ou expressão regular, que conste no conteúdo da origem (cliente); •dstdom_regex: padrão de texto, ou expressão regular, que conste no conteúdo do destino (servidor); •time: hora do dia e dia da semana; •url_regex: comparação de URL baseada em expressão regular; •port: número da porta do destino (servidor); •myport: número da porta local na qual o cliente se conectou; •proto: protocolo de transferência (http, ftp, etc); •method: método http de requisição (get, post, etc); •browser: Comparação executada baseada no cabeçalho (header) do cliente (browser); •ident: nome do usuário; •src_as: número do Sistema Autônomo da origem (cliente); •dst_as: número do Sistema Autônomo do destino (servidor); •proxy_auth: autenticação do usuário via um processo externo; •proxy_auth_regex: expressão regular que consta em uma autenticação de usuário via um processo externo; •snmp_community: string que indica o nome da comunidade SNMP; •maxconn: um número máximo de conexões de um mesmo endereço IP de cliente; •arp: endereço Ethernet (MAC). Nem todos os elementos de ACL podem ser usados com todas as listas de acessos (descritas a seguir). Por exemplo, snmp_community só terá significado quando usado com a lista snmp_access, bem como, os elementos src_as e dst_as somente serão usados na lista cache_peer_access. Cada elemento de ACL deve ser relacionado com somente um nome. Um elemento ACL com determinado nome consiste em uma lista de valores. Quando forem sendo feitos os testes, os múltiplos valores utilizarão o operador lógico OR. Em outras palavras, um elemento ACL será válido, quando qualquer um de seus valores forem verdadeiros. Você não pode dar o mesmo nome para diferentes tipos de elementos ACLs. Isto ocasionará um erro de sintaxe. Você poderá colocar diferentes valores para a mesma ACL em diferentes linhas. O Squid os combinará em uma lista. Lista de Acessos: •http_acess: permite clientes http (browsers) acessarem a porta http. Esta ACL é a primária; •icp_access: permite cachês "vizinhos" fazerem requisições ao seu cache através do protocolo ICP; •miss_access: permite a alguns clientes fazerem encaminhamento (forward) através de seu cache; •no_cache: define respostas que não deverão ser armazenadas no cache; •always_direct; controla quais requisições deverão ser sempre encaminhadas diretamente aos servidores de igem; •never_direct: controla quais requisições nunca deverão ser sempre encaminhadas diretamente
  • aos servidores de origem; •snmp_access: controla acesso ao agente SNMP do squid; •cache_peer_access: controla quais requisições poderão ser encaminhadas a um servidor de cache vizinho. (peer) Uma regra de lista de acesso, consite da palavra allow (permitir) ou deny (negar), seguido de uma lista de nomes de elementos ACL. Uma lista de acesso consiste em uma ou mais regras de acesso. As listas de acesso são verificadas na mesma ordem em que foram escritas. A pesquisa na lista termina assim que uma requisição satisfazer uma regra. Se uma regra possuir múltiplos elementos de ACL, esta usará o operador lógico AND. Em outras palavras, todos os elementos de uma regra precisarão ser validos para que esta regra seja válida. Isto significa que é possível escrever uma regra que nunca será válida. Por exemplo, um número de porta nunca poderá ser igual a 80 e 8000 ao mesmo tempo. Vejam alguns exemplos práticos: Se você quiser impedir que qualquer usuário acesse paginas que contenham a palavra "cracker" na URL, acrescente as seguintes linhas no seu squid.conf: acl proibir_cracker url_regex cracker| http_access deny proibir_cracker E o bloqueio ainda pode ser para máquinas especificas. Imagine que o usuário da máquina cujo IP é 10.0.0.95 esteja ocupando muito a sua rede, transferindo arquivos de música em formato MP3. Para bloquear este usuário especifico, use a regra como a de baixo: acl mp3 url_regex mp3| acl usr_ofensor src 10.0.0.95/255.255.255.255| http_access deny usr_ofensor mp3 Se quiser proibir todos os usuários de acessarem um determinado site: acl site_proibido dstdomain .orkut.com| http_access deny all site_proibido Também é possível permitir ou proibir o acesso em determinados dias e horários: acl tempo_proibido time MTWHF 15:00-16:00| acl usr_ofensor src 10.0.0.95/255.255.255.255| http_access deny usr_ofensor tempo_proibido A regra acima bloqueia o acesso à internet para o IP 10.0.0.95 durante o período das 15:00 às 16:00 horas. A opção MTWHF indica os dias da semana em inglês. Também pode ser utilizadas as opções A e S que equivalem ao sábado e ao domingo respectivamente. Existem casos que uma empresa gostaria de liberar o acesso a internet apenas durante o horário de almoço. Para isso, a seguinte regra poderia ser aplicada: acl funcionários src 10.0.0.0/0| acl acesso_almoco time MTWHF 12:00-13:00| http_access allow funcionários acesso_almoco| http_access deny funcionários
  • Dependendo do número de domínios ou de palavras-chave listadas em ACLs é aconselhável construir uma lista em um arquivo separado e indicá-lo no squid.conf. O arquivo com uma lista de domínios ou de expressões regulares a serem bloqueadas deve conter uma entrada por linha, como no exemplo: •Orkut •Playboy •Sexo •Blog •Fotolog Caso o arquivo seja salvo em /etc/squid/sites_proibidos, por exemplo podemos indicá-lo no arquivo de configuração do squid da seguinte maneira: acl funcionários src 10.0.0.0/0| acl proibidos url_regex "/etc/squid/sites_proibidos" | http_access deny funcionários proibidos Após incluir todas as suas regras restritivas, não se esqueça de incluir regras especificando que tudo o que não estiver expressamente proibido deve ser permitido. Na configuração original do squid.conf, as linhas serão como a que segue: acl rede_local src 10.0.0.0/255.0.0.0| http_access allow all rede_local Note que você deve definir a 'rede_local' como conjunto de endereço IP e máscara que melhor descrevem a sua rede. Normalmente o seu squid.conf virá com linhas como as que seguem: # # INSERT YOUR OWN RULE(S) HERE ALLOW ACCESS FROM YOUR CLIENTS # http_access deny all Ela serve para bloquear o acesso ao squid até que ele seja configurado, e é interessante você deixá- lo como última regra, pois desta forma, se a requisição não satisfazer nenhuma regra o squid irá bloqueá-la. Proxy Transparente Utilizar o proxy transparente evita que o administrador tneha que configurar o navegador web de cada usuário da rede, pois o uso do proxy passa a ser despercebido para o usuário. Alem disso, evita que o usuário possa desabilitar o proxy e navegar diretamente na internet. Para iniciarmos a configuração do squid como proxy transparente, insira ou descomente as seguintes linhas no arquivo /etc/squid/squid.conf httpd_accel_host virtual| httpd_accel_port 80| httpd_accel_with_proxy on| httpd_accel_uses_host_header on E, como root, execute o comando: #iptables -t nat -A PREROUTING -i eth0 -p tcp -dport 80 -j REDIRECT --to- port 3128
  • Caso o iptables não esteja instalado, instale-o antes: #urpmi iptables -auto Ou #apt-get install iptables Note que no exemplo acima utilizamos a interface de rede eth0 como se fosse a interface ligada na rede local. Você deve adaptar o exemplo à sua rede. O exemplo também assume que o iptables e o servidor proxy estão sendo executados na mesma máquina. Caso os serviços estejam em máquinas separadas, a linha de comando para o iptables é ligeiramente diferente: #iptables -t nat -A PREROUTING -i eth0 -p tcp -dport 80 -j REDIRECT --to-dest IP:3128 IP - Deve ser substituido pelo endereco IP da máquina onde o servidor squid esta sento executado. Para que esta regra esteja ativa logo após a inicialização do sistema operacional, execute em seguida os comandos: #iptables -save > /etc/sysconfig/iptables| #chkconfig iptables on Ao reiniciar o squid (#service squid restart ou etc/init.d# ./squid restart) os clientes já poderão navegar normalmente em necessidade de especificar no browser qual servidor proxy deve ser utilizado. Dicas •Não esqueça de verificar os arquivos de log do Squid quando não estiver conseguindo resolver algum problema. O Diretório padrão de armazenamento dos arquivos de log é: /var/log/squid/. Os principais arquivos são cache.log, access.log e o squid.out, que armazenam respectivamente, informações sobre o cache do servidor proxy, os acessos feitos através do proxy e mensagens de erro emitidas pelo deamon do Squid. •Aqueles que preferem uma interface gráfica para configuração de servidores podem optar pelo Webmin, um gerenciador de sistema com interface web que contém um módulo para gerenciamento do Squid. O download do Webmin pode ser feito através do site sudo nano / etc / network / interfaces auto eth0 iface eth0 inet static endereço 192.168.1.250 netmask 255.255.255.0 rede 192.168.1.0 broadcast 192.168.1.255 gateway 192.168.1.88 post-up iptables-restore </ etc / iptables.up.rules auto eth1 iface eth1 inet static endereço 192.168.2.1 netmask 255.255.255.0 rede 192.168.2.0
  • broadcast 192.168.2.255 Etapa 3. Instale o Web Admin (webmin) (Opcional) wget http://prdownloads.sourceforge.net/webadmin/webmin_1.510-2_all.deb dpkg-install-webmin_1.510 2_all.deb sudo apt-get-f install https: / / localhost IP-ENDEREÇO: 10000 * Nota: Certifique-se de dar permissão para o conjunto de regras de IPTABLES para acessar webmin sobre a rede. Etapa 4. Instalar e ClamAV ClamAV freshclam- sudo apt-get install clamav clamav-freshclam Etapa 5. O primeiro passo é instalar o squid 3 sudo apt-get install squid3 editar o arquivo de configuração do squid 3 em seu editor favorito sudo nano / etc/squid3/squid.conf e definir a transparência e os hosts permitidos http_port 3128 transparentes our_networks acl src 192.168.2.0/24 acl localnet src 127.0.0.1/255.255.255.255 http_access allow our_networks http_access allow localnet onde 192.168.2.0/24 é a faixa de IP da rede local. Provavelmente, você precisa ajustar o tamanho do swap cache_dir ufs / var/spool/squid3 7000 16 256 aqui o primeiro número indica o tamanho do cache em megabytes. Salve-se alterações e reiniciar o proxy squid por sudo / etc/init.d/squid3 reiniciar Passo 6. Edite o / etc / sysctl.conf sudo nano / etc / sysctl.conf Descomente a linha que permitem o encaminhamento de pacotes IPv4 e IPv6 Net.ipv4.ip_forward = 1 Net.ipv6.conf.all.forwarding = 1 Passo 7. Editar o conjunto de regras de iptables e NAT FILTER sudo nano / etc / iptables.up.rules * Nat -A PREROUTING-i eth1-p tcp-m tcp-dport 80-j DNAT-to-destination 192.168.2.1:3128 -A PREROUTING-i eth1-p tcp-m tcp-dport 80-j REDIRECT-to-ports 3128
  • -A POSTROUTING-s 192.168.2.0/24-o MASQUERADE eth0-j * Filtro -A INPUT-i lo-j ACCEPT -A INPUT-m state-i eth0-estado realated, ESTABLISHED-j ACCEPT -A INPUT-j ACCEPT eth1 -A INPUT-p tcp-m tcp-dport ACCEPT 22-j # permitir usar o ssh putty -A INPUT-p tcp-m tcp-dport ACCEPT 10000-j # permitir acesso webmin LOG-A INPUT-j DROP-A INPUT-j -A FORWARD-i eth1-j ACCEPT -A OUTPUT-o lo-j ACCEPT -A OUTPUT-o eth1-j ACCEPT -A foward-o eth1-j ACCEPT -A FORWARD-s 192.168.2.0/24-o eth0-j ACCEPT -A FORWARD-d 192.168.2.0/24-m state estado ESTABLISHED, realted-I eth0-j ACCEPT Passo 8. Editar rc.local sudo nano / etc / rc.local iptables-t nat-A POSTROUTING-s 192.168.2.0/24-o MASQUERADE eth0-j Etapa 9. reiniciar o servidor Passo 10. Configure a estação de endereço IP estático fazendo o IP LAN do Ubuntu como o gateway. Certifique-se que o endereço IP da estação de trabalho está dentro da configuração de rede de você. Muitas vezes, depois de um grande tempo de uso do computador ou do servidor, você nota que o consumo de memória está alto. Isso acontece porque muitas vezes o Linux guarda um espaço na memória cache para programas e comandos que foram usados recentemente, para que em execuções futuras sejam executados mais rapidamente. No entanto, para liberar esse espaço que muitas vezes é armazenado sem necessidade e causando um uso elevado da memória não precisamos reiniciar o computador. Basta executar o comando a seguir como root: $ sync $ echo 3 > /proc/sys/vm/drop_caches O comando sync faz com que todo o cache do sistema de arquivos que está temporariamente armazenado na memória cache, seja despejado em disco e liberado, prevenindo assim que se tenha perda de dados. Quando escrevemos “3″ no arquivo /proc/sys/vm/drop_caches dizemos para o Kernel liberar pagecache, dentries e inodes. Se escrevermos “1″, liberamos apenas pagecache e se escrevermos “2″ liberamos pagecache e inodes. Nesse caso usaremos o “3″, pois ele faz o papel dos dois anteriores e ainda libera dentries. Para visualizar a queda do uso do chache, basta digitar: $ free -m
  • Caso queira criar um script para fazer essa limpeza automaticamente determinando um horário específico, crie um arquivo chamado “limpar_memoria_cache”. $ cd /usr/bin/ $ touch limpar_memoria_cache $ chmod 755 limpar_memoria_cache E insira o seguinte texto no arquivo: #!/bin/bash sync echo 3 > /proc/sys/vm/drop_caches Adicione o arquivo na cron, para programar sua execução todos os dias ao meio dia. $ crontab -e Adicione as linhas: # mm HH DD MM DS tarefa 00 12 * * * /usr/bin/limpar_memoria_cache Onde… * mm: minutos * HH: horas * DD: dia * MM: mês * DS: dia da semana * /usr/bin/limpar_memoria_cache: script de limpeza da cache Pronto. Script criado e agendado para execução automática. Reiniciando Squid automaticamente com Cron Para facilitar fique logado como root Criar um script aqui vai ter o nome de restarsquid.sh Ele vai ser criado dentro da pasta /etc/squid Crie o script vi /etc/squid/restartsquid.sh Edite ele com os seguintes comandos #! /bin/bash RESTART="/etc/init.d/squid restart" $RESTART agora salve e saia ESC :wq Agora e dar permissão para o script criado chmod +x /etc/squid/restartsquid.sh Agora faça um teste com o comando sh /etc/squid/restartsquid.sh Ele vai reiniciar o squid pronto nosso escripe esta funcionando, agora vamos conrigurar o cron para executar nosso script no horario desejado. Para editar o Cron de o seguinte comando
  • crontab -e agora um exemplo de edição 55 7 * * * root sh /etc/squid/restartsquid.sh Pronto agora e so salvar com o comando ctrl+o e sair com ctrl+x No exemplo o cron vai reiniciar o squid todos os dias as 7:55 da manhã Esta tudo pronto agora e so reiniciar o cron ou reinicie seu linux. sudo apt-get install apache2 php5 php5-mysql phpmyadmin php5-pgsql libpq-dev php-pear php5-xsl php5-gd mysql-server-5.0 postgresql-8.3 pgadmin3 phppgadmin php5-xdebug Em interface gráfica, eu te indicaria: Bluefish Quanta GPHPEdit Nvu