Filtro de conteúdo autenticado com níveis de privilégio

No final de setembro de 2005 implementei para um cliente uma máquina gateway de internet com proxy Squid, mas ele tinha certas necessidades de segurança que exigia um proxy autenticado com níveis de privilégio diferentes. Implementei a máquina com o GNU/Linux Slackware 10.2 e usei o Squid versão estável mais recente, a squid-2.5.STABLE12-RC1-20050930.

[ Hits: 75.277 ]

Por: Carlos Affonso Henriques. em 28/10/2005


Preparando o ambiente para a solução



1. Criar os arquivos com o conteúdo a ser bloqueado e com o conteúdo a ser liberado:

# touch /etc/squid/bloqueios_url
# touch /etc/squid/liberados_url
# chmod 666 /etc/squid/bloqueios_url
# chmod 666 /etc/squid/liberados_url


2. Criar os arquivos onde ficarão armazenados os logins de usuários que terão acesso total e acesso restrito:

# touch /etc/squid/grpacessorestrito
# touch /etc/squid/grpacessototal
# chmod 666 /etc/squid/grpacessorestrito
# chmod 666 /etc/squid/grpacessototal


3. Criar o arquivo de senhas:

# touch /etc/squid/passwd
# chmod 666 /etc/squid/passwd


4. Adicionar dois usuários para fins de teste, onde um terá acesso total e outro acesso restrito apenas aos sites listados no arquivo /etc/squid/grpacessorestrito:

# htpasswd /etc/squid/passwd usuariototal
# htpasswd /etc/squid/passwd usuariorestrito


Forneça as senhas quando for solicitado.

5. Compile o módulo de autenticação NCSA, ele encontra-se no diretório ../helpers/basic_auth/NCSA nos fontes do Squid. Basta para isso executar o comando "make" neste diretório e ele irá gerar um arquivo binário com o nome "ncsa_auth".

6. Crie um diretório /usr/libexec/ncsa_auth/ e copie o arquivo ncsa_auth anteriormente gerado para ele.

    Próxima página

Páginas do artigo
   1. Preparando o ambiente para a solução
   2. Configurando o Squid
   3. Adicionado usuários às listas de acesso total e restrito
   4. Considerações finais
   5. squid.conf final
Outros artigos deste autor

Customizando e atualizando o Slax

Enviando e-mail pelo shell com smtp remoto

Quando próximo, finja estar longe; quando longe, finja estar próximo

Impedindo o compartilhamento de conexão

Balanceamento de carga e alta disponibilidade com Bonding Driver e Iproute2

Leitura recomendada

Squid no FreeBSD

Colocando senha nos gerenciadores do Squid (SARG e MYSAR) de forma simples

Squid Plus 2007 para Debian 4

Squid Plus com AD, redirector, controle de banda e relatórios

Squid autenticando no Windows utilizando grupos do AD

  
Comentários
[1] Comentário enviado por eder_cpd em 29/10/2005 - 00:20h

otimo artigo parabens!!!

[2] Comentário enviado por removido em 29/10/2005 - 01:15h

Caro,

Tem alguns erros em seu artigo, um deles é referente você esta ativando o recurso do proxy transparente:

httpd_accel_host virtual
httpd_accel_port 80
httpd_accel_with_proxy on
httpd_accel_uses_host_header on

E para aqueles usuários que não tenha um conhecimento profundo de iptables para bloquear as portas, usando o firewall do Linux (iptables). Recomendo que use a seguinte sintaxe:

http_port 3128
por
http_port IP_INTERNO_PROXY:3128

E referente ao arquivo /etc/squid/bloqueios_url, bastaria colocar ponto (.), sem entre parenteses.

Apenas algumas observações.

[3] Comentário enviado por capitainkurn em 30/10/2005 - 11:40h

Eu sei disso, o Squid não suporta proxy transprente quando funciona autenticado, mas infelizmente só descobre isso mais tarde, mas não chegou a ser um empecilho, pois força o usuário a configurar em seu browser o endereço e a porta do Squid, uma vez que se não o fizer ele simplesmente não navegará, ou seja acabou sendo um imperativo de segurança natural.
Gostei da idéia do pont no bloqueios_url, mas quando fiz isso pela primeira vez em um cliente houve uma certa pressa e faltou tempo para se fazer mais pequisas sobre o assunto, peguei coisas que já estvam meio prontas.
De qualquer forma obrigado pelas sugestões, que vou empregar nas próximas implentações que eu fizer.

[4] Comentário enviado por allangood em 30/10/2005 - 21:10h

Olá amigo, só para constar: o squid suporta autenticação quando usado como proxy transparente sim. Leia sobre o assunto em: http://www.squid-cache.org/Doc/FAQ/FAQ-23.html#ss23.6
Mas não é recomendado por ter a possibilidade de colidir com a autenticação de outros sites.

Uma dica: Se alguém quiser um controle de conteúdo REAL, aconselho o uso do DansGuardian. Um artigo sobre ele:
http://www.vivaolinux.com.br/artigos/verArtigo.php?codigo=1984

O site: http://www.dansguardian.org

[5] Comentário enviado por agk em 08/11/2005 - 17:06h

Muito bom, excelente artigo.
O squid é uma ferramenta poderosa, se usado da forma correta torma a navegação muito mais rápido e confiável.

[6] Comentário enviado por jungleboy em 15/02/2006 - 11:28h

Parabéns. O melhor artigo sobre o assunto que já vi. Muito completo e objetivo.

[7] Comentário enviado por pcnmota em 16/03/2006 - 10:22h

Muito bom artigo CapitainKurn. Otima solucao!

[8] Comentário enviado por rogeriojlle em 19/03/2006 - 16:09h

Olá para todos.
Aonde estudo há uma necessidade de se bloquear certos sites aos alunos que se utilizam dos computadores da biblioteca.(ex. chat terra e orkut). e também seria interessante utilizar um proxy pra acelerar a navegação. já que a conexão pra escola toda é de 256k
nesse caso todos os computadores da biblioteca estariam funcionando como terminais burros conectados num servidor com o Edubuntu ou o Skolelinux (são os dois que pesquisei que me parecem ser mais fáceis de se instalar esse sistema)e este teria duas placas de rede, uma para a internet e outra onde estariam conectados os terminais.

até então eu só sabia da existência do squid, é a primeira citação que eu encontro do dansguardian, então qual é o mais recomendado no meu caso?

o squid/dansguardian poderiam rodar no mesmo servidor de terminais? este teria de ser uma super máquina?
(O negócio é o seguinte...)
no momento disponho de apenas um duron 1.5G com 256 de ram(memória extra acho posso conseguir não mais que 512) e hd de 20G
os terminais variam de pentium 100 a k6 400 serão 5 ou 6 no máximo com memória ram a partir de 32M e placa de video onboard(aí eu terei de balancear o quanto fica pra cada)
Esse computadores nos foram doados(mais ou menos uns 20) mas em mais de 90% deles meus conhecimentos em hardware não permitem que eu os coloque em funcionamento completo, pois o poucos que possuem hd estão completamente recheados de badblocks.
Meu conhecimento em linux vai pouco além de usar o xfce e instalar o internet explorer no wine (e também alguma pouca edição no xorg.conf meu computador usa mouse serial e todos os da biblioteca também)
Nesse primeiro momento estou apenas coletando tutorias e dados dos programas que precisarei usar, a rede na biblioteca já está pronta só falta eu consertar um numero suficiente de máquinas. acabei de baixar as ISOs de cada uma das distribuições, então também aproveito pra pedir dicas ajudem essa minha empreitada

[9] Comentário enviado por jcristiano em 14/09/2006 - 21:48h

Muito bom artigo.
Foi muito útil pra mim

[10] Comentário enviado por srf em 07/11/2006 - 20:30h

Olá estou com dificuldades nos níveis de acesso no squid, pois da maneira como esta configurado todos os usuários conseguem sair para qualquer site...

Pretendo que os usuários do Grupo financeiro saem para os sites de "/etc/squid/lib_grupo_financeiro"
esta será a mesma configuração para todos os grupos...

Por favor alguém poderia me dar uma dica?

Sandro



#/etc/squind.conf
#Porta do Proxy
http_port 3128
#Direcionamento dos arquivos de erros
error_directory /etc/squid/errors

#Sites que nao passam por cache

acl NOCACHE url_regex -i "/etc/squid/squid.host.nocache"
no_cache deny NOCACHE

#Controle do cache
#acl QUERY urlpath_regex cgi-bin \?
#no_cache deny QUERY

#Memoria RAM usada pelo squid
cache_mem 128 MB

#Gerenciamento do cache rotate
cache_swap_low 90
cache_swap_high 95

#Arquivo maximo gravado no Cache
maximum_object_size 512 KB

#Diretorio do cache
cache_dir ufs /var/spool/squid 4096 16 256

#Diretorio de logs
cache_access_log /var/log/squid/access.log

#Comportamento do log
cache_log /var/log/squid/cache.log

#Usando ncsa_auth
auth_param basic program /usr/lib/squid/ncsa_auth /etc/squid/passwd
auth_param basic children 5
auth_param basic realm Hábil Tecnologia - Digite seu Usuário e Senha
auth_param basic credentialsttl 2 hours

#1-9 sao informacoes de log
debug_options ALL,1

#Descricao das ACLs
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 to_localhost dst 127.0.0.0/8
acl SSL_ports port 443 563
acl Safe_ports port 80
acl Safe_ports port 21
acl Safe_ports port 443 444 563
acl Safe_ports port 70
acl Safe_ports port 210
acl Safe_ports port 1025-65535
acl Safe_ports port 280
acl Safe_ports port 488
acl Safe_ports port 591
acl Safe_ports port 777
acl CONNECT method CONNECT

#Autenticacao por proxy exige autenticacao
acl autenticacao proxy_auth REQUIRED

#Autenticacao grupos
acl grupo_financeiro proxy_auth financeiro1 financeiro2 financeiro3 financeiro4
acl grupo_contabilidade proxy_auth contabilidade1


#Hosts permitidos
acl lib_grupo_financeiro url_regex -i "/etc/squid/lib_grupo_financeiro"
acl lib_grupo_contabilidade url_regex -i "/etc/squid/lib_grupo_contabilidade"

#Para uso do Squid
http_access allow manager localhost
http_access deny manager
http_access deny !Safe_ports
http_access deny CONNECT !SSL_ports

#Regra para hosts
http_access allow grupo_financeiro lib_grupo_financeiro
http_access allow grupo_contabilidade lib_grupo_contabilidade
http_access allow autenticacao
http_access deny all

#TAG: extension_methods
extension_methods SEARCH BMOVE MOVE BDELETE DELETE BPROPFIND REPORT MERGE MKACTIVITY CHECKOUT SUBSCRIBE UNSUBSCRIBE MKCOL POLL BCOPY CHECKOUT GNUTELLA GET POST HEAD PUT

#TAG: redirect_program
#redirect_program /etc/squid/bannerfilter/redirector.pl
#redirect_children 10

#TAG: icp_access
icp_access allow all

#TAG: miss_access
miss_access allow all

#Definir aqui o usuario de servico do squid
cache_effective_user squid
cache_effective_group squid

#TAG: visible_hostname
visible_hostname proxy.network.sc



Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts