Você está na página 1de 31

Proxy Squid com Active Directory

Proxy com AD

Estaremos integrando o Proxy Squid, para utilizar


autenticao dos usurio no Active Direcotory.
Existem dois metdos:
Ldap Authentication
NTLM Autentication
LDAP Autentication

Esse processo consiste em usar o biblioteca


squid_ldap_auth, para buscar credencias
de usuarios localizado no AD.
Vantagens e Desvatagens

Como vantagens, podemos citar que a configurao rpida


e facl. Em poucos minutos possvel configurar o squid para
usar a base de autenticao LDAP.
E a desvatagem, deve ser em comparao com o outro
mtodo NTLM. Todos os mtodos utilizados no squid,
utilizam-se de pop-up para solicitar nome de usurio e
senha, e o tempo de credenciais limitado a poucas horas ou
ento ao browser ser finalizado.
Configurao squid_ldap_auth
V em Services -> Proxy Server -> Auth Settings, e altere os
seguintes campos:

Authentication method : LDAP


LDAP version: 3
Authentication Server: Ip do Servidor AD
Authetication server:
cn=Administrator,cn=Users,dc=dominiostato,dc=net
LDAP Password: Senha do Administrador
LDAP Base domain: dc=dominiostato,dc=net
LDAP username DN Attribute: uid
Lpda search filter: sAMAccoutName=%s
Configurao squid_ldap_auth
Configurao squid_ldap_auth
Configurao de grupos do AD
As configuraes devem ser feitas no arquivo squid.inc
Localize as linha abaixo:

auth _param basic children $processes


auth_param basic realm $prompt
auth_param basic credentialsttl $auth_ttl minutes
acl password proxy_auth REQUIRED

As configuraes devem ser feitas depois dessas linhas:


Acl External
external_acl_type ldap_group children=30 %LOGIN
/usr/local/libexec/squid/squid_ldap_group v 3 R b
dc=dominiostato,dc=net D
cn=Administrator,cn=Users,dc=dominiostato,dc=net w
senha f (&(cn=%v)
(memberof=cn=%a,cn=Users,dc=dominiostato,dc=net)) D
Administrador@dominiostato.net -h 192.168.1.49 p 389
Utilizando Grupos do AD

external_acl_type ldap_group %LOGIN


/usr/local/libexec/squid/squid_ldap_group v 3 -R
-b "dc=dominio,dc=local"
-D cn=squid,cn=users,dc=dominio,dc=local
-w password
-f
(&(cn=%v)(memberof=cn=%a,ou=groups,dc=domi
nio,dc=local))"
-h 192.168.0.254
Informaes
%v Variavel que informa o nome do usurio relacionado
anteriormente na autenticao
%a Nome do grupo informado na ACL
-b base
-D Conta de acesso
-W senha
Exemplo
external_acl_type ldap_users %LOGIN
/usr/lib/squid/squid_ldap_group R b
dc=dominiostato,dc=net f
(&(cn=%a)(memberOf=cn=%a,cn=Users,dc=dominiostato,dc
=net)) D Administrator@dominiostato.net W
/etc/squid/senha.txt 192.168.1.49
Criao das ACL
acl proxyadmins external ldap_group PROXYADM
acl proxyusers external ldap_group PROXYUSERS

http_access allow PROXYADM


http_access allow PROXYUSER SITESPERMITIDOS
Ntlm Authentication
Para a autenticao NTLM , vrios procedimentos so
necessrios, entre eles:
Configurao do Kerberos
Configurao Winbind
Configurao do Samba
Ingresso no Dominio AD
Integrao Proxy Squid
Pacotes para i386

pkg_add -r http://e-sac.siteseguro.ws/packages/8/All/samba36-3.6.3.tbz
pkg_add -r http://e-sac.siteseguro.ws/packages/8/All/heimdal-1.4_1.tbz
cd /usr/local/lib
fetch http://e-sac.siteseguro.ws/pfsense/8/All/ldd/libasn1.so.10
fetch http://e-sac.siteseguro.ws/pfsense/8/All/ldd/libgssapi.so.10
fetch http://e-sac.siteseguro.ws/pfsense/8/All/ldd/libheimntlm.so.10
fetch http://e-sac.siteseguro.ws/pfsense/8/All/ldd/libhx509.so.10
fetch http://e-sac.siteseguro.ws/pfsense/8/All/ldd/libkrb5.so.10
fetch http://e-sac.siteseguro.ws/pfsense/8/All/ldd/libroken.so.10
Pacotes para 64 bits

pkg_add -r http://e-sac.siteseguro.ws/packages/amd64/8/All/samba36-
3.6.3.tbz
pkg_add -r http://e-sac.siteseguro.ws/packages/amd64/8/All/heimdal-
1.4_1.tbz
cd /usr/local/lib
fetch http://e-sac.siteseguro.ws/pfsense/8/amd64/All/ldd/libasn1.so.10
fetch http://e-sac.siteseguro.ws/pfsense/8/amd64/All/ldd/libgssapi.so.10
fetch http://e-sac.siteseguro.ws/pfsense/8/amd64/All/ldd/libheimntlm.so.10
fetch http://e-sac.siteseguro.ws/pfsense/8/amd64/All/ldd/libhx509.so.10
fetch http://e-sac.siteseguro.ws/pfsense/8/amd64/All/ldd/libkrb5.so.10
fetch http://e-sac.siteseguro.ws/pfsense/8/amd64/All/ldd/libroken.so.10
Configurando Samba
Edite o arquivo /usr;/local/samba/smb.conf

[global]
interfaces = em1
bind interfaces only = yes
netbios name = PFSENSE
workgroup = DOMINIOSTATO
realm = DOMINIOSTATO.NET
server string = Domain Proxy Server
encrypt passwords = yes
security = ADS
password server = 192.168.1.250
log level = 3
log file = /var/log/samba/%m.log
max log size = 50
socket options = TCP_NODELAY SO_SNDBUF=8192
printcap name = /etc/printcap
preferred master = no
dns proxy = no
ldap ssl = no
idmap uid = 10000-20000
idmap gid = 10000-20000
winbind use default domain = yes
cups options = raw
/etc/krb5.conf
[logging]
default = FILE:/var/log/krb5libs.log
kdc = FILE:/var/log/krb5kdc.log
admin_server = FILE:/var/log/ksadmind.log

[libdefaults]
default_realm = DOMINIOSTATO.NET
dns_lookup_realm = true
dns_lookup_kdc = true
ticket_lifetime = 24h
forwardable = yes
; default_tgs_enctypes = DES.CBC.CRC DES.CBC.MD5 RC4.HMAC
; default_tkt_enctypes = DES.CBC.CRC DES.CBC.MD5 RC4.HMAC
; preferred_enctypes = DES.CBC.CRC DES.CBC.MD5 RC4.HMAC

default_tgs_enctypes = aes256-cts-hmac-sha1-96 rc4-hmac des-cbc-crc des-cbc-md5


default_tkt_enctypes = aes256-cts-hmac-sha1-96 rc4-hmac des-cbc-crc des-cbc-md5
permitted_enctypes = aes256-cts-hmac-sha1-96 rc4-hmac des-cbc-crc des-cbc-md5
/etc/krb5.conf
[realms]
DOMINIOSTATO.NET= {
kdc = srv-adteste.dcteste.local.:88
#kdc = mydc2.mydomain.local.:88 Remova o comentrio caso voc tenha um segundo
controlador!
admin_server = srv-adteste.dcteste.local.:749
default_domain = dcteste.
}

[domain_realm]
.dominiostato.net= DOMINIOSTATO.NET
dominiostato.net= DOMINIOSTATO.NET
[kdc]
profile = /var/heimdal/kdc.conf

[appdefaults]
pam = {
debug = false
ticket_lifetime = 36000
renew_lifetime = 36000
forwardable = true
krb4_convert = false
}
/var/heimdal/kadm5.acl
*/*administrador@DOMINIOSTATO.NET *
/var/heimdal/kdc.conf
[kdcdfefaults]
acl_file = /var/heimdal/kadm5.acl
dict_file = /usr/share/dict/words
admin_keytab = /var/heimdal/kadm5.keytab
v4_mode = noreauth

[libdefaults]
default_realm = DOMINIOSTATO.NET

[realms]
DOMINIOSTATO.NET = {
master_key_type = des.cbc.crc
supported_enctypes = des3.hmac.sha1:normal arcfourhmac:
normal des.hmac.sha1:normal des.cbc.md5:normal des.cbc.crc:normal
des.cbc.crc:v4 des.cbc.crc:afs3
}
/etc/rc.conf.local
samba_enable="YES
winbindd_enable="YES"
Configurar o DNS Client

Adicione o servidor Ad no DNS do PFSense


Criao de ShellCMD

V em Services Shellcmd, e adicione dois comandos:


mkdir /var/run/samba -> Do tipo Shellcmd
/usr/local/etc/rc.d/samba start -> Do tipo Shellcmd
TGT
Atravs do comando kinit, iremos buscar o TGT no Servidor AD

kinit Administrator@DOMINIO.COM

Ser solicitado a senha do administrador.


Se tudo ocorrer corretamente, o comando klist ir exibir informaes sobre o
ticket.

klist

Ticket cache: FILE:/tmp/krb5cc_0


Default principal: Administrador@DOMINIO.LOCAL
Valid starting Expires Service principal
12/18/09 16:26:03 12/18/09 23:06:03
krbtgt/DOMINIO.LOCAL@DOMINIO.LOCAL
Kerberos 4 ticket cache: /tmp/tkt0
klist: You have no tickets cache
Ingressando no Dominio
net ads join DOMINIO -U administrador%SENHA_DO_ADMINISTRADOR
Using short domain name -- DOMINIO
Joined 'PROXYVM2' to realm 'Dominio.local
Verificando Usurios e Grupos
service samba restart

wbinfo t
wbinfo g
wbinfo u
net ads info
Configurando Squid
V em services , Proxy Server, em Custom Options adicione o seguinte
conteudo:

acl_uses_indirect_client on;follow_x_forwarded_for allow


localhost;auth_param ntlm program /usr/local/bin/ntlm_auth --use-
cached-creds --helper-protocol=squid-2.5-ntlmssp;auth_param ntlm
children 10;auth_param ntlm keep_alive on; acl password proxy_auth
REQUIRED;http_access allow password;http_access deny all
Configurando Grupos LDAP
No mesmo local, custom options, altere para :

acl_uses_indirect_client on;follow_x_forwarded_for allow


localhost;auth_param ntlm program /usr/local/bin/ntlm_auth --use-cached-
creds --helper-protocol=squid-2.5-ntlmssp;auth_param ntlm children
10;auth_param ntlm keep_alive on;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
Administrator@dominiostato.net -w P@ssw0rd -h 192.168.1.49 -p 389; acl
ad_net external ldap_users Internet;http_access allow ad_net;http_access
deny all
Testando
Ingressar em uma mquina no dominio
Configurar o proxy no Browser
Navegar
Verificar nos logs (/var/log/squid/acccess.log)
NOTA IMPORTANTE PARA
WINDOWS 7
No windows 7 so implementadas uma srie de novas polticas de
segurana , uma delas inclusive barra a autenticao transparente que
usamos em nossos proxys. Para resolver este problema siga este pequeno
manual que orienta como dever ser feita esta liberao

Antes de mais nada, para rodar este procedimento necessrio que voc
seja administrador da mquina local.
Execute o Execute o comando "gpedit.msc" e navegue na arvore seguindo
esta sequncia:
Diretiva computador local
Configuraes do Windows
Configuraes de segurana
Diretivas locais
Opes de segurana
Segurana de rede: nvel de autenticao lan manager
Marque a opo: enviar lm e ntlm - usar nivel de segurana NTLMv2
Vale Lembrar que isso tambm pode ser feito por GPO no AD.

Você também pode gostar