Pesquisar este blog

sexta-feira, 3 de julho de 2015

PFSense – Configurando Squid Autenticando no Active Directory via LDAP

Neste Post veremos como configurar o nosso Squid dentro do PFSense, para buscar as autenticações dos nosso usuário em um Domínio Active Directory.
Esse processo é bem simples, bastando configurar algumas informações no próprio ambiente do PFSense.
Mas também é possível, utilizar autenticação dos Usuários no AD, mas vinculado a grupos do próprio AD, por exemplo, permitir Usuários de o Grupo TI acessar qualquer site, e usuários do Grupo Users terem limitações de acesso.
Num primeiro momento vamos ver como fazer a simples autenticação dos usuários no Active Directory.
O primeiro item a ser feito, pós-instalação do Squid, é a configuração do Proxy , para tanto vá em Services -> Proxy Server ->Auth Settings e altere os seguintes campos abaixo:

Authentication method : LDAP
LDAP version: 3
Authetication Server: 192.168.1.49
Authentication server port: 389
LDAP server user DN: cn=Administrator,cn=Users,dc=dominiostato,dc=net
LDAP Password: P@ssword
LDAP Base domain: dc=dominiostato,dc=net
LDAP Username DN Attribute: uid
LDAP search filter : SAMAccountName=%s

Neste caso acima, estou utilizando o domínio DOMINIOSTATO.NET, e utilizando o Administrar com senha P@ssword, como o usuário que irá buscar informações de autenticação.
O filter, é um filtro LDAP que irá buscar no AD o campo sAMAccountName, que na realidade é próprio nome do usuário no Schema do Active Directory.
Feita essa configuração, já está integrado com seu Active Directory. Veja abaixo a imagem:

pfsense1

PFSense2
Para verificar, feche o browser e acesse a Internet. Deverá ser solicitado nome de usuário e senha, que deverão ser colocadas de usuário do Active Directory.
O grande problema nesse modelo, são restrições por tipo de usuário, que não será possível, pela forma como é configurado o Squid no PFSense.
Poderíamos usar o campo Custom da Guia General, para criar configurações de Grupos associados a ACL, e não grupos do AD diretamente. Mas como é feito no PFSense, primeiro são colocados as configurações do Campo Custom do Squid, antes da autenticação no arquivo final de configuração squid.conf, de forma que você não poderá usar a autenticação, pois a mesma está abaixo ainda no arquivo de configuração.
Qual solução?
Usar somente o campo Custom do Squid PFSense.

Customizando as configurações do Squid no PFSense


Na guia General, no final da página existe um campo chamado Custom Option. Neste campo podemos fazer qualquer tipo de configuração ( desde que não misture com algumas opções da WEB como autenticação), tais como autenticação, Balance, QOS, etc. Veja abaixo a figura.
pfsense3

Através de um simples comando no console, ou no próprio PFSense, Diagnostics, podemos encontrar o arquivo squid.conf, e copiar as configurações prontas de autenticação LDAP.

find / | grep squid.conf

Uma vez pego essas configurações, basta copiarmos para o campo Custom. “Lembre-se que as linhas devem sempre terminar com “;” (ponto e virgula).
Num primeiro momento iremos usar somente a biblioteca squid_ldap_auth, e através do mesmo iremos improvisar para criamos usuários vinculados a uma acl, como se fosse um grupo. Vejamos a linha de autenticação:

auth_param basic program /usr/pbi/squid-amd64/libexec/squid/squid_ldap_auth -v 3 -b DC=DOMINIOSTATO,DC=NET -D CN=Administrator,CN=Users,DC=DOMINIOSTATO,DC=NET -w P@ssw0rd -f “sAMAccountName=%s” -u uid -P 192.168.1.49:389;auth_param basic children 5; auth_param basic realm Please enter your credentials to access the proxy;
auth_param basic credentialsttl 60 minutes;

A primeira linha com certeza a mais importante, é que faz a chamada para a bibliote squid_ldap_auth. Temos as seguintes opções:
-b   Base LDAP ( Nome do domínio no formato LDAP)
-D Usuário utilizado para fazer a consulta no Active Directory no formato LDAP. Esse usuário deverá fazer parte do grupo Domain Admins.
-w Senha do Usuário utilizado anteriormente
-f Filtro de consulta. (Campo que será comparado com que o usuário digitar no Browser)
-u Especifica o name do Atributo DN que contem o nome de usuário/Login .
-P Conexão LDAP, nome ou IP Servidor com sua respectiva porta.

Na segunda linha temos a quantidade de processos filhos que serão iniciados, em REALM a informação que será exibida na popup que solicita usuário e senha e por fim tempo de vida das credencias, que neste caso poderá ser de 60 minutos, ou até o browser fechar.
Uma vez configurado o método de autenticação, devemos criar agora as ACLs. É bem comum e padrão do PFSense deixar da seguinte forma:

acl password proxy_user REQUIREDhttp_access allow passoword

Neste item acima, criamos uma ACL chamada password, que exige somente uma autenticação válida. E logo abaixo permitidos acesso a tudo, de quem foi autenticado pela ACL password.
Mas muitas vezes necessitamos de mais controle, e não queremos simplesmente permitir acesso a tudo e a todos. Desta forma é possível criar ACLs, vinculados a usuários específicos.

acl usuarios proxy_user joao maria pedroacl diretoria proxy_user marcos fernando acl sites_proibidos url_regex –i facebook Microsoft
http_access deny sites_proibidos usuários
http_access allow usuarios
http_access allow diretoria
http_access deny all

Neste exemplo acima, criamos duas acls usuarios e diretoria, vinculados aos usuários joao, maria, Pedro, marcos e fernando. Criamos uma outra acl com alguns sites. Ao final proibimos a acl sites_proibidos aos grupos usuarios, posteriormente permitindo acesso total aos dois grupos e por fim bloqueamos o restante.
É um método válido, mas não a melhor forma, existe uma outra bibliote squid_ldap_group, que trás os grupos já prontos do Active Directory, dessa forma se torna muito mais fácil a administração, sendo gerenciada diretamente do AD da Microsoft.

Buscando grupos do LDAP através do squid_ldap_group


Podemos fazer uso dessa biblioteca para buscar os grupos do AD. A chamada é diferente da acima, por se tratar de uma entrada de acl, mas também diferente da anterior, pois trata-se de uma acl externa.
No exemplo abaixo, estou usando ainda o mesmo domínio e usuário de exemplo, bem como endereço IP. O mais diferente realmente é o filtro que agora faz referencia para variáveis.

external_acl_type ldap_users %LOGIN /usr/local/libexec/squid/squid_ldap_group -v 3 -R -b DC=DOMINIOSTATO,DC=NET -f “(&(cn=%v)(memberOf=cn=%a,cn=Users,dc=dominiostato,dc=net ))” -D CN=Administrator,CN=Users,DC=DOMINIOSTATO,DC=NET -w P@ssw0rd -P 192.168.1.49:389

External_ACL é a chamada para a biblioteca, ldapusers foi o nome dado a essa acl. Posteriormente quando formos utilizar para informar o grupo em particular, deveremos fazer referencia a esse nome.
Bom, o que é mais diferente, é o filtro. Primeiro usamos o cn=%v. Esse cn , significa common name, que será o nome digitado pelo usuário no Browser. Posteriormente temos memberOf=cn=%a,cn=Users,dc=dominiostato,dc=net, onde %a será o nome do grupo informado na acl, o restante é o caminho do meu grupo dentro do AD. Na realidade para quem já conhece LDAP, seria dn ( Distinguished Name). Esse valor deve ser exato, caso contrário o grupo não será encontrado.
E o restante é exatamente igual à autenticação vista anteriormente.
Uma vez feita a configuração correta da biblioteca, basta agora fazermos a chamada dela, junto ao grupo que queremos utilizar do AD.

acl ad_usuarios external ldap_users Usersacl ad_diretoria external ldap_users Diretoria acl sites_proibidos url_regex –i facebook Microsoft
http_access deny sites_proibidos ad_usuarios
http_access allow ad_usuarios
http_access allow ad_diretoria
http_access deny all

Podemos ver acima, que a sintaxe é muito similar em relação a uma ACL comum e uma ACL externa. Usamos a palavra reserva external seguida do nome da ACL externa que criamos anteriormente.
O processo é simples, porém deve-se prestar muita atenção, pois uma virgula a mais ou a menos, principalmente nos caminhos da base, grupo ou usuário LDAP já é o suficiente para não funcionar.
“E mais importante: Todo final de linha termina com “;” (ponto e virgula). NÃO ESQUEÇA.
O ponto e vírgula pra o PFSense informa onde termina a linha, deste forma ele poderá organizar de forma correta o squid.conf.
Espero que aproveitem, e não deixem de conferir o curso completo de PFSense, bem como a aula Integrando Squid + ActiveDirectory via LDAP e NTLM.


Artigo retirado de: http://www.stato.blog.br/wordpress/?p=1470

Nenhum comentário:

Postar um comentário

Observação: somente um membro deste blog pode postar um comentário.