Mostrando postagens com marcador tutorial squid ntlm active directory windows server. Mostrar todas as postagens
Mostrando postagens com marcador tutorial squid ntlm active directory windows server. Mostrar todas as postagens

quinta-feira, 14 de maio de 2009

Artigo - Squid + NTLM + Active Directory

Depois de bater cabeça fiz meu próprio tutorial para quem precisa autenticar a internet juntamente com seu controlador de domínio(PDC). Tenho certeza que se chegarem ao fim terão um funcionamento perfeito da autenticação, pois já o fiz várias vezes em vários clientes.


Distribuição Usada:

Ubuntu Server 8.04 (mas deve funcionar em qualquer uma)

Pacotes necessários:
samba-3.0.21c.tar.gz
squid-2.5.STABLE12.tar.gz

Considerações:

Nome do domínio: DOMINIO

Nome completo do domínio: DOMINIO.LOCAL
Nome do Servidor: SERVIDOR (Controlador de Domínio)

IP do Servidor(Controlador de Domínio): 192.168.0.1

Baixe os pacotes

# cd /usr/src

# wget http://ppp.samba.org/samba/ftp/stable/samba-3.0.21c.tar.gz

# wget http://www.squid-cache.org/Versions/v2/2.5/squid-2.5.STABLE12.tar.gz


Descompacte compile e instale o Samba

# tar zxvf samba-3.0.21c.tar.gz

# cd samba-3.0.21c/source

# ./configure --bindir=/bin --sbindir=/usr/sbin --with-winbind --with-winbind-auth-challenge

# make && make install


Copie a biblioteca do Winbind e crie um link simbólico

# cp /usr/src/samba-3.0.21c/source/nsswitch/libnss_winbind.so /lib

# ln -s /lib/libnss_winbind.so /lib/libnss_winbind.so.2

Edite o arquivo /etc/hosts o adicione o ip do controlador de domínio

# vim /etc/hosts


Coloque a seguinte linha alterando os nomes de acordo com sua rede e nomes


192.168.0.1 servidor.dominio.local servidor


Instale o ntpdate para sincronizar o horário dos servidores

# apt-get update

# apt-get install ntpdate

# ntpdate servidor


Instale os seguintes pacotes krb5-kdc krb5-config krb5-clients libpam-krb5 krb5-user

# apt-get install krb5-kdc krb5-config krb5-clients libpam-krb5 krb5-user


Edite o arquivo /etc/krb5.conf

# vim /etc/krb5.conf


E deixe da seguinte forma:


[libdefaults]

default_realm = DOMINIO.LOCAL

krb4_config = /etc/krb.conf

krb4_realms = /etc/krb.realms

kdc_timesync = 1

ccache_type = 4

forwardable = true

proxiable = true

v4_instance_resolve = false

v4_name_convert = {

host = {

rcmd = host

ftp = ftp

}

plain = {

something = something-else

}

}

fcc-mit-ticketflags = true

[realms]

DOMINIO.LOCAL = {

kdc = 192.168.0.1

admin_server = 192.168.0.1:749

default_domain = 192.168.0.1

}

[domain_realm]

domínio.local = DOMINIO.LOCAL

.domínio.local = DOMINIO.LOCAL

[login]

krb4_convert = true

krb4_get_tickets = false


Agora vamos inicializar a comunicação com controlador de domínio


# kinit administrador@DOMINIO.LOCAL


Onde “administrador” é uma conta administrador do servidor.


Dê o comando


# klist


Se tudo der certo você vera uma mensagem como esta:


klist: No credentials cache found (ticket cache FILE:/tmp/krb5cc_0)

Kerberos 4 ticket cache: /tmp/tkt0

klist: You have no tickets cached


Agora edite o arquivo /etc/nsswitch.conf

# vim /etc/nsswitch.conf


altere as linhas:


passwd: compat

group: compat

para:

passwd: compat winbind

group: compat winbind


Crie e edite o arquivo /usr/local/samba/lib/smb.conf


# vim /usr/local/samba/lib/smb.conf


deixando assim:


[global]

workgroup = DOMINIO

server string = Servidor Proxy

netbios name = proxy

log file = /var/log/samba/%m.log

max log size = 0

security = domain

password server = SERVIDOR

socket options = TCP_NODELAY SO_RCVBUF=8192 SO_SNDBUF=8192

encrypt passwords = yes

wins server = SERVIDOR

winbind separator = "+"

winbind uid = 10000-20000

winbind gid = 10000-20000

template homedir = /dev/null

template shell = /dev/null

winbind use default domain = yes


Crie a pasta e dê permissão e reinicie o samba


# mkdir /var/log/samba

# chmod 777 -R /var/log/samba/

# nmbd restart

# smbd restart

# winbindd restart


Agora vamos ingressar o servidor proxy no domínio e restartar o samba. Digite a senha do usuário usado (administrador no caso) após dar o comando de ingresso.


# net rpc join DOMINIO -U administrador


# nmbd restart

# smbd restart

# winbindd restart


Para testar digite “wbinfo –u”. Se tude der certo, você terá a listagem de usuários do domínio.


Agora vamos descompactar, compilar e instalar o squid.


# cd /usr/src

# tar zxvf squid-2.5.STABLE12.tar.gz

# cd squid-2.5.STABLE12

# ./configure --sbindir=/usr/sbin --sysconfdir=/etc/squid --enable-default-err-language=Portuguese --enable-delay-pools --enable-underscores --enable-auth="ntlm,basic" --enable-external-acl-helpers="winbind_group,wbinfo_group," --enable-store-io=ufs,aufs,diskd --enable-snmp --enable-linux-netfilter --enable-basic-auth-helpers="winbind" --enable-ntlm-auth-helpers="SMB,winbind" --with-winbind-auth-chalenge

# make && make install


Configurando o squid

# mv /etc/squid/squid.conf /etc/squid/squid.conf.original

# egrep -v "^#^$" /etc/squid/squid.conf.original > /etc/squid/squid.conf


Adicione as linhas a seguir ao seu squid.conf. As linhas em vermelho devem ser adicionadas, e as outras são apenas para referencia a localização das outras. Altere as acls abaixo a gosto para dar permissões diferentes aos usuários do proxy.


cache_effective_user proxy

auth_param ntlm program /bin/ntlm_auth DOMINIO/SERVIDOR --helper-protocol=squid-2.5-ntlmssp

auth_param ntlm use_ntlm_negotiate off

auth_param ntlm children 10

auth_param ntlm max_challenge_reuses 0

auth_param ntlm max_challenge_lifetime 5 minutes


auth_param basic program /bin/ntlm_auth DOMINIO/SERVIDOR --helper-protocol=squid-2.5-basic

auth_param basic children 5

auth_param basic realm Digite seu login e senha.

auth_param basic credentialsttl 2 hours

auth_param basic casesensitive off


acl CONNECT method CONNECT

acl acesso proxy_auth REQUIRED # Solicitando a autenticação

http_access allow manager localhost


http_access deny CONNECT !SSL_ports

http_access allow acesso # Liberando usuários autenticados

http_access allow all


Para finalizar


# mkdir /usr/local/squid/var/cache

# touch /usr/local/squid/var/logs/store.log

# touch /usr/local/squid/var/logs/access.log

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

# chown proxy /usr/local/squid/var/logs/store.log

# chown proxy /usr/local/squid/var/logs/access.log

# chown root.proxy /usr/local/samba/var/locks/winbindd_privileged

# winbindd restart

# nmbd restart

# smbd restart

# squid -z

# squid &


Não se esqueça de configurar o proxy no navegador das estações na porta 3128(ou mais conveniente caso alterou no squid.conf) e também não esqueçam de colocar o samba e winbind num script de inicializacao do sistema.(ex. /etc/rc.local). Qualquer dúvida fiquem a vontade para perguntar, pq responderei na medida do possível.