domingo, 14 de outubro de 2007

Squid autenticando em base Active Directory do Windows 2000, 2003 ou 2008

Squid autenticando em base Active Directory

1. INTRODUÇÃO: Squid autenticando no Active Directory

Para fins de ilustração, o IP do PDC será 192.168.1.254 e o domínio será meudominio.com.br. Este documento pretende explicar de forma clara os procedimentos para conexão do squid em um servidor de base LDAP do AD para autenticar o acesso dos usuários à Internet.

2. PRÉ-REQUISITOS

  • A última versão estável do Squid ;
  • Um PDC rodando Windows 2003 ou Windows 2000

2.1 Preparando o Active Directory:

2.2 Cria-se uma OU chamada Internet no Active Directory

2.3 Dentro da OU Internet cria-se quatro Grupos:

  • AcessoNormal - adicione aqui os usuários com acesso "standard";
  • AcessoRestrito - adicione aqui os usuários que só tem permissão para acessar bancos, intranet e sites de parceiros da empresa;
  • AcessoTotal - adicione aqui quem deve ter acesso total e irrestrito;
  • AcessoExclusivo - adicione aqui os usuários que podem acessar sites que os usuários normais não podem alcançar, incluindo sites para fazer download de executáveis e extensões de arquivos que são proibidas para quem tem acesso "standard" ou acesso "restrito". Exemplo: .exe,.mpg,.mp3 etc.

2.3.1 Podem ser criados tantos grupos quantos forem necessários, desde que seja realmente necessário.

2.4 Ainda dentro da OU Internet criamos uma conta de usuário com direito de leitura nos grupos acima chamada Proxy_User e cuja senha é 12345678 (modifique para senha forte depois). Uma observação, mesmo que já tenha sido dada a permissão de leitura e a conta criada não consegue visualizar os grupos e acessos através dos testes que serão feitos no decorrer do documento, coloque a conta Proxy_User no grupo administradores dentro do AD.

2.5 Para resumir, a estrutura da OU criada e conta de leitura no AD ficam da seguinte forma:

Proxy_User = cn=Proxy_user,ou=Internet,dc=meudominio,dc=com,dc=br

Meu Domínio = dc=meudominio,dc=com,dc=br

OU Internet = ou=Internet,dc=meudominio,dc=com,dc=br




Instalação do Squid

Não faz parte do escopo deste documento a instalação completa do Squid. Abaixo apenas um resumo de como fazê-lo. Para maiores informações, leia a documentação do software.

Baixamos o Squid e descompactamos o mesmo no diretório /root:

# tar -zxpvf squid-2.6.STABLE3.tar.gz

# cd /root/ squid-2.6.STABLE3

Faça a compilação básica, depois serão compilados os programas de autenticação LDAP separadamente.

Para tanto, use a seqüência:

# . ./configure --enable-err-language=Portuguese --prefix=/usr/local/squid --enable-arp-acl --enable-auth="basic,ntlm" --with-external-acl-helpers="ldap_group" --enable-linux-netfilter

(sendo /usr/local/squid o local onde o squid será instalado)

Obs.: Pressupõe-se que o pacote gcc esteja instalado.

Entre no diretório src da pasta de instalação do squid e execute o comando:

# make

# make install

(ATENÇÃO ERRO: /usr/bin/ld: cannot find –lmiscutil )

(Correção: entre no diretório lib da pasta de instalação do squid e execute o comando make)

Na versão que foi instalada, a pasta squid/share/errors/Portuguese e squid/share/icons não foram criadas, basta copiá-las da pasta de instalação do squid para estes diretórios citados:

# cp -vr errors /usr/local/squid/share

# cp -vr icons /usr/local/squid/share

Cria-se o diretório /var/cache/squid e muda-se a propriedade dele:

# mkdir /var/cache/squid

# chown nobody.nobody /var/cache/squid

Mude a propriedade do diretório Squid de root para nobody e crie o cache:

# chown -R nobody.nobody /usr/local/squid

# /usr/local/squid/sbin/squid -z

(ATENÇÃO ERRO: FATAL: Could not determine fully qualified hostname. Please set ‘visible_hostname’)

(Correção: abra o arquivo /usr/local/squid/etc/squid.conf, localize o texto referente a tag visible_hosname, acrescente uma linha conforme o modelo abaixo:

# visible_hostname proxy.meudominio.com.br (sem #)

)

Depois muda-se a propriedade do diretório /usr/local/squid/var/cache:

# chown -R nobody.nobody /usr/local/squid/var/cache

Com isso o seu Squid já está instalado e pronto pra ser configurado.

Agora passaremos para o passo seguinte, onde iremos acessar squid-2.6.STABLE03/helpers/basic_auth/LDAP e compilar o daemon squid_ldap_auth, que fará a autenticação de usuários no AD:

# cd /squid-2.5.STABLE12/helpers /basic_auth/LDAP:

# make

(ATENÇÃO ERRO: lber.h: Arquivo ou diretório não encontrado. Ldap.h: Arquivo ou diretório não encontrado. Expected ‘)’ before ‘*’ token.)

(Correção: falta a instalação dos pacotes: cyrus-sasl-devel, openldap-devel e openldap-clients. Instale-os.)

Após a compilação, copie o daemon squid_ldap_auth para dentro da libexec:

# cp squid_ldap_auth /usr/local/squid/libexec

Acesse squid-2.5.STABLE12/helpers/external_acl/ldap_group e compile o daemon squid_ldap_group:

# cd /squid-2.5.STABLE12/helpers/external_acl/ldap_group:

# make

Após a compilação, copie o squid_ldap_auth para dentro da libexec:

# cp squid_ldap_group /usr/local/squid/libexec

Crie na pasta /usr/local/squid/libexec o arquivo para teste:

# vi teste.squid.auth

Insira a linha conforme as configurações de domínio e da sua rede:

/usr/local/squid/libexec/squid_ldap_auth –R –b “dc=meudominio,dc=com,dc=br” –D “cn=Proxy_user,ou=Internet,dc=meudominio,dc=com,dc=br” –w “12345678” –f sAMAccountName=%s –h 192.168.1.254

Sendo:

-w “12345678” = senha da conta do usuário Proxy_user

-h 192.168.1.254 = IP do servidor Windows 2000 ou 2003 com Active Directory

Salve o arquivo e dê permissões de execução a ele:

# chmod o+x teste.squid.auth

Executando o arquivo:

# ./teste.squid.auth

Logo abaixo, digite:

Proxy_user 12345678

Deverá aparecer como resposta:

# OK

(ATENÇÃO ERRO: WARNING, could not bind to binddn ‘Invalid credentials’)

(Correção: Esse erro não se refere a erro de conta de usuário ou senha, mas sim das informações do AD. Confira o nome completo do seu servidor de domínio da rede, com active directory instalado, o IP do servidor, na linha dada acima: /usr/local/squid/libexec/squid_ldap_auth –R –b “dc=meudominio,dc=com,dc=br” –D “cn=Proxy_user,ou=Internet,dc=meudominio,dc=com,dc=br” –w “12345678” –f sAMAccountName=%s –h 192.168.1.254 . Se todas estas informações estiverem OK, vai funcionar.)

Crie agora na pasta /usr/local/squid/libexec outro arquivo para teste:

# vi teste.squid.group

Insira a linha conforme as configurações de domínio e da sua rede:

/usr/local/squid/libexec/squid_ldap_group –R –b “dc=meudominio,dc=com,dc=br” –D “cn=Proxy_user,ou=Internet,dc=meudominio,dc=com,dc=br” –w “12345678” –f “(&(objectclass=person)(sAMAccountName=%v)(memberof=cn=%a,ou=Internet,dc=meudominio,dc=com,dc=br))” –h 192.168.1.254

Salve o arquivo e dê permissões de execução a ele:

# chmod o+x teste.squid.group

Executando o arquivo:

# ./teste.squid.group

Logo abaixo, digite:

Proxy_user AcessoNormal

Neste caso, ele compara se a conta de usuário Proxy_user está no grupo AcessoNormal, caso esteja aparecerá OK como resposta, caso contrário, se não estiver, aparecerá conforme a linha abaixo:

# ERR

O próximo passo é configurar o Squid.

(Cenas do próximo artigo)

Nenhum comentário: