Squid com grupo de usuários e computadores

Publicado por Ronaldo em 22/04/2013

[ Hits: 5.691 ]

 


Squid com grupo de usuários e computadores



Squid autenticado com acesso autorizado em uma lista de computadores por grupos e um login por vez.

Vou mostrar aqui como resolver um problema de compartilhamento de senha pelos usuários do Squid, mas descreverei apenas o que foi acrescentado em uma configuração funcional do Squid autenticado. Assim, não disponibilizarei o ".conf" completo.

Senário: tenho um servidor proxy Squid configurado como proxy autenticado que provê acesso à Internet a cerca de 300 usuários.

Há um filtro de bloqueio por URL, site e palavra-chave externo DansGuardian, mas não vou entrar neste assunto agora.

Voltando ao Squid, com o sistema em produção, notamos alguns desvios de conduta dos usuários, sendo:

Do total de usuários dos computadores, nem todos possuíam acesso à Internet, assim, em um mesmo computador, temos usuários com acesso liberado e outros sem acesso, e o controle feito pelo uso de autenticação.

Durante um bom tempo isto foi o suficiente, mas os usuários passaram a salvar suas senhas nos computadores, assim, qualquer um que utilizasse o computador tinha acesso à Internet. Havia casos onde uma mesma senha estava salva em vários computadores e até em setores de trabalho diferentes.

Também verificamos o uso compartilhado de senha, ou seja, um usuário informava seu login e senha para outros usuários.

Para resolver os problemas, foram aplicadas duas regras ao Squid, que dependem que a configuração dos IPs das estações sejam estáticos.

1. Limitamos o tempo de login em 6 minutos e permitimos apenas um login por vez, assim, para um usuário trocar de computador para acesso à Internet, ele deve fechar qualquer programa que esteja acessando a Internet em seu login e aguardar 6 minutos até poder acessar em outro computador.

#Configurações do squid
authenticate_ip_ttl 6 minutes
acl maxlogin max_user_ip -s 1
http_access deny maxlogin


2. Foi criada uma pasta contendo grupos de usuários e computadores, sendo:
  • nome_do_grupo.usuarios
  • nome_do_grupo.maquinas

E um script para verificação destes arquivos:

#configurações do squid
external_acl_type usuarios children=10 %LOGIN %SRC /etc/squid/checa.sh
acl checar external usuarios
http_access deny !checar


Script shell "checa.sh":

#!/bin/bash
CAMINHO="/etc/squid/grupos"
RETORNO="ERR"
LISTA=$( ls $CAMINHO/*.maquinas )
while read linha ; do
   NOME=$( echo $linha | cut -f1 -d" ")
   IP=$( echo $linha | cut -f2 -d" ")
   if cat $CAMINHO/planejamento_informatica.usuarios | grep -iq ^$NOME$ ; then
      RETORNO="OK"
   else
      for GRUPOS in $LISTA; do
         GRUPO=`expr match "$GRUPOS" '\(.*\.\)'`
         USUARIOS="$GRUPO""usuarios"
         MAQUINAS="$GRUPO""maquinas"
         if [ -e $USUARIOS ] && [ -e $MAQUINAS ] ; then
            if cat $USUARIOS | grep -iq ^$NOME$ && \
               cat $MAQUINAS | grep -iq ^$IP$; then
                   RETORNO=OK
            fi
         fi
      done
   fi
   if [ $RETORNO == "OK" ] ; then
      echo "Sucesso `date` Nome->$NOME IP->$IP">>/var/log/squid/login.log; echo OK
   else
   echo "Falha `date` Nome->$NOME IP->$IP">>/var/log/squid/login.log ; echo ERR
   fi
done


Aquivos de grupos criados em uma pasta chamada "grupos" dentro das configurações do Squid:
  • informatica.usuarios
  • informatica.maquinas

  • contabilidade.usuarios
  • contabilidade.maquinas

  • atendimento.usuarios
  • atendimento.maquinas

  • rh.usuarios
  • rh.maquinas

  • almoxarifado.usuarios
  • almoxarifado.computadores

O conteúdo dos arquivos de grupos são, para os usuários o nome que o usuário autentica e para as máquinas os IPs de cada computador, sendo um item por linha, exemplo:

arquivo "contabilidade.usuarios":

    maria
    jose

arquivo "contabilidade.maquinas":

    192.168.1.10
    192.168.1.15
    192.168.1.33
    192.168.1.78


Assim, o acesso pelo Squid ficou limitado a um login por vez e restrito a um grupo de computadores ao qual o usuário pertence.

Também o script gera um log em /var/log/squid/login.log, contendo os acessos aceitos e bloqueados.


Este é meu primeiro tutorial no Viva o Linux.

Desde já, obrigado.
Ronaldo Maia.

Outras dicas deste autor
Nenhuma dica encontrada.
Leitura recomendada

Identificação de File Systems (Check File Systems on Linux)

Instalando Tomcat5 no Debian Etch

Gerenciando KVM pelo Windows

Conectar a internet discada por modo texto

Aumentando área de SWAP sem boot ou reinstalação em LVM

  

Comentários
[1] Comentário enviado por ovudo em 23/04/2013 - 04:31h

parabéns, isso era uma duvida q por conscidência tive a 3 dias atrás, pois agora estou implementando um servidor squid sem auxilio do dominio windows, com isso percebi q alguns usuários 'safadinhos' estavam compartilhando suas senhas.

mas ai, nessa semana eu vou implementar a sua solução!

obrigado

parabéns novamente, ótima dica (sendo o primeiro ja começou ótimo)



Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner
Linux banner
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts