Squid autenticado no ldap com módulo de administração

Observações:

  • Iremos levar em consideração que você possui uma instalação “limpa” do S.O. Debian GNU/Linux.
  • É pré-requisito para este tutorial que o apache2 com PHP5 estejam instalados e configurados. Um modelo desta instalação está disponível em Instalando e configurando Apache2 com suporte PHP e SSL.

Instalando e configurando o Squid

Primeiramente vamos instalar o pacote.

root@debian:~# aptitude install squid3

Agora, vamos configurá-lo.

Para facilitar, vamos fazer um backup do arquivo original e baixar um pré-configurado alterando apenas o necessário.

root@debian:~# cd /etc/squid
root@debian:/etc/squid# mv squid.conf squid.conf.orig
root@debian:/etc/squid# wget -c http://downloads.fabriciovc.eti.br/squid/squid3.conf
root@debian:/etc/squid# cp squid3.conf squid.conf

Não esquece de ajustar algumas linhas que são específicas para a sua instalação.

root@debian:/etc/squid# vi squid.conf

[...]

#Recommended minimum configuration per scheme:
auth_param basic program /usr/lib/squid/ldap_auth -b ou=usuarios,dc=dominio,dc=com,dc=br 127.0.0.1
auth_param basic children 5
auth_param basic realm Digite Seu Login e senha para acesso a Internet
auth_param basic credentialsttl 1 hours
auth_param basic casesensitive off

[...]

visible_hostname squid.dominio.com.br

[...]

Em seguida, precisamos das regras de ACL necessárias para o seu funcionamento de acordo com as configurações setadas no squid.conf.

root@debian:/etc/squid# wget -c http://downloads.fabriciovc.eti.br/squid/regras.tar.gz
root@debian:/etc/squid# tar xzvf regras.tar.gz

Com isso já podemos reiniciar o processo do squid.

root@debian:/etc/squid# /etc/init.d/squid stop
root@debian:/etc/squid# /etc/init.d/squid start

Instalando e configurando o Sarg - Relatórios

Aqui iremos configurar o Sarg, ferramenta que utilizamos pra gerar os relatórios de acesso à internet dos usuários.

Para iniciar, precisamos instalar o pacote do Sarg.

root@debian:~# aptitude install sarg

Em seguida vamos remover alguns arquivos que são adicionados no cron que não costumo utilizar. Se quiser manter, fique a vontade, mas não vou explicar o seu funcionamento.

root@debian:~# rm /etc/cron.daily/sarg
root@debian:~# rm /etc/cron.monthly/sarg
root@debian:~# rm /etc/cron.weekly/sarg

Assim como fizemos com o Squid, vamos fazer um backup do arquivo original e baixar um arquivo pré-configurado.

root@debian:~# cd /etc/squid
root@debian:/etc/squid# mv sarg.conf sarg.conf.orig
root@debian:/etc/squid# wget -c http://downloads.fabriciovc.eti.br/squid/sarg.conf

Em seguida, edite o arquivo e altera alguma possível opção necessária, mas o arquivo deve estar pronto para o funcionamento.

root@debian:/etc/squid# vi sarg.conf

[...]

O próximo passo, é realizar o download do script necessário para gerar os relatórios diários.

root@debian:/etc/squid# wget -c http://downloads.fabriciovc.eti.br/squid/sarg_diario.sh

Não esqueça de dar permissão de execução para o script

root@debian:/etc/squid# chmod 754 sarg_diario.sh 

E por fim, podemos executá-lo para fins de testes.

root@debian:/etc/squid# ./sarg_diario.sh

Com isso, os relatórios já estarão funcionando e disponíveis via web pelo endereço:

http://seu_servidor/squid-reports

Não esqueça de agendar o script no crontab para que o relatório seja gerado diariamente de maneira automática.

root@debian:/etc/squid# crontab -e

[...]

0 23      *      *      *      /etc/squid/sarg_diario.sh

Instalando e configurando o squidadmin

Desenvolvi um programinha em PHP com ajuda de um amigo, bem simples, mas que permite a administração do Squid pela web. Vamos ver como implementá-lo.

Primeiramente, baixe o squidadmin no DocumentRoot.

Obs.: lembre-se que precisa de apache2 com suporte a php5 instalado.

root@debian:~# cd /var/www
root@debian:/var/www# wget -c http://downloads.fabriciovc.eti.br/squid/squidadmin.tar.gz
root@debian:/var/www# tar xzvf squidadmin.tar.gz

Com isso você já pode acessar o painel de controle pelo endereço:

http://seu_servidor/squidadmin

Configurando a segurança do squidadmin

Um item importante que precisamos nos preocupar, é a segurança no acesso do squidadmin.

Aqui, iremos alterar o sistema para que tenhamos o funcionamento correto do squidadmin e também, garantir a segurança do aplicativo, pois não queremos que todos os usuários da rede acessem ele.

Primeiramente, precisamos acertar as permissões da pasta de regras para permitir que o squidadmin possa alterá-las.

root@debian:~# cd /etc/squid
root@debian:/etc/squid# chmod 755 regras
root@debian:/etc/squid# chown root.root regras
root@debian:/etc/squid# cd regras
root@debian:/etc/squid/regras# chmod 664 *
root@debian:/etc/squid/regras# chown root.www-data *

Em seguida, vamos instalar e ajustar o sudo para que o squidadmin possa manipular os arquivos corretamente e também recarregar o Squid quando houver alterações.

root@debian:~# aptitude install sudo

Editando o sudo, adicione a linha a seguir para permitir que o apache2 manipule alguns binários necessários para o funcionamento correto do squidadmin.

root@debian:~# visudo

[...]

www-data ALL=NOPASSWD:/usr/sbin/squid -k reconfigure, NOPASSWD:/usr/bin/sort

Com essas alterações, o squidadmin já deve estar funcionando corretamente.

O bloqueio de acesso utilizando usuário e senha pode ser realizado de duas maneiras.

Uma delas é por htaccess que é usado com um arquivo .htaccess armazenado junto ao diretório do Squid.

A segunda, é por autenticação via Ldap, que é a que iremos utilizar neste exemplo pois o nosso Squid está configurado para autenticar a navegação por Ldap.

Primeiramente habilite o módulo no apache2.

root@debian:~# a2enmod authnz_ldap

Em seguida, ajuste o apache2.

root@debian:~# cd /etc/apache2/sites-available
root@debian:~# vi default

<Directory /var/www/squidadmin>
       Options Indexes FollowSymLinks MultiViews
       AllowOverride None
       Order allow,deny
       allow from all

       AuthType Basic
       AuthName "Acesso Restrito"
       AuthBasicProvider ldap
       AuthzLDAPAuthoritative off
       AuthLDAPURL ldap://127.0.0.1/dc=exemplo,dc=com,dc=br?uid
       Require valid-user
       #Require user1 user2 user3
</Directory>

Caso seja necessário autenticação p/ acessar a base Ldap insira as linhas a seguir:

AuthLDAPBindDN "cn=pesquisador,ou=usuarios,dc=exemplo,dc=com,dc=br"
AuthLDAPBindPassword "senha"

E não esqueça de instalar o ldap-utils.

root@debian:~# aptitude install ldap-utils 

Processo concluído.

Feche seu navegador, abra-o novamente e acesso o endereço:

http://seu_servidor/squidadmin

Se tudo funcionou corretamente, o navegador vai lhe pedir um usuário e senha. Forneça as informações baseadas no cadastro de usuários do Ldap.

Para finalizar, configure seu navegador para utilizar o proxy squid recém configurado e boa navegação, monitorada é claro.


Voltar

linux/artigos/squid-ldap-admin.txt · Última modificação: 13/01/2015 10:44 (edição externa)