SQUID autenticado – Bloqueando o acesso dos usuários por grupos

Autor: Rogério Tonini

Introdução

Conheço o Linux há algum tempo como usuário, porém nunca surgiu a
necessidade de se colocar a mão na massa, de uns tempos para cá não
teve jeito (agradeço por isso). Agradeço a todos que encontrarem alguma
falha e postarem, pois só assim aprenderemos mais.

Este artigo descreve como montar a política de acesso a
INTERNET, dividindo o ambiente de trabalho em 3 grupos, onde os
usuários utilizam terminais com Windows.

Configurei o /etc/squid.conf através de 2 métodos de
autenticação: pelo Apache e através do arquivo /etc/passwd, que segundo
meus estudos é chamado de PAM (me corrijam se estiver errado). Quem for
utilizar, utilize o que melhor lhe convier.

Não é meu intuito descrever o funcionamento da SQUID, mesmo porque não sou conhecedor de todos os detalhes.

No ambiente que montei, utilizo a distro DEBIAN, versão Etch 4 e instalei os pacotes abaixo, através do comando apt-get install:

  • Squid – 2.6.5-6;
  • Apache2 – 2.2.3-4+etch1;
  • Bind9 – 9.3.4-2etch1,
  • Sarg – 2.2.2-1.

Criando os usuários:

1) Apache – Criei os usuários user1, user2 e user3 através dos comandos:

# htpasswd -c /etc/squid/squid_passwd user1, onde o parâmetro -c
indica que o arquivo /etc/squid/squid_passwd não existe, portanto
deverá ser criado.
# htpasswd /etc/squid/squid_passwd user2
# htpasswd /etc/squid/squid_passwd user3

2) PAM – Também foram criados os usuários user1, user2 e user3 através dos comandos:

# passwd user1
# passwd user2
# passwd user2

Como os usuários não vão acessar nenhuma área do servidor, editei o
arquivo /etc/passwd e desabilitei o acesso ao bash através do parâmetro
/bin/false.

Criando as listas

Nesta fase iremos criar as listas de usuários com ACESSO a INTERNET, SITES BLOQUEADOS e SITES LIBERADOS.

Vamos para o diretório do SQUID:

# cd /etc/squid

Criei um diretório chamado listas:

# mkdir listas

Vamos para este diretório:

# cd listas

Criei os arquivos e inseri os usuários / sites:

# vim usr_livre – contém a relação dos usuários que possuem acesso a qualquer site da INTERNET e inclua o usuário user1.

# vim usr_restrito – contém a relação dos usuários que acessam os sites que não estiverem na lista dos bloqueados e inclua o usuário user2.

# vim usr_bloqueado – contém a relação dos usuários que acessam os sites que estiverem na lista dos liberados e inclua o usuário user3.

# vim url_bloqueado – contém a relação dos sites que estão bloqueados para os usuários do grupo usr_restrito, contendo o site .orkut.com.

# vim url_liberado – contém a relação dos sites que estão bloqueados para os usuários do grupo usr_bloqueado, contendo o site .uol.com.br.

Configurando o SQUID

Nesta fase vamos configurar o arquivo /etc/squid/squid.conf.

Vamos voltar ao diretório /etc/squid:

# cd /etc/squid

Renomeie o arquivo original para qualquer outro nome:

# mv squid.conf squid.bkp

Crie um novo arquivo squid.conf:

# vim squid.conf

Copie o script abaixo (desculpem pelo excesso de comentários):

#
# Arquivo SQUID.CONF – Por ROGÉRIO TONINI – 14/05/07
#

http_port 3128
icp_port 3130
#
hierarchy_stoplist cgi-bin ?
acl QUERY urlpath_regex cgi-bin \?
cache deny QUERY
#
acl apache rep_header Server ^Apache
broken_vary_encoding allow apache
#
cache_mem 64 MB
#
cache_swap_low 85
cache_swap_high 90
#
maximum_object_size 128 MB
minimum_object_size 0
#
maximum_object_size_in_memory 64 KB
#
cache_dir ufs /var/cache/squid 2048 16 256
cache_access_log /var/log/squid/access.log
cache_log /var/log/squid/cache.log
client_netmask 255.255.255.0
#
#**************************************#
# Este parâmetro libera o acesso dos usuários  #
# pelo proxy autenticado por htpasswd.            #
#**************************************#
#
#auth_param basic program /usr/lib/squid/ncsa_auth /etc/squid/squid_passwd
#
#**************************************#
# Este parâmetro libera o acesso dos usuários  #
# pelo proxy autenticado por PAM.                   #
#**************************************#
#

#********************************************************#
# Este parâmetro demonstra a mensagem na janela de autenticação #
#********************************************************#
auth_param basic realm Servidor de Internet by R&R Info
#
auth_param basic children 5
auth_param basic credentialsttl 2 hours
auth_param basic casesensitive off
#
refresh_pattern ^ftp:         1440 20%  10080
refresh_pattern ^gopher: 1440 0%   1440
refresh_pattern .        0    20%  4320
#
# ——————————————————————–
#  ACCESS CONTROLS
# ——————————————————————–
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 Safe_ports port 21        # ftp
acl Safe_ports port 70        # gopher
acl Safe_ports port 80        # http
acl Safe_ports port 210       # wais
acl Safe_ports port 280       # http-mgmt
acl Safe_ports port 443       # https
acl Safe_ports port 488       # gss-http
acl Safe_ports port 591       # filemaker
acl Safe_ports port 631       # cups
acl Safe_ports port 777       # multiling http
acl Safe_ports port 873       # rsync
acl Safe_ports port 901       # SWAT
acl Safe_ports port 1025-65535     # unregistered ports
#
acl SSL_ports port 443        # https
acl SSL_ports port 465        # YAHOO – SMTP (SSL)
acl SSL_ports port 563        # snews
acl SSL_ports port 873        # rsync
acl SSL_ports port 995        # YAHOO – POP3 (SSL)
#
acl purge method PURGE
acl CONNECT method CONNECT
#
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 allow localhost
http_access deny to_localhost
#
# Criando as ACLs personalizadas
#
acl rede_interna src 192.168.0.0/24
#
#*******************************************************#
# Situação 1 – Ambiente com 3 grupos:                                         #
#                                                                                                #
# Grupo 1 – usr_total – os usuários tem acesso livre a Internet        #
# Grupo 2 – usr_liberado – os usuários acessam qualquer site que   #
#                          não estiver na lista url_bloqueado                     #
# Grupo 3 – usr_bloqueado – os usuários acessam somente os sites #
#                           que estiverem na lista url_liberado                   #
#*******************************************************#
#
acl usuarios proxy_auth REQUIRED
#
#*** Usuarios com acesso livre
#
acl acesso_livre proxy_auth "/etc/squid/listas/usr_livre"
#
http_access allow acesso_livre
#
#***  Usuários com acesso controlado pelos sites bloqueados
#
acl acesso_restrito proxy_auth "/etc/squid/listas/usr_restrito"
acl url_bloqueado url_regex -i "/etc/squid/listas/url_bloqueado"
#
http_access deny url_bloqueado
http_access allow acesso_restrito !url_bloqueado
#
#*** Usuarios com acesso somente aos sites liberados
#
acl acesso_bloqueado proxy_auth "/etc/squid/listas/usr_bloqueado"
acl url_liberado url_regex -i "/etc/squid/listas/url_liberado"
#
http_access allow url_liberado
http_access deny acesso_bloqueado !url_liberado
#
http_access allow usuarios acesso_livre
http_access allow usuarios acesso_restrito
http_access allow usuarios acesso_bloqueado
#
#*****************************************************#
# Situação 2 – Todos os usuários estão limitados a visitar             #
# somente os sites que não estão na relacro de sites bloqueados #
# e os que não possuem as palavras na relacro das bloqueadas.  #
#*****************************************************#
#   Para esta situação os parâmetros de autenticação deverão     #
# estar desabilitados.                                                                #
#*****************************************************#
#
# Lista de sites bloqueados
#acl url_bloqueado url_regex -i "/etc/squid/listas/url_bloqueado"
#http_access deny url_bloqueado
#
http_access deny !rede_interna
http_access allow rede_interna
http_access deny all
icp_access allow all
#
cache_mgr webmaster
visible_hostname <Nome do servidor>
#
error_directory /usr/share/squid/errors/Portuguese
coredump_dir /var/spool/squid

Salve o arquivo e vá para o bash.

Finalizando

Agora basta reiniciar o servidor SQUID:

# /etc/init.d/.squid restart

Esta configuração foi testada exaustivamente na distro DEBIAN.

Como novato por aqui e também na comunidade LINUX, espero poder contribuir para o aprendizado dos novatos como eu!

Um recado para quem está começando neste universo, não tenha medo,
afinal as grandes cabeças pensantes não conseguiram seus objetivos logo
na primeira tentativa.

Abraços a todos e esta comunidade está de parabéns.


http://www.vivaolinux.com.br/artigos/verArtigo.php?codigo=7354

2 comentários sobre “SQUID autenticado – Bloqueando o acesso dos usuários por grupos

  1. Eu queria saber o que eu digito depois que abre a janela ao digitar ” VIM USR_LIVRE “…
    Como eu incluo o usuario?
    Obrigado

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s