Squid com grupo de usuários e computadores

Publicado por Ronaldo em 22/04/2013

[ Hits: 6.949 ]

 


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

Instalando Skype 32 bits no Debian Squeeze amd64

Onde achar pacotes e distribuições antigas

Zenwalk vs Slackware

Lista de sites de jogos para Linux

Comando which - Descobrir onde está o comando no Linux

  

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

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts