SUSE Linux - Squid autenticando no Active Directory (AD)

Olá pessoal, este artigo tem como objetivo instalar e configurar o Squid rodando no SUSE Linux 10.2 com autenticação no Active Directory, uma forma rápida e muito prática, e com a autenticação no AD reduziremos uma senha na vida dos usuários.

[ Hits: 25.375 ]

Por: Robinson Czelusniak em 31/03/2010


Configuração e informações do Windows



Vamos precisar saber algumas informações e vamos precisar criar um usuário no Windows.

Precisamos saber qual é domínio do AD (Active Directory).

Clique no iniciar, depois em executar, digite dsa.msc e pressione ENTER.

Com este comando ele vai abrir o gerenciamento de usuários e grupos do AD, verifique qual é o nome do domínio. Exemplo: dominio.local

Criar usuário:

Vamos criar um usuário para autenticar o Squid onde você cria seus usuários.

Crie um usuário com o nome "squid" e defina um senha para ele.

Instalação do Squid:

# yast -i squid

Depois de instalado o Squid cria o diretório /etc/squid com os arquivos de configuração e são eles que vamos usar, digite:

# cd /etc/squid

Faça uma cópia do squid.conf:

# cp squid.conf squid.conf.old

Agora vamos editar o arquivo squid.conf:

# vi squid.conf

Procure a linha:

#http_port 3128

Descomente-a, deixando assim:

# porta pela qual o Squid libera o acesso
http_port 3128

Salve e saia.

<ESC> :wq <ENTER>

Pesquise pelo binário squid_ldap_auth:

# find / -iname squid_ldap_auth

Você deve obter o caminho completo do binário:

/usr/sbin/squid_ldap_auth

Agora vamos editar o arquivo squid.conf novamente:

# vi squid.conf

Localize a linha:

#auth_param basic program /usr/libexec/ncsa_auth /usr/etc/passwd

Adicione abaixo dela as seguintes linhas:

auth_param basic program /usr/sbin/squid_ldap_auth -R -b dc=dominio,dc=local -f sAMAccountName=%s -h 192.168.0.254 -D
cn=squid,cn=users,dc=dominio,dc=local -w password

Explicação:
  • dc=dominio,dc=local = domínio do AD (meu exemplo no início, dominio.local)
  • 192.168.0.254 = Endereço IP do servidor AD
  • cn=squid,cn=users,dc=dominio,dc=local = Caminho completo de onde está o usuário
  • password = A senha que foi definida no AD

Descomente as seguinte linhas também:

auth_param basic children 5
auth_param basic realm Digite sua senha
auth_param basic credentialsttl 2 hours
auth_param basic casesensitive off

Vamos criar as ACLs.

Procure a linha:

#acl password proxy_auth REQUIRED

Descomente-a:

acl password proxy_auth REQUIRED

Crie ACLs com as seguintes informações:

# Regras de bloqueio/desbloqueio de conteudo

# Libera sites sem autenticação para alguns usuários
acl admins proxy_auth_regex -i "/etc/squid/rules/administradores"

# Controle de downloads
acl sites_sem_autenticacao dstdom_regex -i "/etc/squid/rules/sites_sem_autenticacao"

# Controle de uso do MSN
acl msn_urls urlpath_regex -i "/etc/squid/rules/msn_urls"
#acl msn_ips dst -i "/etc/squid/rules/msn_ips"

# Controle de downloads
acl downloads_proibidos urlpath_regex -i "/etc/squid/rules/downloads_proibidos"
acl downloads_permitidos urlpath_regex -i "/etc/squid/rules/downloads_permitidos"

# Controle de palavras
acl palavras_proibidas url_regex -i "/etc/squid/rules/palavras_proibidas"
acl palavras_permitidas url_regex -i "/etc/squid/rules/palavras_permitidas"

# Controle de dominios
acl sites_proibidos dstdom_regex -i "/etc/squid/rules/sites_proibidos"
acl sites_permitidos dstdom_regex -i "/etc/squid/rules/sites_permitidos"

# Controle de URL's
acl urls_proibidas url_regex -i "/etc/squid/rules/urls_proibidas"
acl urls_permitidas url_regex -i "/etc/squid/rules/urls_permitidas"

Configure as regras agora:

# Acesso sem Restricoes para Administradores
http_access allow admins

# Sites Liberados para todos os usuarios
http_access allow sites_sem_autenticacao

# Controle de uso do MSN
http_access deny msn_urls
#http_access deny msn_ips

# Controle de downloads
http_access deny downloads_proibidos !downloads_permitidos !sites_permitidos !urls_permitidas

# Controle de palavras
http_access deny palavras_proibidas !sites_permitidos !urls_permitidas

# Controle de sites
http_access deny sites_proibidos

# Controle de URL's
http_access deny urls_proibidas !urls_permitidas

# Libera acesso para usuarios autenticados
http_access allow password

# Example rule allowing access from your local networks. Adapt
# to list your (internal) IP networks from where browsing should
# be allowed
http_access allow localhost

# And finally deny all other access to this proxy
http_access deny all

Feito isso salve e feche o arquivo.

<ESC> :wq <ENTER>

    Próxima página

Páginas do artigo
   1. Configuração e informações do Windows
   2. Criação dos arquivos e inicialização do Squid
Outros artigos deste autor

Instalando Postfix e Dovecot no SLES 11 e autenticando em um diretório da Novell (Edir)

Configurando o OpenVPN no SuSE Linux Enterprise Server (SLES)

CBQ (Controlador de banda) no Conectiva 10

Openfire no SLES 10 autenticando no Active Directory

Squid autenticando no Windows utilizando grupos do AD

Leitura recomendada

Administrando Squid pelo browser, bloquear e liberar máquinas por IP, login, palavras

Compilando o Squid com autenticação PAM

Autenticando usuários do Squid em um banco de dados MySQL

Automatic ACL Blocking List - Sistema automático de listas de bloqueio de ACLs

Squid3 com bloqueio HTTPS [que realmente funciona] - Versão 3.5.22

  
Comentários
[1] Comentário enviado por ctavares em 01/04/2010 - 12:22h

Amigo, você fez esse documento baseado em quais versões do Windows Server? Qual o Squid instalado também?

[2] Comentário enviado por czelusniak em 01/04/2010 - 12:44h

Olá ctavares As versões:

Windows 2003 Enterprise Edition (Mas funciona com qualquer versão)
e a versão do squid squid-2.5.STABLE12-18.9.



[3] Comentário enviado por ctavares em 01/04/2010 - 13:28h

Na verdade a sua abordagem é diferente de algumas que eu já vi onde o linux tem que ser adicionado ao dominio Windows para ai sim autenticar os usuários, mas pelo que eu vi então você basicamente faz uma lista branca para liberar os sites e bloqueia alguns, mas me diga uma coisa, um determinado usuário que eu quero que tenha acesso somente ele a sites especiais que não estão liberados para os outros usuários como faz? O Squid vai pedir uma segunda autenticação? De onde ele vai buscar essa autenticação ou eu preciso adicionar esses usuários ao arquivo ADMINISTRADORES?

[4] Comentário enviado por czelusniak em 01/04/2010 - 13:48h

Veja só, quando você adiciona o linux no domínio você utiliza uma outra forma de pesquisa você utiliza o NTLM para isto da forma com que este arigo explica ele utiliza uma pesquisa LDAP no diretório do Windows por isso não precisa colocar no domínio. Se você quer que determinado usuário tenha acesso a sites que os usuários comuns não acessam basta colcoar ele no arquivo /etc/squid/rules/administradores porque quando o squid autentica ele libera o acesso total para todos os usuários que autenticarem e estiverm no arquivo /etc/squid/rules/administradores, ele não faz uma segunda autenticação.


Um abraço.

[5] Comentário enviado por ctavares em 01/04/2010 - 14:42h

Poxa muito legal, não sabia que era possível essa abordagem, vou tentar montar ela para ver, muito obrigado. Parabéns!

[6] Comentário enviado por mbfagundes em 04/04/2010 - 22:33h

Gostaria de Parabenizar o Colega por seu artigo, ficou muito bom, isso mostra aos colegas que podemos ter um ambiente multiplataforma e podermos integrar e nos alinhar com todas funções.
Em breve farei uso dessa abordagem. E colocarei em pratica as dicas.
;)

[7] Comentário enviado por ctavares em 05/04/2010 - 12:13h

Se alguém estiver portando o documento para Ubuntu ou Debian e tiver problemas o aquivo
/usr/sbin/squid_ldap_auth no ubuntu chama-se ldap_auth e encontra-se em /usr/lib/squid/ldap_auth

[8] Comentário enviado por czelusniak em 05/04/2010 - 13:55h

Obrigado pela dica Carlos.


[9] Comentário enviado por ctavares em 05/04/2010 - 15:41h

czelusniak,
Me diga uma coisa, eu consigo por exemplo fazer com que a ACL sites_sem_autenticacao seja uma lista de sites na qual o squid simplesmente abra o site como anonimo sem precisar pedir o usuário e senha?
Eu tentei por exemplo lá dentro deixar o site www.caixa.com.br que é um site que eu quero que qualquer um possa entrar sem problemas, mas mesmo quando eu tento abrir ele pede para autenticar com usuário e senha.

[10] Comentário enviado por czelusniak em 05/04/2010 - 20:25h

Olá Carlos, a idéia do desta ACL que coloquei como sites_sem_autenticacao é bem esta, ele não pedir autenticação para estes sites, na verdade esta ACL não para liberar o site ela libera o domínio, por isso quando for liberar um site lá coloque sem o "www" porque daí ele vai liberar tudo o que tiver antes do domínio e depois também.

Exemplo:

caixa.com.br

Vai liberar

www.caixa.com.br
www1.caixa.com.br
www2.caixa.com.br
www.caixa.com.br/casaprórpria

E no caso do site da caixa especificamente de uma olhada pois ele pode estar redirecionando para www.cef.com.br, www.caixaeconomica.com.br, www.caixa.gov.br.

Espero ter ajudado, qualquer duvida posta aí.
Um abraço

[11] Comentário enviado por ctavares em 06/04/2010 - 16:28h

czelusniak,
Consegui fazer funcionar mas a configuração do squid.conf está errada, na verdade o http_access allow sites_sem_autenticacao precisa ser o primeiro na ordem de liberação de ACL se não ele pede autenticação. Muito obrigado mais uma vez.

[12] Comentário enviado por metanol_pa em 26/06/2010 - 15:24h

Cara sofri um pouco mais consegui fazer a autenticação, valeu pelo Artigo foi muito útil, só estou tendo problemas com os clients windows vista e windows 7 que não conseguem se comunicar com o servidor (SQUID) nem ping responde. Sabe o que pode ser?

Abraços

[13] Comentário enviado por birovisky em 14/10/2013 - 16:24h

Fiz estas configurações no OpenSuse 12.3... e aparentemente deu certo. Porém surgiram algumas dúvidas.

A primeira - Sempre está pedindo usuário de autenticação, mesmo que insiro um usuário válido do AD, ele continua pedindo e não carregada nada.

A Segunda - as acl's e suas regras eu crio elas por onde? Pelo vi, ou no meu caso que uso interface, crio um arquivo de texto no caminho etc\squid\rules com os respectivos nomes e dentro dos arquivos de textos as regras?


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts