sexta-feira, 27 de maio de 2011

Instalando um proxy squid (Firewall)

27/05/2011.

Começando este post queria dizer que todas as sextas-feiras irei estar postando um tutorial destinado a usuários mais avançados, e para começar vamos ver como se instala um proxy mais precisamente o squid muito usado no controle de acessos e CACHE, eu particularmente já o utilizo na empresa onde trabalho e ele se mostra muito util e estável  no quesito segurança se bem configurado

Mas  o que é o Squid?
Basicamente Squid é um proxy-cache de alta performance para clientes web,
suportando protocolos FTP, gopher e HTTP, o Squid mantém meta dados e especialmente objetos armazenados na RAM,
cacheia buscas de DNS e implementa cache negativo de requests falhos.
Instalando...
O squid pode ser instalado em praticamente todas as distribuições do linux logo o requisito básico é ter uma distribuição na máquina.


Instalando em um sistema baseado em Debian:
 # apt-get install squid

Limpando o squid.conf

O arquivo de configuração do squid é o squid.conf, normalmente ele se
encontra em /etc/squid.conf ou em /usr/local/squid/etc/squid.conf.
Caso não encontre o seu em nenhum desses lugares, procure-o com:

# locate squid.conf 
  
     ou
  
  # find squid.conf 

   Pode parecer fútil, mas uma limpeza inicial no arquivo squid.conf pode
ser bem útil. O arquivo de configuração original tem, em média, 2000
linhas. pode usar este comando ou apagar manualmente o que levará um certo tempo
# cp squid.conf squid.conf.original 
  # egrep -v "^#|^$" squid.conf.original > squid.conf

Configurações básicas - ACLs


Como comentado mais tarde, toda a estrutura do Squid é baseada em
listas de acessos. Vamos entrar em detalhes mais para frente. Por hora
vamos criar uma lista de acesso básica para nossos usuários.

Vamos supor que nossa rede interna seja 192.168.5.0/24. Crie a
seguinte linha no squid.conf, na seção de ACLs (TAG: acl):

acl rede_interna src 192.168.5.0/24


E a seguinte linha na seção de acesso (TAG: http_access)

http_access allow rede_interna

Transparent Proxy


   Esse recurso é muito útil para evitar que seus usuários "burlem" o
proxy removendo as configurações do browser. Eles serão obrigados a
passar pelo proxy, mesmo que as máquinas não estejam configuradas para
tal. Extremamente recomendado, principalmente em casos de bloqueio de
sites ou limitação de banda.
 Experiências pessoais comprovam que usuários com um pouco mais de
conhecimentos irão remover a configuração de proxy assim que o
administrador sair da sala, seja por ignorância das funcionalidades,
seja por medo de ser auditado ou simplesmente por má conduta.

Vamos inserir as seguintes linhas:

httpd_accel_host virtual
     httpd_accel_port 80
     httpd_accel_with_proxy on
     httpd_accel_uses_host_header on
esse é um exemplo didático no squid que eu uso essas linhas são um pouco diferente mas nada que vá afetar a funcionabilidade.

Provavelmente você já tenha seu script de inicialização do firewall,
sendo assim a única coisa necessária inserir essa linha nele:

# iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 3128

Bloqueando Sites indesejados


   A partir de agora vamos começar a trabalhar com ACLs (Access Control
Lists). O conceito de ACL é muito útil, por nos permitir trabalhar com
níveis de acesso baseados em diversas informações.
Não é incomum que em uma instalação de Squid, a diretoria possa
acessar qualquer site, a gerência não possa acessar determinados sites
e os "peões" tenham acesso apenas ao site da empresa e de parceiros.
Graças ao uso de ACLs e um pouco de imaginação e suor, podemos fazer
todas essas restrições.
Todas as configurações de usuários, grupos, horários e SITES são
configuradas em ACLs,

Procure no seu squid.conf onde começam a ser descritas as ACLs.
Geralmente a primeira ACL a aparecer é:

acl all src 0.0.0.0/0.0.0.0

Criando os arquivos necessários


Vamos fazer o seguinte:
# mkdir /etc/squid/bloqueados 

   ou
# mkdir /usr/local/squid/etc/bloqueados 
  # touch /etc/squid/bloqueados/block.txt 


   ou
# touch /usr/local/squid/etc/bloqueados/block.txt 
  # touch /etc/squid/bloqueados/unblock.txt 

   ou
# touch /usr/local/squid/etc/bloqueados/unblock.txt 

   O arquivo block.txt irá conter todos os sites e palavras que você
deseja bloquear e o unblock.txt todas as exceções. "Como assim?", você
pergunta.

   Vamos supor que você tenha bloqueado a palavra sexo. Então você não
poderá entrar em www.sexo.com.br, mas também não poderá entrar em
www.sexoesaude.com.br. Ora, mas esse segundo site é inofensivo,
portanto não deveria ser bloqueado. Basta colocá-lo no unblock.txt.

Editando o squid.conf


Vamos ao squid.conf
   Insira as linhas abaixo logo antes de acl all src
acl blockedsites url_regex -i "/etc/squid/bloqueados/block.txt"
  acl unblockedsites url_regex -i "/etc/squid/bloqueados/unblock.txt"

   ou
acl blockedsites url_regex -i "/usr/local/squid/etc/bloqueados/block.txt"
  acl unblockedsites url_regex -i "/usr/local/squid/etc/bloqueados/unblock.txt"

   Agora procure no seu squid.conf a linha http_access deny all e coloque
antes dela:
http_access deny blockedsites !unblockedsites

   DICA: O "!" Significa sempre negação de alguma coisa.




Controle de banda, aqui iremos controlar a banda atraves da propria ACL de foma a restringir certas extensões que ocupam banda

Editando o squid.conf


Vamos adicionar algumas linhas. A primeira vai evitar que haja
restrição de banda internamente, por isso não deixe de colocá-la.

acl controle1 url_regex -i 192.168.5
  acl controle2 url_regex -i ftp .exe .mp3 .tar.gz .gz .zip .rar .avi .mpeg .mpg .qt .ram .rm .iso .raw .wav 
  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


SARG


Desenvolvido pelo brasileiro Pedro Orso, ele transforma o log do squid
em um relatório html legível e completo.

Instalação



# wget http://web.onda.com.br/orso/sarg-1.4.tar.gz 
  # tar zxvf sarg-1.4.tar.gz 
  # cd sarg-1.4/ 
  # ./configure 
  # make 
  # make install 

Configuração


Por padrão o sarg é instalado em /usr/local/sarg. Nesse diretório
encontramos o arquivo sarg.conf entre as muitas opções, recomendo as
seguintes:


  • language Portuguese
  • access_log /var/log/squid/access.log
  • title "Relatório de uso da internet"
  • temporary_dir /tmp
  • output_dir /var/www/squid-reports
  • resolve_ip no
  • user_ip yes
  • topuser_sort_field BYTES reverse
  • topsites_num 100
  • max_elapsed 28800000

Sendo importante destacar:



ComandosDescrição
access_logIndica o arquivo de log do squid
output_dirIndica onde será gerado o html. É recomendável que seja em um local acessível pelo seu http server
resolve_ipEvita que o sarg tente fazer resolução de DNS
user_ipSe você não estiver utilizando autenticação por usuário, coloque "no" . Se estiver, coloque "yes"
topsites_numQuantidade de sites que você quer ver como os TOP de acessos


Gerando os relatórios


   Depois de configurar o sarg.conf, basta gerar os relatórios com o
comando

# sarg 


Exemplo de relatório do SARG

Dica


Os relatórios do Sarg ocupam um imenso espaço em disco, principalmente pelo falto de não ter um rotate nem comprimir os HTMLS. Podemos contornar isso colocando em nossa crontable:

find /var/www/squid-reports/ -name "*.html" -type f -mtime +30 -exec bzip2 {} \;
  find /var/www/squid-reports/ -name "*.bzip2" -type f -mtime +180 -exec rm -rf {} \;
Bom a grosso modo é assim que a coisa flui, dúvidas  sugestões criticas estamos ai !!
até sexta que vem como próximo tutorial.

Nenhum comentário:

Postar um comentário