ajax loader

Esqueceu sua senha?

Instalação e configuração do servidor proxy SQUID

SQUID


  • É o mais popular servidor Proxy em software livre e um dos melhores softwares para a função do mercado. Seu uso pode ser variado, podendo ocultar sessões repetidas, esconder www, DNS, e outros recursos de rede compartilhados para um grupo de pessoas.
  • O Squid utilizado por muitos protocolos, embora trabalhe principalmente usado para HTTP e FTP. Também tem suporte para TLS, SSL e HTTPS.
  • Seu principal arquivo de configuração é o squid.conf e encontra-se no diretório /etc/squid contendo aproximadamente 3000 linhas.
  • Permite trabalhar com níveis de acesso.
  • Permite distribuição de carga.
  • Permite vários tipos de autenticação como SAMBA, kerberos, Mysql, Postgress, Ldap, AD e outros.


Instalando o SQUID


A instalação do Squid pode ser efetuada através da compilação do código fonte obtido através do site http://www.squid-cache.org ou se utilizar um sistema operacional que trabalhe com pacotes ...

  • Redhat/Fedora/etc...
$ yum install squid
  • Debian/Ubuntu/etc/
$ apt-get install squid

1 - Para configurar, basta editar o arquivo squid.conf em /etc/

$ mcedit /etc/squid.conf

2 - Descomentar a linha ao qual contem a porta 3128 (default)

# http_port 3128 para
http_port 3128

3 – Alterar o tipo de acesso aos usuário

# http_access deny all para
http_access allow all
/etc/init.d/squid restart


Squid Transparente

 

1 – Redirecionar a porta 80 para 3129 no firewall

iptables -t nat -A PREROUTING -s SQUIDIP -p tcp --dport 80 -j ACCEPT
iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-port 3129

2 – Alterar a linha da porta 3129 para transparente:

http_port 3129 transparent
/etc/init.d/squid restart


Ajustes - Criação de Regras

 

Exemplos de configuração:

 

1 - Permitir http_access para apenas uma máquina com MAC address igual a 00:08:c7:9f:34:41 :

acl all src 0.0.0.0
acl pl800_arp arp 00:08:c7:9f:34:41
http_access allow pl800_arp
http_access deny all

2 - Para restringir acesso nas horas de trabalho (9 horas - 17 horas, de segunda sexta)da faixa de IP 192.168.2.0 máscara 255.255.255.0 :

acl all src 0.0.0.0
acl ip_acl src 192.168.2.0/24
acl time_acl time M T W H F 9:00-17:00
http_access allow ip_acl time_acl
http_access deny all

3 - Criar uma acl para bloquear sites com a palavra sexo pois meus funcionários ficam baixando filmes em Divx de pornografia:

acl porno url_regex sexo
http_access deny porno

4 - Criar uma acl para bloquear lista de palavras, separadas por linha, a partir do arquivo /etc/squid/porno.txt:

acl porno url_regex \\\"/etc/squid/porno.txt\\\"
http_access deny porno

5 - Criar uma acl para bloqueio direto ao endereço de um site:

acl porno2amissao dstdomain playboy.com

6 - Criar uma acl para bloqueio de sites a partir de um arquivo em /etc/squid/pornosites.txt:

acl porno2amissao dstdomain "/etc/squid/pornosites.txt"
http_access deny porno2amisao

7 - Criar uma acl para a liberacao de sites a partir de um arquivo em /etc/squid/livres.txt:

acl sitelivre urlpath_regex livres
http_access allow sitelivre

Obs.: Esta regra deve ser adicionada ANTES dos bloqueios


Autenticações

 

1 – Para uma autenticação a partir da lista de usuários do próprio servidor:

authenticate_program /usr/local/squid/bin/ncsa_auth /usr/local/squid/etc/passwd
acl auth_users proxy_auth REQUIRED
http_access allow auth_users

2 – Para uma autenticação a partir da lista de usuários em um servidor SAMBA(PDC)*:

authenticate_program /usr/local/bin/smb_auth -W MEDIA@VANTAGE
acl auth_users proxy_auth REQUIRED
http_access allow auth_users
*WinBind

3 – Para uma autenticação a partir da lista de usuários autenticados em uma base do tipo LDAP

auth_param basic program /usr/lib/squid/squid_ldap_auth -v 3 -b
"dc=yourcompany,dc=com" -D uid=some-user,ou=People,dc=yourcompany,dc=com -w
password -f uid=%s ldap.yourcompany.com
auth_param basic children 5
auth_param basic realm Web-Proxy
auth_param basic credentialsttl 1 minute
acl ldap-auth proxy_auth REQUIRED
http_access allow ldap-auth
http_access allow localhost
http_access deny all

4 – Para uma autenticação a partir da lista de usuários autenticados em um banco de dados MySQL

auth_param basic program /usr/local/squid/libexec/squid_db_auth --user someuser --password xxxx --plaintext --persist
auth_param basic children 5
auth_param basic realm Web-Proxy
auth_param basic credentialsttl 1 minute
auth_param basic casesensitive off
acl db-auth proxy_auth REQUIRED
http_access allow db-auth
http_access allow localhost
http_access deny all

Adicionais

O squid permite que outros softwares possam interagir para um melhor desempenho e usabilidade.

  • SquidGuard:

Ferramenta que trabalha com BlackLists aumentando assim o numero de sites/URls bloqueados. http://www.squidguard.org

  • SquidClamav:

Ferramenta que interage com o antivírus livre Clamav possibilitando assim varreduras dos sites em tempo real. http://freshmeat.net/projects/squidclamav/

  • SquidDefender:

Script pra analizar logs do SQUID e detectar ataques conhecidos. http://www.jeroen.se/squidefender.php


Usando o Sarg para monitorar o acesso


apt-get install update
apt-get install sarg

Após o processo de instalação, o principal arquivo de configuração denominado sarg.conf poderá ser localizado no diretório: /etc/squid/

Por padrão os relatórios vão para a pasta /var/www/squid-reports/

Este padrão, junto com outras configurações podem ser alteradas no arquivo de configuração do Sarg, que é o sarg.conf. O arquivo é auto explicativo, nele você pode alterar os diretórios padrão, alterar o layout da página de relatórios e ativar recursos como o envio de uma cópia do relatório por e-mail sempre que o sarg for executado.

# /etc/squid/sarg.conf
#
# *** Idioma
language Portuguese
#
# *** Arquivo de log a ser lido para gerar relatório
access_log /var/log/squid/access.log
#
#*** Usar Gráfico - yes | no
graphs yes
#
# *** Título da pagina HTML
title "Relatorio de uso da Internet"
#
# *** Fonte da pagina HTML
font_face Tahoma,Verdana,Arial
#
# *** Nome do diretorio temporário dos arquivos em trabalho
# sarg -w dir
temporary_dir /tmp
#
# *** Diretório onde serão salvos os relatórios
# sarg -o dir
output_dir /var/www/squid-reports
#
# *** Converte IP em DNS (nome) - yes | no
# sarg -n
resolve_ip
#
# *** Usa IP ao inves de userid nos relatórios - yes | no
# sarg -p
user_ip no
#
# *** Ordena - normal | reverse
# Campos permitidos: USER | CONNECT | BYTES | TIME 
topuser_sort_field BYTES reverse
#
# *** Usuarios contidos no sarg.users São excluídos do relatório
exclude_users /etc/squid/sarg.users
#
# *** Exclui host, domínios ou subredes do relatório
# Ex: 192.168.10.10 - exclui ip apenas
# 192.168.10.0 - exclui toda classe C
# s1.acme.foo - exclui hostname apenas
# acme.foo - exclui tod domínio
exclude_hosts /etc/squid/sarg.hosts
#
# *** Formata a data do relatório
# e (European=dd/mm/yy)
# u (American=mm/dd/yy)
# w (Weekly=yy.ww)
date_format e
#
# *** Remove relatórios antigos automaticamente
# 0 - sem limites.
lastlog 0
#
# *** Remove os arquivos temerários
remove_temp_files yes
#
# *** Gera o index.html - yes | no | only
# only - gera apenas um unico index.html principal
index yes
#
# *** Sobrescrever relatório - yes | no
overwrite_report yes
#
# *** O que fazer com registros sem identificação no access.log
# ignore - Ignora os registros
# ip - Usa o IP
# everybody - Usa o texto "everybody"
records_without_userid ip
# 
# *** Usa vírgula ao invés de ponto no | yes
use_comma yes
#
# *** Comando para enviar relatório via SMTP - mail|mailx
mail_utility mailx
#
# *** Quantidade de sites do relatório topsites
topsites_num 100
#
# *** Ordena os topsites - CONNECT|BYTES A|D
# Onde A=Crescente, D=Descendente
topsites_sort_order CONNECT D
#
# *** Ordena o index.html - A | D
# Onde A=Crescente, D=Descendente
index_sort_order D
#
# *** Ignora registros com alguns códigos
# Ex: NONE/400
exclude_codes /etc/squid/sarg.exclude_codes
#
# *** Máximo de tempo decorrido (milliseconds)
# Use 0 para nao checar
max_elapsed 28800000
#
# *** O que os relatorios geram:
# topsites - exibe o site, conexao e bytes
# sites_users - exibe que usuario esteve num site
# users_sites - exite site acessados pelo usuario
# date_time - exibe a quatidade de bytese num dia/h
# denied - exibe todos os sites negados
# auth_failures - exibe as falhas nas autenticacoes
# site_user_time_date - exibe sites, datas, tempo e bytes
# Ex.: report_type topsites denied
#
report_type topsites sites_users users_sites date_time denied auth_failures
site_user_time_date
#
# *** Troca o IP ou userid pelo nome do usuario no relatorio 
# Ex:
# SirIsaac Isaac Newton
# vinci Leonardo da Vinci
# 192.168.10.1 Karol Wojtyla
# Cada linha precisa terminar com ' ' (enter)
usertab /etc/squid/sarg.usertab
#
# *** Exibe a URL longa ou so o site - yes | no
long_url no
#
# *** Data/Hora ou Tempo decorrido - bytes | elapsed
date_time_by bytes
#
# *** Padroes de multilinguagem
# Voce pode usar os seguintes caracteres:
# Latin1 - West European
# Latin2 - East European
# Latin3 - South European
# Latin4 - North European
# Cyrillic
# Arabic
# Greek
# Hebrew
# Latin5 - Turkish
# Latin6
# Windows-1251
# Koi8-r
charset Latin1
#
# *** Gera relatorios apenas dos usuarios listados
# Ex: include_users "user1:user2:...:usern"
#include_users none
#
# *** Gera relatorio ignorando uma lista de string
# Ex: exclude_string "string1:string2:...:stringn"
#exclude_string none
#
# *** Exibe mensagem de sussesso do relatorio gerado-yes|no
show_successful_message no
#
# *** Exibe a leitura de algumas estatisticas
show_read_statistics no
#
# *** Quais campos devem ser do relatorio Topuser
topuser_fields NUM DATE_TIME USERID CONNECT BYTES %BYTES
IN-CACHE-OUT USED_TIME MILISEC %TIME TOTAL AVERAGE
#
# *** Quais campos devem ser do relatorio User
user_report_fields CONNECT BYTES %BYTES IN-CACHE-OUT USED_TIME
MILISEC %TIME TOTAL AVERAGE
#
# *** Quantidade de usuarios do relatorio Topsites
# 0 = sem limites
topuser_num 0
#
# *** Gera relatorio em formato de lista ou tabela-list|table
site_user_time_date_type table
#
# *** Salva o resultado do relatorio em um arquivo
#datafile /tmp/p8
#
# *** Usa um caracter separador dos campos no arquivo
#datafile_delimiter ";"
#
# *** Quais campos de dados devem ter o arquivo
# Ex: datafile_fields all ou user
# Campos permitidos:
# user;date;time;url;connect;bytes;
# in_cache;out_cache;elapsed
#datafile_fields
#user;date;time;url;connect;bytes;in_cache;out_cache;elapsed
#
# *** Dias da semana levados em conta (Domingo->0,Sabado->6)
# Ex: weekdays 1-3,5
#weekdays 0-6
#
# *** Horas levadas conta
# Ex: hours 7-12,14,16,18-20
#hours 0-23
#
# *** Gera um relatorio para o log do SquidGuard
# Ex: squidguard_conf /usr/local/squidGuard/squidGuard.conf
#squidguard_conf none
#
# *** Exibe informacoes do sarg e site no relatorio - yes|no
#show_sarg_info yes
#
# *** Exibe logotipo do sarge - yes|no
show_sarg_logo yes 
#
# *** Onde esta seus documentos Web
#www_document_root /var/www
#
# *** Sufixo de arquivos considerados como dowloads no
# relatorio de downloads. Use 'none' para desabilitar
download_suffix "zip, arj, bzip, gz, ace, doc, iso, adt, bin, cab, com, dot, drv$,
lha, lzh, mdb, mso, ppt, rtf, src, shs, sys, exe, dll, mp3, avi, mpg, mpeg"

Para gerar relatórios, vá ao terminal e digite:

sarg

Relatórios

O squid produz um log de acesso com o seguinte conteúdo:

[root@r2d2 root]# tail -f /usr/local/squid/var/logs/accesss.log
1045768398.423 4 192.168.1.81 TCP_DENIED/407 1621 CONNECT simg.bol.com.br:443 - NONE/- text/html
1045768398.437 5 192.168.1.81 TCP_DENIED/407 1687 CONNECT simg.bol.com.br:443 - NONE/- text/html
1045768398.705 519 192.168.1.81 TCP_MISS/200 1107 GET
http://img.bol.com.br/premium/vantagens.gif nwtraders\\\\amoraes DIRECT/200.221.7.120 image/gif
1045768398.806 571 192.168.1.81 TCP_MISS/200 2469 GET
http://img.bol.com.br/premium/ico_planos.gif nwtraders\\\\amoraes DIRECT/200.221.7.122 image/gif

Como lêr?

SARG

O Sarg é um interpretador de logs para o Squid, que ao ser executado cria um conjunto de páginas, divididas por dia, com todos os Ips(destino/origem). Caso o proxy tenha sido configurado para autenticação sera retornado o nome de cada usuário.

Screenshot do Sarg
 
 
Screenshot2 Sarg
 
Screenshot3 Sarg
 
Screenshot4 Sarg
 
Screenshot5 Sarg
 
Screenshot6 Sarg
 
Screenshot7 Sarg
 
screenshot8 Sarg
 

Referências

http://www.squid-cache.org/

http://www.linuxman.pro.br/squid/

http://winsquid.mgdtecnologia.com.br/

http://www.squidguard.org/

http://sarg.sourceforge.net/squid-reports/index.html

http://www.zago.eti.br

http://www.vivaolinux.com.br/artigo/Instalando-servidor-Debian-Memento

16/01/2012 às 01:52    acessos (67516)     mendesbsb
Excelente tutorial, caro mendesbsb ! Bem detalhado, muito bom para quem está iniciando a familiarização com o proxy Squid e todo seu potencial ! Apenas um detalhe, poderias revisar o link das imagens ? não estão sendo exibidas no tutorial. Abraço, wil_ramos.

Gostaria de deixar o seu comentário? Para deixar o seu comentário por favor faça o registro em nosso site.   Registrar