Instalação
Baixando o source do squid 3.1.16
$wget "http://www.squid-cache.org/Versions/v3/3.1/squid-3.1.16.tar.gz"
Extraindo o source do download acima
$tar -xzvf squid-3.1.16.tar.gz
$cd squid-3.1.16
$./configure --prefix=/usr/local/squid \
--enable-err-Portuguese=lang \
--mandir=/usr/share/man \
--enable-auth="basic,digest,ntlm" \
--enable-removal-policies="lru,heap" \
--enable-digest-auth-helpers="password" \
--enable-basic-auth-helpers="getpwnam,YP,NCSA,MSNT" \
--enable-external-acl-helpers="ip_user,unix_group,wbinfo_group" \
--enable-ntlm-auth-helpers="fakeauth,no_check" \
--enable-removal-policies \
--enable-linux-netfilter \
--enable-ident-lookups \
--enable-useragent-log \
--enable-cache-digests \
--enable-delay-pools \
--enable-referer-log \
--enable-underscores \
--enable-async-io \
--enable-truncate \
--enable-arp-acl \
--with-pthreads \
--enable-icmp \
--enable-htcp \
--enable-carp \
--enable-poll \
--enable-snmp \
--enable-wccp \
--enable-ssl
$make
#make install
Configuração
Como foi definido o local da instalação em /usr/local/squid no ./configure
#mv /usr/local/squid/etc/squid.conf /usr/local/squid/etc/squid.conf.bkp
squid.conf
#autenticação dos usuários para acesso
auth_param basic program /usr/local/squid/libexec/ncsa_auth /usr/local/squid/etc/passwd
auth_param basic children 5
auth_param basic realm COMPUTAÇÃO INTEGRAL
auth_param basic credentialsttl 2 hours
auth_param basic casesensitive off
acl autenticados proxy_auth REQUIRED
http_port 3128
visible_hostname mundodacomputacao
cache_mem 128 MB
maximum_object_size 512 MB
minimum_object_size 0 KB
cache_swap_low 90
cache_swap_high 95
cache_dir ufs /var/spool/squid 2048 16 256
cache_access_log /usr/local/squid/var/logs/cache.log
refresh_pattern ^ftp: 15 20% 2280
refresh_pattern ^gopher: 15 0% 2280
refresh_pattern . 15 20% 2280
acl manager proto cache_object
acl localhost src 127.0.0.1
acl autenticados proxy_auth REQUIRED
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 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 1025-65535 #portas altas
acl purge method PURGE
acl CONNECT method CONNECT
acl SSL_ports port 443 563
##ACLS
#criando ACLs para os usuários com acesso livre e restrito
acl grupo_liberado proxy_auth "/usr/local/squid/usuarios_liberados"
acl grupo_limitado proxy_auth "/usr/local/squid/usuarios_limitados"
#criando ACLs para restrição de sites e palavras
acl sitesbloqueados url_regex -i "/usr/local/squid/dominiosbloqueados"
acl palavrasproibidas url_regex -i "/usr/local/squid/palavrasproibidas"
acl sitespermitidos url_regex -i "/usr/local/squid/dominiospermitidos"
#ACL para bloquear skype
acl acl_url_im_skype url_regex ^((0|1[0-9]{0,2}|2[0-9]{0,1}|2[0-4][0-9]|25[0-5]|[3-9][0-9]{0,1})\.){3}(0|1[0-9]{0,2}|2[0-9]{0,1}|2[0-4][0-9]|25[0-5][3-9][0-9]{0,1})(:|/|$\?)
#controle de acesso
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
#http_access deny sitesbloqueados !grupo_liberado
#http_access deny palavrasproibidas !grupo_liberado
#http_access deny CONNECT acl_url_im_skype !grupo_liberado
http_access allow sitespermitidos
http_access allow localhost
http_access allow autenticados grupo_liberado
http_access allow autenticados grupo_limitado !sitesbloqueados !palavrasproibidas !acl_url_im_skype
http_access deny all
error_directory /usr/local/squid/share/errors/pt-br
Criando os arquivos que serão utilizados
#touch /usr/local/squid/dominiosbloqueados
#touch /usr/local/squid/palavrasproibidas
#touch /usr/local/squid/dominiospermitidos
#cp /usr/local/squid/sbin/squid /usr/sbin
#mkdir /usr/local/squid/var/cache
#mkdir /usr/local/squid/var/logs
#chmod 0777 /usr/local/squid/var/cache
#chmod 0777 /usr/local/squid/var/logs
#touch /usr/local/squid/usuarios_liberados
#touch /usr/local/squid/usuarios_limitados
BadListSites /usr/local/squid/dominiosbloqueados
orkut.com
www.orkut.com
facebook.com
www.facebook.com
twitter.com
www.twitter.com
www.issoebizarro.com
www.ebuddy.com
www.meebo.com
www.4shared.com
4shared.com
www.esnips.com
esnips.com
www.adrive.com
adrive.com
www.megaupload.com
megaupload.com
www.thepiratebay.org
thepiratebay.org
www.rapidshare.com
rapidshare.com
www.hotfile.com
hotfile.com
www.filecrop.com
filecrop.com
www.fileserv.com
fileserv.com
www.freeproxy.ca
freeproxy.ca
www.redtube.com
redtude.com
www.youtube.com
youtube.com
www.torproject.org
torproject.org
www.ninjacloak.com
ninjacloak.com
speedyhide.info/index.php
speedyhide.info
www.dropbox.com
www.baixandolegal.org
baixandolegal.org
www.baixebr.org
baixebr.org
www.superdownloads.com
superdownloads.com
www.superdownloads.com.br
superdownloads.com.br
www.baixaki.com.br
baixaki.com.br
www.tecmundo.com.br
www.techtudo.com.br
gizmodo.uol.com.br
BadListWords /usr/local/squid/palavrasproibidas
orkut
facebook
twitter
youtube
sexo
bondage
issoebizarro
tor
torproject
vidalia
ultrasurf
proxy
anonymous
gatewall.dll
ms
messenger
webmessengers
webmessenger
ebuddy
meebo
iloveim
skype
porno
sexy
safadinha
speedhide
ninjacloak
dropbox
piratebay
filecrop
baixaki
superdownload
techmundo
techtudo
gizmodo
Cadastrando usuários no proxy squid
#htpasswd -c /usr/local/squid/etc/passwd usuario1
Nota: O argumento -c é necessário apenas na primeira vez para criar o arquivo /usr/local/squid/etc/passwd.
#htpasswd /usr/local/squid/etc/passwd usuario2
Adicione os usuários com acesso livre no arquivo /usr/local/squid/usuarios_liberados
/usr/local/squid/usuarios_liberados
sysadmin
suportesystem
Adicione os usuários com acesso restrito no arquivo /usr/local/squid/usuarios_limitados
/usr/local/squid/usuarios_limitados
#Exemplo
usuario1
usuario3
usuario6
Configurando o proxy
No IE
No menu Ferramentas>Conexões da Internet na aba Conexões
clique no botão Configurações da LAN em Servidor proxy e nos campos Endereço e Porta coloque o IP de seu servidor proxy e porta utilizado do squid.
Nesse caso: Endereço: 192.168.1.103 Porta: 3128
No Firefox
Na opção Preferências do Firefox em Avançado na aba Rede no botão Configurar conexão marque o radiobutton Configuração manual de proxy digite nos campos Endereço e Porta o IP de servidor proxy e porta do squid.
Nesse caso: Endereço: 192.168.1.103 Porta: 3128 e marque também o checkbox Usar este proxy para todos os protocolos
Check-list do Squid
#squid -z
Iniciando o serviço
Copie este script retirado do Servidor Linux(Slackware) para iniciar/parar o squid, mas também funciona na distro Debian, basta mover o script para /etc/init.d/.
rc.squid.conf
#!/bin/sh
# Start/stop/restart/reload the Squid Internet Object Cache (squid)
# To make Squid start automatically at boot, make this
# file executable: chmod 755 /etc/rc.d/rc.squid
# Written for Slackware Linux by Erik Jan Tromp
# Modified by David Somero
SQUIDCFG=/usr/local/squid/etc/squid.conf
SQUIDCMD=/usr/sbin/squid
if [ ! -r $SQUIDCFG ]; then
echo "Please set the correct path to $SQUIDCFG"
exit 1
fi
if [ ! -x $SQUIDCMD ]; then
echo "$SQUIDCMD not found"
exit 1
fi
squid_start() {
# Create cache directory hierarchy if needed
ALL_DIRS=$(awk '/^cache_dir/ {print $3}' $SQUIDCFG)
[ -z "$ALL_DIRS" ] && ALL_DIRS=/var/cache/squid
for CACHE_DIR in $ALL_DIRS ; do
if [ ! -d $CACHE_DIR/00 ] ; then
echo "Creating swap directories: $SQUIDCMD -z"
$SQUIDCMD -z 2> /dev/null
break
fi
done
echo "Starting Squid: $SQUIDCMD -F"
$SQUIDCMD -F
}
squid_stop() {
COUNTDOWN=$(awk '/^shutdown_lifetime/ {print $2}' $SQUIDCFG)
[ -z "$COUNTDOWN" ] && COUNTDOWN=30
echo -n "Shutting down Squid in $COUNTDOWN seconds: "
$SQUIDCMD -k shutdown 2> /dev/null
while $SQUIDCMD -k check 2> /dev/null ; do
sleep 1
echo -n .
COUNTDOWN=$[ $COUNTDOWN - 1 ]
if [ $COUNTDOWN -le 0 ] ; then
$SQUIDCMD -k interrupt 2> /dev/null
sleep 1
break
fi
done
echo
}
squid_restart() {
squid_stop
sleep 1
squid_start
}
squid_reload() {
$SQUIDCMD -k reconfigure 2> /dev/null
}
case "$1" in
'start')
squid_start
;;
'stop')
squid_stop
;;
'restart')
squid_restart
;;
'reload')
squid_reload
;;
*)
echo "usage: $0 start|stop|restart|reload"
esac
No Slackware:
#chmod +x /etc/rc.d/rc.squid
#/etc/rc.d/rc.squid start
No Debian:
#chmod +x /etc/init.d/rc.squid
#/etc/init.d/rc.squid start
Pronto, toda vez que o usuário abrir o navegador irá pedir autenticação user/passwd para acessar a internet.
Agora vem uma dica, caso algum usuário do proxy retirar o ip:porta do navegador na tentativa de acessar a internet livremente, basta adicionar essa regra no seu script de firewall
iptables -t nat -A PREROUTING -i eth1 -p tcp --dport 80 -j REDIRECT --to-port 3128
Pronto, se o usuário retirar o ip:porta no navegador simplesmente não navega, se colocar navega com as regras do proxy squid.
A interface eth1 indica a placa da rede local, onde o proxy recebe as requisições dos outros micros da rede e o 3128 indica a porta usada pelo Squid.
PS:Nesse caso: eth0=rede externa(internet) e eth1=rede interna(intranet)
Verifique o log do Squid de acessos
# tail -f /usr/local/squid/var/logs/cache.log
Feito!
como faço para acessar sites https pelo proxy ?
ResponderExcluirPara que o squid possa aceitar https deve ter no squid.conf
ResponderExcluiracl Safe_ports port 443 563 #https,snews
Isso esta esclarecido no post.
PS: Apenas no proxy autenticado no Squid conforme esta no how-to do post.
boa tarde!
ResponderExcluirestou usando o opensuse 11 consegui fazer o download porem o comando para extrair tar -xzvf squid-3.1.16.tar.gz da esse erro
tar (child): squid-3.1.16.tar.gz: Não é possível open: Arquivo ou diretório não encontrado
tar (child): Error is not recoverable: exiting now
tar: Child returned status 2
tar: Error is not recoverable: exiting now
fiz a extração manual.
essas linas --enable-err-Portuguese=lang \
tenho que escrever manual? ou apos escrever o comando$./configure --prefix=/usr/local/squid \ ele completa sozinho aqui fica na linha abaixo >
tem como dar uma luz estou completamente perdido
ja estou a dois meses tentando colocar esse squid em atividade porem cada dica que encontro falta alguma coisa ou me perco em algum lugar.
outro detalhe minha rede ja tem um proxy. porem no modo grafico no mozila ta navegando tem alguma coisa a mais que preciso fazer? editar o apt-get?
Boa tarde!
ExcluirSobre o seu erro de tentar extrair com tar -xzvf squid.3.x.x.x.tar.gz deve ter feito o download da versão mais recente, logo deveria substituir para versão que baixou, assim conseguiria extrair normalmente.
Mas beleza, já conseguiu fazer extração do arquivo de outra maneira.
Então sobre as opções do ./configure --prefix-/usr/local/squid \ e demais opções deve digitar conforme que esta lá, tome cuidado na digitação, segue uma sugestão, selecione o trecho que deseja copiar e cola no terminal. O resto pode seguir rigorosamente os passos desse how-to que no final dará certo.
Grande dica @saitam,
ResponderExcluirComo eu não gosto do Squid3 e uso o Squid apenas em ambiente doméstico, baixei o source do Squid 2.7-9 do ftp do Debian e compilei adaptando parte de parte de sua dica, ficou excelente! dica aplicada no Slack Current, os passos:
$ wget http://ftp.de.debian.org/debian/pool/main/s/squid/squid_2.7.STABLE9.orig.tar.gz
$ tar -xzvf squid_2.7.STABLE9.orig.tar.gz
$ cd squid-2.7.STABLE9
$ ./configure --prefix=/usr/local/squid \
--enable-err-languages=Portuguese \
--mandir=/usr/share/man \
--enable-auth="basic,digest,ntlm" \
--enable-removal-policies="lru,heap" \
--enable-digest-auth-helpers="password" \
--enable-basic-auth-helpers="getpwnam,YP,NCSA,MSNT" \
--enable-external-acl-helpers="ip_user,unix_group,wbinfo_group" \
--enable-ntlm-auth-helpers="fakeauth,no_check" \
--enable-removal-policies \
--enable-linux-netfilter \
--enable-ident-lookups \
--enable-useragent-log \
--enable-cache-digests \
--enable-delay-pools \
--enable-referer-log \
--enable-async-io \
--enable-truncate \
--enable-arp-acl \
--with-pthreads \
--enable-icmp \
--enable-htcp \
--enable-carp \
--enable-poll \
--enable-snmp \
--enable-wccp \
--enable-ssl
$ make
# make install
Obrigado por compartilhar.
Olá Saitam, boa noite!
ResponderExcluirGostaria de adaptar essas mesma regras com autenticação ntlm no windows 2003, será que é possível estou fazendo um aqui, mas estou com muitas dificuldades, você pode me ajudar.
Cara,não testei o Squid no Windows, mas sei que existe versão do Squid for Windows. Então é possível aplicar a mesma configuração adaptando o local dos arquivos de configuração que são diferentes.
ResponderExcluirExemplo:
No Linux o local do arquivo squid.conf que fiz nesse tutorial foi /usr/local/squid/etc/squid.conf
No Windows o local é diferente, algo do tipo C:\squid\etc\squid.conf (seguindo a estrutura similar)
Cria um diretório em C:\squid e em seguinda
C:\squid\etc dentro deste os arquivos dominiosbloqueados e palavrasproibidas
Também squid.conf onde estarão as regras ACLs do Squid.
Depois precisa colocar o Squid como serviço do Windows e criar um .bat para startar|stop|restart o squid.
Bom seria isso Squid no Windows.
Particularmente prefiro o Squid no Linux, pois o desempenho é muito melhor.
Opa Reginaldo,
Excluirobrigado pelo retorno, acho que não me expressei direito eu quero que o squid pegue a a lista de usuários que tem no AD e autentique-os, baseando no script que ficou muito claro eu consegui fazer \o/, porém ele pede senha de três a cinco vezes para autenticar o user no navegador, vou postar meu script, se você conseguir visualizar o que está errado eu agradeceria.
#Porta utilizada pelo Proxy Squid
http_port 3128
# FQDN do Proxy
visible_hostname proxyadvisor.addvisor.com.br
# Configuracoes gerais
hierarchy_stoplist cgi-bin ?
acl QUERY urlpath_regex cgi-bin \?
cache deny QUERY
cache_effective_user proxy
cache_mem 512 MB
cache_dir ufs /var/spool/squid3 2048 16 256
error_directory /etc/squid3/errors
coredump_dir /var/spool/squid3
refresh_pattern ^ftp: 1440 20% 10080
refresh_pattern ^gopher: 1440 0% 1440
refresh_pattern . 0 20% 4320
# Arquivos de log
access_log /var/log/squid3/access.log squid
cache_log /var/log/squid3/cache.log squid
# Configuracao de autenticacao utilizando grupos e usuarios do AD
auth_param ntlm program /usr/bin/ntlm_auth --helper-protocol=squid-2.5-ntlmssp
auth_param ntlm children 30
#auth_param basic credentialsttl 2 hours
#auth_param basic casesensitive off
#Esta acl faz consulta nos Grupos do Active Directory
external_acl_type NT_global_group children=10 %LOGIN /usr/lib/squid3/wbinfo_group.pl
acl autenticacao proxy_auth REQUIRED
# ACL's que definem os grupos do AD
# Grupo INTERNET_01 acesso liberado
# Grupo INTERNET_02 acesso restrito bloqueia os dominios dentro de "/etc/squid/lists/acessos_bloqueados"
acl INTERNET_01 external NT_global_group grupo_liberado
acl INTERNET_02 external NT_global_group grupo_restrito
##acl all src 0.0.0.0/0.0.0.0
acl manager proto cache_object
acl localhost src 127.0.0.1/32
acl to_localhost dst 127.0.0.0/8
acl SSL_ports port 443 # https
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 5938 # team viewer
acl CONNECT method CONNECT
# ACL's que definem a rede interna
acl REDE_INTERNA_ORIGEM src 10.20.2.0/24
acl REDE_INTERNA_DESTINO dst 10.20.2.0/24
# ACL's com listas de acessos
acl DOMINIOS_BLOQUEADOS url_regex -i "/etc/squid3/lists/acessos_bloqueados"
acl DOMINIOS_SEM_AUTENTICACAO url_regex -i "/etc/squid3/lists/acessos_sem_autenticacao"
acl DOMINIOS_MSN url_regex -i "/etc/squid3/lists/acessos_msn"
acl PALAVRAS_BLOQUEADAS url_regex -i "etc/squid3/lists/palavras_bloqueadas"
# ACL's para MSN e Skype
acl MSN url_regex -i gateway\.dll
acl MSN url_regex -i gateway
acl SKYPE_01 url_regex -i skype
acl SKYPE_02 browser ^skype^
acl SKYPE_NUMERIC_IPs dstdom_regex ^[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+
# Libera acessos locais (rede interna)
http_access allow REDE_INTERNA_DESTINO
# Configura acessos permitidos e restritos
### INTERNET_01 -> Tudo liberado
### INTERNET_02 -> Acesso restrito "/etc/squid3/lists/dominios_bloqueados"
http_access allow DOMINIOS_SEM_AUTENTICACAO
http_access allow INTERNET_01
http_access allow INTERNET_02 !DOMINIOS_BLOQUEADOS !PALAVRAS_BLOQUEADAS
# Politicas de acessos default
http_access allow manager localhost
http_access deny manager
http_access deny !Safe_ports
http_access deny CONNECT !SSL_ports
http_access allow localhost
http_access deny all
icp_access allow all
error_directory /usr/share/squid3/errors/pt-br/
coredump_dir /var/spool/squid3
Renato, fez a configuração do Winbind+Kerberos também ?
ExcluirE faltou a ACL do AD
auth_param basic program /usr/lib/squid3/squid_ldap_auth -R -b "dc=dominio,dc=local" -D "cn=Administrador,cn=Users,dc=dominio,dc=local" -w "SENHA_DO_AD" -f sAMAccountName=%s -h ip_do_ad
acl autentica proxy_auth REQUIRED
http_access allow autentica
Isso faz a integração do Linux com domínio NT (Windows - AD).
Cara, boa tarde, gostaria de saber se tem como liberar o Team Viewer para funcionar no Squid, sendo que a porta 443, eu tenho problemas com webproxy que o pessoal coloca na rede e quebra a segurança do squid. Tem como me ajudar
ResponderExcluir@Reinaldo Lima,
Excluiradicione no seu script firewall, supondo que tenha um script com regras iptables para firewall, então segue as regras para liberar o Team Viewer na sua rede.
Método 1: Pelo Firewall via Iptables
Primeiro ative no firewall o módulo ipt_string
/sbin/modprobe ipt_string
Coloque a linha acima no início do script e as regras abaixo na ordem das chains que estão no script firewall...
iptables -I OUTPUT -p tcp -m string --algo bm --string "teamviewer" -m multiport --dport 80,443,5389 -j ACCEPT
iptables -I FORWARD -p tcp -m string --algo bm --string "teamviewer" -m multiport --dport 80,443,5389 -j ACCEPT
iptables -I FORWARD -m string --algo bm --string "teamviewer" -j ACCEPT
iptables -I OUTPUT -m string --algo bm --string "teamviewer" -j ACCEPT
Método 2: Pelo Squid
Adicionar a ACL teamviewer e definir como allow nessa ACL criada.
# Liberar o TeamViewer
acl teamviewer url_regex dout.aspx din.aspx
http_access allow teamviewer
Ok ?
Boa tarde,
ResponderExcluirPrimeiramente meus parabéns pelo post !!
Gostaria de saber como voce criou os grupos que estao nas acl's..ex: !grupo_liberado e !grupo_limitado.
Esses grupos foram criados dentro do arquivo de usuários para autenticar no proxy no local de conf do squid ?
estou precisando muito disso.
Aguardo resposta,
Obrigado
Felipe,
ExcluirOs grupos grupo_liberado e grupo_limitado foram criados arquivo e no arquivo criado para esses grupos foi adicionado os usuários com acesso limitado e liberado.
Assim:
Considerando que utilizou o mesmo caminho de diretórios na instalação do Squid, caso contrário deve substituir para o caminho que utilizou na sua instalação do Squid.
criar o arquivo para os grupos
#touch /usr/local/squid/usuarios_liberados
#touch /usr/local/squid/usuarios_limitados
Cadastrando usuários no proxy squid
#htpasswd -c /usr/local/squid/etc/passwd usuario1
Nota: O argumento -c é necessário apenas na primeira vez para criar o arquivo /usr/local/squid/etc/passwd.
#htpasswd /usr/local/squid/etc/passwd usuario2
Adicione os usuários com acesso livre no arquivo /usr/local/squid/usuarios_liberados
#vim /usr/local/squid/usuarios_liberados
sysadmin
suportesystem
Adicione os usuários com acesso restrito no arquivo /usr/local/squid/usuarios_limitados
#vim /usr/local/squid/usuarios_limitados
#Exemplo
usuario1
usuario3
usuario6
Substitui o usuario1 pelo nome do usuário que cadastrou.
Feito.
Reginaldo , boa tarde ! parabéns tutorial ficou muito bom .
ResponderExcluirSera que tem como me ajuda ? Estou com o squi instalado e rodando no win /Nt2003 e preciso tirar um relatório completo de todos os usuario e pcs instalados na rede . Como faço o 'sarg "e aceitável pelo windows nt 2003 ? qual é o procedimento para instalação no Nt2003 ? Desde ja agradeço a ajuda
@Julio Cesar, a principio deve funcionar o Sarg no Windows Server 2003, de uma olhada no tutorial http://mundodacomputacaointegral.blogspot.com.br/2012/01/usando-sarg-para-monitorar-acessos-do.html só que precisa alterar os caminhos absolutos para o seu cenário que é Windows Server 2003, ok?
Excluir