Squid
E começando a postar sobre minha impressões sobre os cursos que faço no Comunidade.CDTC: Squid.
Estas serão anotações durante o curso qualquer dúvida estou a disposição para esclarecer.
squid…
Instalação:
Dependências:
adduser
coreutils
debconf (>= 1.2.9)
libc6 (>= 2.3.2.ds1-21) [not alpha, ia64]
libc6.1 (>= 2.3.2.ds1-21) [alpha, ia64]
libgcc1 (>= 1:3.4.1-3) [mips, mipsel]
libldap2 (>= 2.1.17-1)
libpam0g (>= 0.76)
logrotate (>= 3.5.4-1)
netbase
squid-common (= 2.5.9-10sarge2)
Pacotes Sugeridos:
logcheck-database
resolvconf (>= 0.40)
smbclient
squid-cgi
squidclient
winbind (>= 3.0.2)
APT
debian:~# apt-get update
debian:~# apt-get install squid
Configuração:
debian:~# updatedb
debian:~# locate squid.conf
Limpando o arquivo de configuração.
debian:~# cd /etc/squid
debian:/etc/squid# cp squid.conf squid_backup.conf
debian:/etc/squid# egrep −v “^#|^$” squid_backup.conf > squid.conf
Proxy Transparente
A primeira parte para configurar o Squid é definir o domínio da rede interna. Se a rede for, por exemplo, uma rede 176.16.0.0/24, então devemos definir a acl para a rede interna:
acl rede_interna src 176.16.0.0/24
http_access alow rede_interna
Obs.: acl (Access Control List ou lista de controle de acesso) é uma lista que define quem tem direito de acesso ou não a alguma coisa. Por exemplo, como definidos acima a acl rede_interna, todos que estiverem sob esse domínio terão ou não a permissão para acessar algum recurso.
Adicione agora as seguintes linhas ao arquivo squid.conf.
#Nessa linha dizemos ao Squid qual o site que ele acelerará
http_port 80 defaultsite=seu.site.principal
#Nessa linha dizemos ao Squid onde encontrar o site real
cache_peer ip.do.site 80 0 no-query originserver
Agora adicione antes ainda de rede interna acl:
acl all 0.0.0.0/0.0.0.0
Isso fará com algum acesso seja negado ou permitido à todos da rede.
Criando a lista de sites bloqueados
Crie o diretório bloqueados dentro de /etc/squid, nesse diretório ficarão as listas com as palavras, ips ou domínios a serem bloqueados.
debian:~# mkdir /etc/squid/bloqueados
debian:~# touch /etc/squid/bloqueados/block.txt
debian:~# touch /etc/squid/bloqueados/unblock.txt
Agora adicione as linhas a seguir logo após as primeiras acls no squid.conf.
acl blockedsites url_regex −i “/etc/squid/bloqueados/block.txt”
acl unblockedsites url_regex −i “/etc/squid/bloqueados/unblock.txt”
Criando acls
Uma parte muito interessante na criação de acls é que podemos criar diferentes acls, de acordo com o horário, data, ip, MAC e domínio.
Caso seja necessário bloquear o site do Youtube em uma empresa apenas no horário de expediente e para todos os empregados, exceto o presidente da empresa e o administrador da rede, teríamos que definir algumas acls.
Para definir uma acl para o presidente da empresa, poderíamos definí-la pelo MAC adress da placa de rede utilizada no computador do presidente.
acl presidente arp XX:XX:XX:XX:XX:XX
onde os X devem ser substituidos pelos valores do MAC.
Agora definimos uma acl para o administrador da rede, vamos fazê-lo utilizando o endereço ip.
acl admin src x.x.x.x
onde os x devem ser substituidos pelos valores do ip.
Vamos criar uma acl para o domínio do Youtube.
acl YOUTUBE dstdomain youtube.com
Por último, vamos definir a acl expediente para o horário de expediente e também final de semana.
acl expediente time MTWHF 8:0000−18:00
acl final_de_semana time SA 0:0000−24:00
Agora vamos definir os direitos de acesso.
http_access allow YOUTUBE admin presidente
http_access deny YOUTUBE all expediente
http_access allow YOUTUBE all final_de_semana
Bloqueando portas
acl SSL_ports port 443 # https
acl SSL_ports port 873 # rsync
acl Safe_ports port 80 # http
acl Safe_ports port 21 # ftp
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
Depois de definir acls com as portas que são consideradas seguras, basta bloquear todas as outras.
http_access deny !Safe_ports
Configurando o cache
cache_mem 256 MB
cache_swap_low 90
cache_swap_high 95
maximum_object_size 4096 KB
maximum_object_size_in_memory 20 KB
cache_dir aufs /var/cache/squid 4096 16 256
cache_access_log /var/log/squid/access.log
Reiniciando o Squid
debian:~# /etc/init/d/squid start
Proxy Reverso
Para configurar o Squid como proxy reverso, basta adicionar as seguintes opções no squid.conf.
http_port 80
httpd_accel_host 172.16.0.1
httpd_accel_port 80
httpd_accel_single_host on
httpd_accel_uses_host_header off
Limitação de banda e limitação de conexões por usuários
Limitação de banda
acl controle1 url_regex −i 172.16.0
acl controle2 url_regex −i ftp .exe .mp3 .tar.gz .gz .zip .rar .avi .mpeg .mpg .qt .ram .rm .is
delay_pools 2
delay_class 1 2
delay_parameters 1 −1//−1 −1//−1
delay_access 1 allow controle1
delay_class 2 2
delay_access 2 allow rede_interna
delay_access 2 allow controle2
Limitação de conexões
acl CONEXOES maxconn 10
http_access deny CONEXOES rede_interna
Obs.: para utilizar a limitação de banda é necessário que o Squid tenha sido compilado com a opção -enable-delay-pools.
Autenticação de usuários
auth_param basic program /usr/lib/squid/ncsa_auth /etc/squid/
auth_param basic children 5
auth_param basic realm Digite seu Login
Criar um arquivo com as senhas.
debian:~# touch /etc/squid/passwd
Para inserir um novo usuário digite:
debian:~# htpasswd /etc/squid/passwd NOME_DO_USUARIO
Adicione também a seguinte acl.
acl rede_interna proxy_auth REQUIRED
Filed under: cdtc | Closed

