SlideShare uma empresa Scribd logo
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

Mais conteúdo relacionado

Mais procurados

45865588 nucleo-e-divisao-exercicios
45865588 nucleo-e-divisao-exercicios45865588 nucleo-e-divisao-exercicios
45865588 nucleo-e-divisao-exercicios
Flávia Oliveira
 
Apostila de Excel para crianças (pequeninos)
Apostila de Excel para crianças (pequeninos)Apostila de Excel para crianças (pequeninos)
Apostila de Excel para crianças (pequeninos)
Welington Carvalho
 
Introdução à Linguagem C
Introdução à Linguagem CIntrodução à Linguagem C
Introdução à Linguagem C
Elaine Cecília Gatto
 
Conhecendo o Computador e seus Periféricos
Conhecendo o Computador e seus PeriféricosConhecendo o Computador e seus Periféricos
Conhecendo o Computador e seus Periféricos
kcugik
 
Aula 1 - Introdução ao Mobile
Aula 1 - Introdução ao MobileAula 1 - Introdução ao Mobile
Aula 1 - Introdução ao Mobile
Cloves da Rocha
 
Manutenção de Computadores - Aula 1
Manutenção de Computadores - Aula 1Manutenção de Computadores - Aula 1
Manutenção de Computadores - Aula 1
Guilherme Nonino Rosa
 
Anticorpos monoclonais e policlonais pdf
Anticorpos monoclonais e policlonais pdfAnticorpos monoclonais e policlonais pdf
Anticorpos monoclonais e policlonais pdf
Adriana Carneiro de Lima
 
Apresentação java
Apresentação javaApresentação java
Apresentação java
munosai
 
Sistemas Multimídia - Aula 04 - O Que é Multimídia (Ambientes Multimídia e Pr...
Sistemas Multimídia - Aula 04 - O Que é Multimídia (Ambientes Multimídia e Pr...Sistemas Multimídia - Aula 04 - O Que é Multimídia (Ambientes Multimídia e Pr...
Sistemas Multimídia - Aula 04 - O Que é Multimídia (Ambientes Multimídia e Pr...
Leinylson Fontinele
 
1ª aula sistema operacional
1ª aula  sistema operacional1ª aula  sistema operacional
1ª aula sistema operacional
João Freire Abramowicz
 
Laços de repetição - Linguagem C
Laços de repetição - Linguagem CLaços de repetição - Linguagem C
Laços de repetição - Linguagem C
profjr
 
Exercicio Vetores Pascal
Exercicio Vetores PascalExercicio Vetores Pascal
Exercicio Vetores Pascal
Marcus Vinicius
 
Processadores ARM
Processadores ARMProcessadores ARM
Processadores ARM
Lucas Jacinto
 
Resta um java
Resta um javaResta um java
Resta um java
Thalita Chaves
 
Citogenética vegetal
Citogenética vegetalCitogenética vegetal
Citogenética vegetal
Dirk Daniel Dijkstra
 
Computação em nuvem
Computação em nuvemComputação em nuvem
Computação em nuvem
Claudinéia da Silva
 
Hemocitopoese
HemocitopoeseHemocitopoese
Hemocitopoese
Marcos Anicio
 
Aula 03 estrutura de seleção
Aula 03   estrutura de seleçãoAula 03   estrutura de seleção
Aula 03 estrutura de seleção
Tácito Graça
 
Cromatina e cromossoma
Cromatina e cromossomaCromatina e cromossoma
Cromatina e cromossoma
Hamilton Barros
 
Aula 6 - SAM - Imagens
Aula 6 - SAM - ImagensAula 6 - SAM - Imagens
Aula 6 - SAM - Imagens
Guilherme Nonino Rosa
 

Mais procurados (20)

45865588 nucleo-e-divisao-exercicios
45865588 nucleo-e-divisao-exercicios45865588 nucleo-e-divisao-exercicios
45865588 nucleo-e-divisao-exercicios
 
Apostila de Excel para crianças (pequeninos)
Apostila de Excel para crianças (pequeninos)Apostila de Excel para crianças (pequeninos)
Apostila de Excel para crianças (pequeninos)
 
Introdução à Linguagem C
Introdução à Linguagem CIntrodução à Linguagem C
Introdução à Linguagem C
 
Conhecendo o Computador e seus Periféricos
Conhecendo o Computador e seus PeriféricosConhecendo o Computador e seus Periféricos
Conhecendo o Computador e seus Periféricos
 
Aula 1 - Introdução ao Mobile
Aula 1 - Introdução ao MobileAula 1 - Introdução ao Mobile
Aula 1 - Introdução ao Mobile
 
Manutenção de Computadores - Aula 1
Manutenção de Computadores - Aula 1Manutenção de Computadores - Aula 1
Manutenção de Computadores - Aula 1
 
Anticorpos monoclonais e policlonais pdf
Anticorpos monoclonais e policlonais pdfAnticorpos monoclonais e policlonais pdf
Anticorpos monoclonais e policlonais pdf
 
Apresentação java
Apresentação javaApresentação java
Apresentação java
 
Sistemas Multimídia - Aula 04 - O Que é Multimídia (Ambientes Multimídia e Pr...
Sistemas Multimídia - Aula 04 - O Que é Multimídia (Ambientes Multimídia e Pr...Sistemas Multimídia - Aula 04 - O Que é Multimídia (Ambientes Multimídia e Pr...
Sistemas Multimídia - Aula 04 - O Que é Multimídia (Ambientes Multimídia e Pr...
 
1ª aula sistema operacional
1ª aula  sistema operacional1ª aula  sistema operacional
1ª aula sistema operacional
 
Laços de repetição - Linguagem C
Laços de repetição - Linguagem CLaços de repetição - Linguagem C
Laços de repetição - Linguagem C
 
Exercicio Vetores Pascal
Exercicio Vetores PascalExercicio Vetores Pascal
Exercicio Vetores Pascal
 
Processadores ARM
Processadores ARMProcessadores ARM
Processadores ARM
 
Resta um java
Resta um javaResta um java
Resta um java
 
Citogenética vegetal
Citogenética vegetalCitogenética vegetal
Citogenética vegetal
 
Computação em nuvem
Computação em nuvemComputação em nuvem
Computação em nuvem
 
Hemocitopoese
HemocitopoeseHemocitopoese
Hemocitopoese
 
Aula 03 estrutura de seleção
Aula 03   estrutura de seleçãoAula 03   estrutura de seleção
Aula 03 estrutura de seleção
 
Cromatina e cromossoma
Cromatina e cromossomaCromatina e cromossoma
Cromatina e cromossoma
 
Aula 6 - SAM - Imagens
Aula 6 - SAM - ImagensAula 6 - SAM - Imagens
Aula 6 - SAM - Imagens
 

Destaque

Comandos básicos para utilizar squid o squid3
Comandos básicos para utilizar squid o squid3Comandos básicos para utilizar squid o squid3
Comandos básicos para utilizar squid o squid3
ALBERTO CHUICA
 
Manual de configuracion de proxy SQUID
Manual de configuracion de proxy SQUIDManual de configuracion de proxy SQUID
Manual de configuracion de proxy SQUID
Andres Ldño
 
Manual de squid creado por juanextk
Manual de squid creado por juanextkManual de squid creado por juanextk
Manual de squid creado por juanextk
juanextk
 
Squid1
Squid1Squid1
Squid
Squid Squid
Curso Squid avanzado
Curso Squid avanzadoCurso Squid avanzado
Curso Squid avanzado
Miguel Angel Nieto
 
Manual Servidor Proxy Squid3
Manual Servidor Proxy Squid3Manual Servidor Proxy Squid3
Manual Servidor Proxy Squid3
Pedro Luis Pantoja González
 
Squid proxy transparente en ubuntu
Squid proxy transparente en ubuntuSquid proxy transparente en ubuntu
Squid proxy transparente en ubuntu
Alvaro López
 

Destaque (8)

Comandos básicos para utilizar squid o squid3
Comandos básicos para utilizar squid o squid3Comandos básicos para utilizar squid o squid3
Comandos básicos para utilizar squid o squid3
 
Manual de configuracion de proxy SQUID
Manual de configuracion de proxy SQUIDManual de configuracion de proxy SQUID
Manual de configuracion de proxy SQUID
 
Manual de squid creado por juanextk
Manual de squid creado por juanextkManual de squid creado por juanextk
Manual de squid creado por juanextk
 
Squid1
Squid1Squid1
Squid1
 
Squid
Squid Squid
Squid
 
Curso Squid avanzado
Curso Squid avanzadoCurso Squid avanzado
Curso Squid avanzado
 
Manual Servidor Proxy Squid3
Manual Servidor Proxy Squid3Manual Servidor Proxy Squid3
Manual Servidor Proxy Squid3
 
Squid proxy transparente en ubuntu
Squid proxy transparente en ubuntuSquid proxy transparente en ubuntu
Squid proxy transparente en ubuntu
 

Semelhante a Squid

Instalação do Squid3 através da compilação do código fonte no Ubuntu 12.04/14...
Instalação do Squid3 através da compilação do código fonte no Ubuntu 12.04/14...Instalação do Squid3 através da compilação do código fonte no Ubuntu 12.04/14...
Instalação do Squid3 através da compilação do código fonte no Ubuntu 12.04/14...
Aécio Pires
 
Oficina de Squid: Filtros Inteligentes
 Oficina de Squid: Filtros Inteligentes Oficina de Squid: Filtros Inteligentes
Oficina de Squid: Filtros Inteligentes
Thiago Finardi
 
Project HA
Project HAProject HA
Project HA
Karpv
 
Squid proxy
Squid proxySquid proxy
Squid proxy
Gabriel Martins
 
Servidor Proxy Squid
Servidor Proxy SquidServidor Proxy Squid
Servidor Proxy Squid
Frederico Madeira
 
Programação em Shell Script
Programação em Shell ScriptProgramação em Shell Script
Programação em Shell Script
Reinaldo Lima
 
Monitoramento de serviços com Zabbix + Grafana + Python - Marcelo Santoto - D...
Monitoramento de serviços com Zabbix + Grafana + Python - Marcelo Santoto - D...Monitoramento de serviços com Zabbix + Grafana + Python - Marcelo Santoto - D...
Monitoramento de serviços com Zabbix + Grafana + Python - Marcelo Santoto - D...
Felipe Blini
 
Minicurso GNU/Linux básico - Aula2 - Semana Sistemas de Informação 2015 - UNI...
Minicurso GNU/Linux básico - Aula2 - Semana Sistemas de Informação 2015 - UNI...Minicurso GNU/Linux básico - Aula2 - Semana Sistemas de Informação 2015 - UNI...
Minicurso GNU/Linux básico - Aula2 - Semana Sistemas de Informação 2015 - UNI...
Marlon Willrich
 
Linux Servidor Proxy(squid)
Linux Servidor Proxy(squid)Linux Servidor Proxy(squid)
Linux Servidor Proxy(squid)
elliando dias
 
PHP Jedi - Boas Práticas e Alta Performance
PHP Jedi - Boas Práticas e Alta PerformancePHP Jedi - Boas Práticas e Alta Performance
PHP Jedi - Boas Práticas e Alta Performance
Felipe Ribeiro
 
Docker na vida real
Docker na vida realDocker na vida real
Docker na vida real
Fernando Ike
 
Talk no Meetup LaravelSP #3
Talk no Meetup LaravelSP #3Talk no Meetup LaravelSP #3
Talk no Meetup LaravelSP #3
Wellington Silva
 
O docker vai mudar tudo na sua infra estrutura-ti
O docker vai mudar tudo na sua infra estrutura-tiO docker vai mudar tudo na sua infra estrutura-ti
O docker vai mudar tudo na sua infra estrutura-ti
Francisco Gonçalves
 
Linux Deployment: Como instalar Linux sem sair da cadeira - Jonathan Meller e...
Linux Deployment: Como instalar Linux sem sair da cadeira - Jonathan Meller e...Linux Deployment: Como instalar Linux sem sair da cadeira - Jonathan Meller e...
Linux Deployment: Como instalar Linux sem sair da cadeira - Jonathan Meller e...
Tchelinux
 
Phpjedi 090307090434-phpapp01 2
Phpjedi 090307090434-phpapp01 2Phpjedi 090307090434-phpapp01 2
Phpjedi 090307090434-phpapp01 2
PrinceGuru MS
 
Alta Performance de Aplicações PHP com Nginx
Alta Performance de Aplicações PHP com NginxAlta Performance de Aplicações PHP com Nginx
Alta Performance de Aplicações PHP com Nginx
Thiago Paes
 
Tutorial servidor debian linux ocs invetory
Tutorial servidor debian linux ocs invetory Tutorial servidor debian linux ocs invetory
Tutorial servidor debian linux ocs invetory
gigadrop
 
Trab linux+sarg
Trab linux+sargTrab linux+sarg
Trab linux+sarg
Anderson Lago
 
Debug de cabo a rabo
Debug de cabo a raboDebug de cabo a rabo
Debug de cabo a rabo
Ricardo Moraleida
 
Adeus Wordpress. Ola Pelican!
Adeus Wordpress. Ola Pelican!Adeus Wordpress. Ola Pelican!
Adeus Wordpress. Ola Pelican!
magnunleno
 

Semelhante a Squid (20)

Instalação do Squid3 através da compilação do código fonte no Ubuntu 12.04/14...
Instalação do Squid3 através da compilação do código fonte no Ubuntu 12.04/14...Instalação do Squid3 através da compilação do código fonte no Ubuntu 12.04/14...
Instalação do Squid3 através da compilação do código fonte no Ubuntu 12.04/14...
 
Oficina de Squid: Filtros Inteligentes
 Oficina de Squid: Filtros Inteligentes Oficina de Squid: Filtros Inteligentes
Oficina de Squid: Filtros Inteligentes
 
Project HA
Project HAProject HA
Project HA
 
Squid proxy
Squid proxySquid proxy
Squid proxy
 
Servidor Proxy Squid
Servidor Proxy SquidServidor Proxy Squid
Servidor Proxy Squid
 
Programação em Shell Script
Programação em Shell ScriptProgramação em Shell Script
Programação em Shell Script
 
Monitoramento de serviços com Zabbix + Grafana + Python - Marcelo Santoto - D...
Monitoramento de serviços com Zabbix + Grafana + Python - Marcelo Santoto - D...Monitoramento de serviços com Zabbix + Grafana + Python - Marcelo Santoto - D...
Monitoramento de serviços com Zabbix + Grafana + Python - Marcelo Santoto - D...
 
Minicurso GNU/Linux básico - Aula2 - Semana Sistemas de Informação 2015 - UNI...
Minicurso GNU/Linux básico - Aula2 - Semana Sistemas de Informação 2015 - UNI...Minicurso GNU/Linux básico - Aula2 - Semana Sistemas de Informação 2015 - UNI...
Minicurso GNU/Linux básico - Aula2 - Semana Sistemas de Informação 2015 - UNI...
 
Linux Servidor Proxy(squid)
Linux Servidor Proxy(squid)Linux Servidor Proxy(squid)
Linux Servidor Proxy(squid)
 
PHP Jedi - Boas Práticas e Alta Performance
PHP Jedi - Boas Práticas e Alta PerformancePHP Jedi - Boas Práticas e Alta Performance
PHP Jedi - Boas Práticas e Alta Performance
 
Docker na vida real
Docker na vida realDocker na vida real
Docker na vida real
 
Talk no Meetup LaravelSP #3
Talk no Meetup LaravelSP #3Talk no Meetup LaravelSP #3
Talk no Meetup LaravelSP #3
 
O docker vai mudar tudo na sua infra estrutura-ti
O docker vai mudar tudo na sua infra estrutura-tiO docker vai mudar tudo na sua infra estrutura-ti
O docker vai mudar tudo na sua infra estrutura-ti
 
Linux Deployment: Como instalar Linux sem sair da cadeira - Jonathan Meller e...
Linux Deployment: Como instalar Linux sem sair da cadeira - Jonathan Meller e...Linux Deployment: Como instalar Linux sem sair da cadeira - Jonathan Meller e...
Linux Deployment: Como instalar Linux sem sair da cadeira - Jonathan Meller e...
 
Phpjedi 090307090434-phpapp01 2
Phpjedi 090307090434-phpapp01 2Phpjedi 090307090434-phpapp01 2
Phpjedi 090307090434-phpapp01 2
 
Alta Performance de Aplicações PHP com Nginx
Alta Performance de Aplicações PHP com NginxAlta Performance de Aplicações PHP com Nginx
Alta Performance de Aplicações PHP com Nginx
 
Tutorial servidor debian linux ocs invetory
Tutorial servidor debian linux ocs invetory Tutorial servidor debian linux ocs invetory
Tutorial servidor debian linux ocs invetory
 
Trab linux+sarg
Trab linux+sargTrab linux+sarg
Trab linux+sarg
 
Debug de cabo a rabo
Debug de cabo a raboDebug de cabo a rabo
Debug de cabo a rabo
 
Adeus Wordpress. Ola Pelican!
Adeus Wordpress. Ola Pelican!Adeus Wordpress. Ola Pelican!
Adeus Wordpress. Ola Pelican!
 

Squid

  • 1. 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
  • 2. 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
  • 3. 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 ##########################################
  • 4. 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
  • 5. - 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
  • 6. 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
  • 7. 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
  • 8. 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.
  • 9. 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
  • 10. 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
  • 11. # 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
  • 12. 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
  • 13. 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
  • 14. 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:
  • 15. 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:
  • 16. 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
  • 17. 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
  • 18. 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
  • 19. 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
  • 20. 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
  • 21. 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
  • 22. 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
  • 23. -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
  • 24. 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
  • 25. 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