You are on page 1of 25

Tutorial completo de implementao de LDAP + Samba + Squid [Artigo]

http://www.vivaolinux.com.br/artigos/impressora.php?codigo=5178

Tutorial completo de implementao de LDAP + Samba + Squid


Autor: Braulio Gomes Rodrigues <braulio at linuxajuda.org> Data: 26/07/2006 Consideraes iniciais Este tutorial, criado por Braulio Gomes, aborda a criao de um servidor Samba baseado em banco de dados LDAP com suporte a autenticao de usurios, tanto pelo Samba quanto pelo Squid. Tutorial criado em: 30/06/2006 Plataforma: Slackware 10.2 Verso do Tutorial: TUTORIAL-LDAP-1.0 Licena: LDP ( Linux Documentation Project ) Reduzir custo gerencial papel de todo bom administrador. Nada mais recomendvel ento, para se iniciar uma boa gesto de TI, do que manter centralizado o mximo possvel de informaes. Tecnologicamente falando, uma base centralizada de usurios (e permisses estes usurios) deixou de ser simplesmente uma opo de implementao e tornou-se uma real necessidade. Isso se tornou bastante popular, os sistemas operacionais Microsoft Windows NT e Windows 2000 fazem uso de uma base de dados centralizada para manter a organizao de todas as informaes da rede: trata-se do Active Directory, que o servio de diretrio implementado pela Microsoft para servir como depsito concentrador de informaes comuns (objetos). So exemplos de objetos do Active Directory: contas de usurios, grupos de usurios, impressoras de rede, polticas de controle, etc. O fato do sistema operacional Linux estar conquistando cada vez mais espao dentro das corporaes (atuando tanto como servidores quanto como estaes de trabalho), incentivou a comunidade Open Source a integr-lo s j existentes "redes Windows". exatamente a que entra o Samba, que faz a gerncia de sistemas heterogneos. bem verdade que mquinas com Linux e executando Samba podem completamente substituir os controladores de domnio (PDC e BDCs), mas AINDA no podem por si s implementar o Active Directory (caracterstica esta que certamente estar presente na verso 4 do Samba). Sendo assim vemos a necessidade de colocar ambos sistemas operacionais para se comunicar em um ambiente de rede; e conseguimos tal feito graas ao protocolo SMB. Neste documento ser abordado em todos os detalhes necessrios em como montar um Primary Domain Server (PDC) utilizando Samba + OpenLDAP. Este documento no aborda a explicao terica, mas sim a parte prtica de tudo isso. Minha inteno na elaborao dessa soluo a unificao da autenticao dos usurios da empresa, podendo assim os clientes acessarem todos os servios disponibilizados utilizando apenas 1 (um) usurio e senha.

1 de 25

12/02/2010 13:43

Tutorial completo de implementao de LDAP + Samba + Squid [Artigo]

http://www.vivaolinux.com.br/artigos/impressora.php?codigo=5178

Pacotes utilizados A seguir os pacotes que foram necessrios nesta instalao. Neste instante considerarei que todo o sistema operacional esteja instalado e configurado, pois no abordaremos a instalao do Linux. Sugiro que voc crie um diretrio e armazene todos os pacotes dentro desse, o meu foi criado dentro do /opt: # mkdir -p /opt/ldap Para a nosso LDAP-Server Linux, deveremos obter: samba-3.0.20.tar.gz http://us5.samba.org/samba/ftp/stable/samba-3.0.20.tar.gz smbldap-tools_0.9.2.orig.tar.gz http://ftp.ccc.uba.ar/download/.../smbldap-tools_0.9.2.orig.tar.gz cyrus-sasl-2.1.22.tar.gz http://sunsite.rediris.es/pub/mirror/cyrus-mail/cyrus-sasl-2.1.22.tar.gz openldap-2.3.24.tgz ftp://ftp.openldap.org/pub/OpenLDAP/openldap-release/openldap-2.3.24.tgz nss_ldap-251.tgz http://www.padl.com/download/nss_ldap.tgz MigrationTools-57.tgz http://www.padl.com/download/MigrationTools.tgz Authen-SASL-2.10.tar.gz http://www.cpan.org/authors/.../Authen-SASL-2.10.tar.gz Convert-ASN1-0.20.tar.gz http://search.cpan.org/CPAN/.../Convert-ASN1-0.18.tar.gz Crypt-SmbHash-0.12.tar.gz ftp://ftp.inria.fr/pub/CPAN/.../Crypt-SmbHash-0.12.tar.gz Digest-SHA1-2.11.tar.gz http://search.cpan.org/CPAN/.../Digest-SHA1-2.11.tar.gz IO-Socket-SSL-0.97.tar.gz http://mirrors.ibiblio.org/pub/.../IO-Socket-SSL-0.97.tar.gz Jcode-2.05.tar.gz http://search.cpan.org/CPAN/.../Jcode-2.05.tar.gz Net_SSLeay.pm-1.25.tar.gz http://mirror.uta.edu/CPAN/.../Net_SSLeay.pm-1.25.tar.gz URI-1.33.tar.gz http://www.volity.org/frivolity/perl/URI-1.33.tar.gz

2 de 25

12/02/2010 13:43

Tutorial completo de implementao de LDAP + Samba + Squid [Artigo]

http://www.vivaolinux.com.br/artigos/impressora.php?codigo=5178

Unicode-Map-0.112.tar.gz http://search.cpan.org/CPAN/.../Unicode-Map-0.112.tar.gz Unicode-Map8-0.12.tar.gz http://search.cpan.org/CPAN/.../Unicode-Map8-0.12.tar.gz Unicode-MapUTF8-1.11.tar.gz http://search.cpan.org/CPAN/.../Unicode-MapUTF8-1.11.tar.gz Unicode-String-2.09.tar.gz http://search.cpan.org/CPAN/.../Unicode-String-2.09.tar.gz XML-SAX-Base-1.04.tar.gz http://www.volity.org/frivolity/perl/XML-SAX-Base-1.04.tar.gz perl-ldap-0.33.tar.gz http://search.cpan.org/CPAN/.../perl-ldap-0.33.tar.gz httpd-2.0.58.tar.gz http://ftp.unicamp.br/pub/apache/httpd/httpd-2.0.58.tar.gz php-5.1.4.tar.gz http://br2.php.net/get/php-5.1.4.tar.gz/from/us2.php.net/mirror ldap-account-manager-1.0.2.tar.gz http://prdownloads.sourceforge.net/.../ldap-account-manager-1.0.2.tar.gz

Foi utilizado Slackware 10.2.0 com kernel 2.4.31, pois como j um kernel default no Slackware, certamente est estvel. O ambiente utilizado foi uma mquina virtual construda atravs do software Vmware Workstation. Foi utilizado o ldap-account-manager como front-end, pois eu o achei mais amigvel em relao aos outros front-ends utilizados, mas isso fica a critrio do administrador.

Instalando O Cyrus-Sasl O Cyrus-Sasl um pacote de autenticao segura que vamos usar para o Samba: # tar -zxvf cyrus-sasl-2.1.22.tar.gz # cd cyrus-sasl-2.1.22 # ./configure --with-bdb-libdir=/usr/lib --with-bdb-incdir=/usr/include/db4 # make # make install Se tudo correu bem, vamos criar um link simblico para que o LDAP consiga acessar o DB. Para isso faa o comando:

3 de 25

12/02/2010 13:43

Tutorial completo de implementao de LDAP + Samba + Squid [Artigo]

http://www.vivaolinux.com.br/artigos/impressora.php?codigo=5178

# ln -s /usr/local/lib/sasl2 /usr/lib/sasl2 OBS: necessrio que seu sistema tenha o DB4 instalado. Atualize a biblioteca do seu sistema rodando o comando: # ldconfig

Instalando o OpenLDAP O LDAP (Lightweight Directory Access Protocol) um protocolo utilizado pelos servidores para concentrar informaes em um repositrio logicamente organizado. graas a ele que informaes comuns podem ser inseridas, alteradas, excludas e consultadas de uma espcie de "banco de dados de informaes". Ao se registrar um usurio no domnio, por exemplo, as informaes referentes a esse usurio estaro armazenadas e disponveis graas ao uso deste protocolo. Por sua vez, o OpenLDAP uma implementao OpenSource do LDAP. # tar -zxvf openldap-2.3.24.tgz # cd openldap-2.3.24 # env CPPFLAGS="-I/usr/include/db4" LDFLAGS="-L/usr/lib" ./configure --enable-crypt # make depend # make # make install

No pacote do Samba existe o "samba.schema", que ser necessrio aqui. Vamos apenas descompactar o Samba: # tar -zxvf samba-3.0.20.tar.gz Agora basta copiar o arquivo "samba.schema" para que seja carregado no LDAP: # cp /opt/ldap/samba-3.0.20/examples/LDAP/samba.schema /usr/local/etc/openldap/schemas Lembrando que o "qmail.schema" foi includo porque usarei esta mesma base para a autenticao no Postfix, que instalarei futuramente. O nosso slapd.conf, que est no diretrio /usr/local/etc/openldap/slapd.conf, dever ficar da seguinte forma: OBS: O rootpw deve ser gerado com slappasswd. # slapd.conf include /usr/local/etc/openldap/schema/core.schema include /usr/local/etc/openldap/schema/cosine.schema include /usr/local/etc/openldap/schema/inetorgperson.schema include /usr/local/etc/openldap/schema/nis.schema

4 de 25

12/02/2010 13:43

Tutorial completo de implementao de LDAP + Samba + Squid [Artigo]

http://www.vivaolinux.com.br/artigos/impressora.php?codigo=5178

include /usr/local/etc/openldap/schema/samba.schema include /usr/local/etc/openldap/schema/qmail.schema

pidfile /usr/local/var/run/slapd.pid argsfile /usr/local/var/run/slapd.args database bdb suffix "dc=linuxajuda,dc=org" rootdn "cn=administrador,dc=linuxajuda,dc=org" rootpw {SSHA}KwwbIdAjWcAOlxLjgq0O4iRnl7C05NhZ directory /usr/local/var/openldap-data password-hash {CRYPT} password-crypt-salt-format "$1$.8s" index objectClass,uidNumber,gidNumber eq index cn,sn,uid,displayName pres,sub,eq index memberUid,mail,mailAlternateAddress,givenname,accountStatus,mailHost,deliveryMode eq index sambaSID,sambaPrimaryGroupSID,sambaDomainName eq index default sub access to attrs=userPassword,sambaLMPassword,sambaNTPassword by self write by anonymous auth by * none access to * by * read Populando o LDAP Como nossa base bem simples, basta criar um arquivo chamado /root/base.ldif com o seguinte contedo: dn: dc=linuxajuda,dc=org dc: linuxajuda objectClass: top objectClass: domain dn: ou=Usuarios,dc=linuxajuda,dc=org ou: Usuarios objectClass: top objectClass: organizationalUnit dn: ou=Grupos,dc=linuxajuda,dc=org ou: Grupos objectClass: top objectClass: organizationalUnit dn: ou=Computadores,dc=linuxajuda,dc=org ou: Computadores objectClass: top

5 de 25

12/02/2010 13:43

Tutorial completo de implementao de LDAP + Samba + Squid [Artigo]

http://www.vivaolinux.com.br/artigos/impressora.php?codigo=5178

objectClass: organizationalUnit Agora s incluir essas entradas no LDAP usando o comando abaixo: # ldapadd -x -D cn=administrador,dc=linuxajuda,dc=org -W -f /root/base.ldif Enter LDAP Password: adding new entry "dc=linuxajuda,dc=org" adding new entry "ou=Usuarios,dc=linuxajuda,dc=org" adding new entry "ou=Grupos,dc=linuxajuda,dc=org" adding new entry "ou=Computadores,dc=linuxajuda,dc=org" Com isso nossa base j est inicializada, um simples "ldapsearch -x" mostra como ela ficou. Agora migraremos nossas contas do sistema para o LDAP usando o MigrationTools.

Migrando os grupos e usurios Agora migraremos nossas contas do sistema para o LDAP: # tar zxvf MigrationTools.tgz # cd MigrationTools-47 Edite o arquivo migrate_common.ph e altere as seguintes linhas: $NAMINGCONTEXT{'passwd'} = "ou=Usuarios"; $NAMINGCONTEXT{'group'} = "ou=Grupos"; $DEFAULT_MAIL_DOMAIN = "linuxajuda.org"; $DEFAULT_BASE = "dc=linuxajuda,dc=org"; $DEFAULT_MAIL_HOST = "mail.linuxajuda.org"; Salve e execute o seguinte comando para gerar o arquivo "grupos.ldif", que conter todos os grupos do sistema: # ./migrate_group.pl /etc/group /root/grupos.ldif Com isso ele ir gerar o arquivo /root/grupos.ldif com as entradas necessrias para o LDAP. Agora vamos inserir as entradas dos grupos no LDAP: # ldapadd -x -D cn=administrador,dc=linuxajuda,dc=org -W -f /root/grupos.ldif Pronto! Ele adicionou todos os grupos do sistema no LDAP. No podemos esquecer de adicionar tambm os usurios: # ./migrate_passwd.pl /etc/passwd /root/usuarios.ldif # ldapadd -x -D cn=administrador,dc=linuxajuda,dc=org -W -f /root/usuarios.ldif Pronto, nossa base do sistema j esta ok, basta agora informarmos para o sistema se autenticar no LDAP.

6 de 25

12/02/2010 13:43

Tutorial completo de implementao de LDAP + Samba + Squid [Artigo]

http://www.vivaolinux.com.br/artigos/impressora.php?codigo=5178

Nss_ldap Instale o pacote de configuraes de contas: # tar zxvf nss_ldap.tgz # cd nss_ldap-251 # ./configure # make # make install necessrio modificar o arquivo /etc/ldap.conf: host 127.0.0.1 base dc=linuxajuda,dc=org rootbinddn cn=administrador,dc=linuxajuda,dc=org Vamos agora modificar as linhas do /etc/nsswitch.conf, esse arquivo onde o sistema busca as informaes de login. Altere as seguintes linhas para que fique assim:
passwd: shadow: group: passwd: group: files ldap files ldap files ldap compat ldap compat ldap

Agora vamos testar o LDAP: # id root uid=0(root) gid=0(root) groups=0(root),1(bin),2(daemon),3(sys),4(adm),6(disk),10(wheel),11(floppy) se voc verificar nos logs, vai ver que ele buscou as entradas no LDAP: # tail /var/log/debug Jun 29 17:17:03 tropical slapd[2526]: conn=11 op=1 SRCH base="dc=tropical,dc=local" scope=2 deref=0 filter="(&(objectClass=posixGroup))" Jun 29 17:17:03 tropical slapd[2526]: conn=11 op=1 SRCH attr=cn userPassword memberUid gidNumber Jun 29 17:17:03 tropical slapd[2526]: conn=11 op=1 SEARCH RESULT tag=101 err=0 nentries=44 text= Jun 29 17:17:03 tropical slapd[2527]: conn=11 op=2 SRCH base="dc=tropical,dc=local" scope=2 deref=0 filter="(&(objectClass=posixGroup))" Jun 29 17:17:03 tropical slapd[2527]: conn=11 op=2 SRCH attr=cn userPassword memberUid gidNumber Jun 29 17:17:03 tropical slapd[2527]: conn=11 op=2 SEARCH RESULT tag=101 err=0 nentries=44 text= Jun 29 17:17:03 tropical slapd[2528]: conn=11 op=3 SRCH base="dc=tropical,dc=local" scope=2 deref=0 filter="(&(objectClass=posixGroup)(gidNumber=512))" Jun 29 17:17:03 tropical slapd[2528]: conn=11 op=3 SRCH attr=cn userPassword memberUid gidNumber Jun 29 17:17:03 tropical slapd[2528]: conn=11 op=3 SEARCH RESULT tag=101 err=0 nentries=1 text= Jun 29 17:17:03 tropical slapd[2521]: conn=11 fd=12 closed (connection lost) Bom, o LDAP j est funcionando!

7 de 25

12/02/2010 13:43

Tutorial completo de implementao de LDAP + Samba + Squid [Artigo]

http://www.vivaolinux.com.br/artigos/impressora.php?codigo=5178

Samba Vamos agora parte que devemos ter mais ateno, que a do Samba. Como j tnhamos descompactado anteriormente, vamos entrar no diretrio dele: # cd samba-3.0.20 # env CPPFLAGS="-I/usr/local/include/" # ./configure --bindir=/usr/local/bin --sbindir=/usr/local/sbin --libexecdir=/usr/local/libexec --withconfigdir=/etc/samba --with-mandir=/usr/local/man --with-logfilebase=/var/log/samba --enable-cups --with-smbmount --with-ldapsam --with-syslog --with-quotas --with-acl-support --with-ads --enable-debug --with-winbind --with-krb5=/usr --enable-krb5developer OBS: As duas ltimas opes, --with-krb5=/usr e --enable-krb5developer, use somente se voc tiver o kerberos instalado, caso contrrio no precisa. # make # make install Vamos agora ao smb.conf, depois de uns trs dias ralando em cima do Samba, pude realmente chegar a configurao ideal para ele implementado ao LDAP. Segue o smb.conf: [global] workgroup = LINUXAJUDA netbios name = PDC-SRV server string = Slackware security = user encrypt passwords = yes guest account = nobody log file = /var/log/samba/%m.log max log size = 50 os level = 100 local master = yes domain master = yes preferred master = yes domain logons = yes admin users = administrador root logon script = %U.bat logon path = %Lprofiles%U hosts allow = 10.0.0. 127. wins support = no dns proxy = no ldap passwd sync = yes ldap delete dn = Yes passdb backend = ldapsam:ldap://127.0.0.1/ ldap admin dn = cn=administrador,dc=linuxajuda,dc=org ldap suffix = dc=linuxajuda,dc=org ldap group suffix = ou=Grupos ldap user suffix = ou=Usuarios ldap machine suffix = ou=Computadores ldap idmap suffix = ou=Idmap idmap backend = ldap:ldap://127.0.0.1 idmap uid = 10000-15000 idmap gid = 10000-15000

8 de 25

12/02/2010 13:43

Tutorial completo de implementao de LDAP + Samba + Squid [Artigo]

http://www.vivaolinux.com.br/artigos/impressora.php?codigo=5178

template shell = /bin/false winbind use default domain = no ;smb passwd file=/etc/samba/smbpasswd passwd program=/usr/bin/passwd %u passwd chat = *New*password* %n *Retype*new*password* %n ;#*passwd:*all*authentication*tokens*updated*successfully* socket options = TCP_NODELAY IPTOS_LOWDELAY SO_RCVBUF=8192 SO_SNDBUF=8192 add machine script = /usr/local/sbin/smbldap-useradd -w "%u" add user script = /usr/local/sbin/smbldap-useradd -m "%u" delete user script = /usr/local/sbin/smbldap-userdel "%u" add machine script = /usr/local/sbin/smbldap-useradd -w "%u" add group script = /usr/local/sbin/smbldap-groupadd -p "%g" delete group script = /usr/local/sbin/smbldap-groupdel "%g" add user to group script = /usr/local/sbin/smbldap-groupmod -m "%u" "%g" delete user from group script = /usr/local/sbin/smbldap-groupmod -x "%u" "%g" set primary group script = /usr/local/sbin/smbldap-usermod -g "%g" "%u" dos charset = UTF-8 unix charset = UTF-8 [homes] comment = Diretrio Home browseable = no writable = yes create mask = 0700 directory mask = 0700 force user = %U [profiles] path = /home/profiles browseable = no writeable = yes force user = %U valid users = %U @"Domain Admins" [netlogon] path = /home/netlogon browseable = no guest ok = no writeable = no share modes = no read only = yes [printers] comment = Impressoras path = /var/spool/samba browseable = no guest ok = no writable = no printable = yes

9 de 25

12/02/2010 13:43

Tutorial completo de implementao de LDAP + Samba + Squid [Artigo]

http://www.vivaolinux.com.br/artigos/impressora.php?codigo=5178

[publico] comment = rea Publica path = /publico browseable = yes create mask = 0777 directory mask = 0777 guest ok = yes writable = yes force user = %U [sistema] comment = rea do Sistema da Empresa path = /sistema browseable = yes create mode = 0777 directory mask = 0777 guest ok = yes writable = yes force user = %U Edite-o de acordo com suas necessidades. Agora vamos criar um script para iniciar o Samba: # vim /etc/rc.d/rc.samba #!/bin/sh # # /etc/rc.d/rc.samba # # Start/stop/restart the Samba SMB file/print server. # # To make Samba start automatically at boot, make this # file executable: chmod 755 /etc/rc.d/rc.samba # samba_start() { if [ -x /usr/local/sbin/smbd -a -x /usr/local/sbin/nmbd -a -r /etc/samba/smb.conf ]; then echo "Starting Samba: /usr/local/sbin/smbd -D" /usr/local/sbin/smbd -D echo "/usr/local/sbin/nmbd -D" /usr/local/sbin/nmbd -D fi } samba_stop() { killall smbd nmbd } samba_restart() { samba_stop

10 de 25

12/02/2010 13:43

Tutorial completo de implementao de LDAP + Samba + Squid [Artigo]

http://www.vivaolinux.com.br/artigos/impressora.php?codigo=5178

sleep 2 samba_start } case "$1" in 'start') samba_start ;; 'stop') samba_stop ;; 'restart') samba_restart ;; *) # Default is "start", for backwards compatibility with previous # Slackware versions. This may change to a 'usage' error someday. samba_start esac Crie o diretrio /var/log/samba e rode o script /etc/rc.d/rc.samba: # /etc/rc.d/rc.samba start

Smbldap-tools Pronto, o Samba est no ar, agora vamos configurar o smbldap-tools, que uma ferramenta de administrao do LDAP. Eu particularmente prefiro usar um front-end, pois pode acontecer de dar alguns erros com ela, mas no deixa de ser uma boa ferramenta para administrao. # tar zxvf smbldap-tools_0.9.2.orig.tar.gz # cd smbldap-tools_0.9.2 # cp -f smbldap-* /usr/local/sbin/ # mkdir /etc/smbldap-tools/ # cp smbldap.conf smbldap_bind.conf /etc/smbldap-tools/ # chmod 644 /etc/smbldap-tools/smbldap.conf # chmod 600 /etc/smbldap-tools/smbldap_bind.conf Vamos editar o arquivo de configurao do smbladp-tools, que fica dentro do diretrio que voc acabou de criar. Lembrando que: o SID obtido com o seguinte comando: # net getlocalsid linuxajuda # smbldap.conf SID="S-1-5-21-4172198711-3320573932-1449352776" sambaDomain="LINUXAJUDA" slaveLDAP="127.0.0.1" slavePort="389" masterLDAP="127.0.0.1"

11 de 25

12/02/2010 13:43

Tutorial completo de implementao de LDAP + Samba + Squid [Artigo]

http://www.vivaolinux.com.br/artigos/impressora.php?codigo=5178

masterPort="389" ldapTLS="0" verify="" cafile="" clientcert="" clientkey="" suffix="dc=linuxajuda,dc=org" usersdn="ou=Usuarios,${suffix}" computersdn="ou=Computadores,${suffix}" groupsdn="ou=Grupos,${suffix}" idmapdn="ou=Idmap,${suffix}" sambaUnixIdPooldn="cn=NextFreeUnixId,${suffix}" scope="sub" # Unix password encryption (CRYPT, MD5, SMD5, SSHA, SHA, CLEARTEXT) hash_encrypt="CRYPT" crypt_salt_format="$1$%.8s" userLoginShell="/bin/false" userHome="/home/%U" userHomeDirectoryMode="700" userGecos="Ldap User" defaultUserGid="1000" defaultComputerGid="1000" skeletonDir="/etc/skel" defaultMaxPasswordAge="45" userSmbHome="\PDC-SRV\%U" userProfile="\PDC-SRVprofiles\%U" userHomeDrive="H:" #userScript="%U.bat" mailDomain="tropical.local" with_smbpasswd="0" smbpasswd="/usr/bin/smbpasswd" with_slappasswd="0" slappasswd="/usr/sbin/slappasswd" # no_banner="1" E se notar, aps isso ele automaticamente cria uma entrada no LDAP: # ldapsearch -x dn: sambaDomainName=linuxajuda,dc=linuxajuda,dc=org sambaDomainName: linuxajuda sambaSID: S-1-5-21-4172198711-3320573932-1449352776 sambaAlgorithmicRidBase: 1000 objectClass: sambaDomain sambaNextUserRid: 31000 sambaNextGroupRid: 31001 Agora vamos armazenar a senha do admin do LDAP no secrets: # smbpasswd -w SENHA Edite o arquivo /etc/smbldap-tools/smbldap_bind.conf e configure da seguinte forma:

12 de 25

12/02/2010 13:43

Tutorial completo de implementao de LDAP + Samba + Squid [Artigo]

http://www.vivaolinux.com.br/artigos/impressora.php?codigo=5178

slaveDN="cn=administrador,dc=linuxajuda,dc=org" slavePw="senha" masterDN="cn=administrador,dc=linuxajuda,dc=org" masterPw="senha" Aps isso necessrio copiar o arquivo smbldap_tools.pm para o diretrio /usr/lib/perl5/5.8.7/i486-linux/: # cp smbldap_tools.pm /usr/lib/perl5/5.8.7/i486-linux/

Pacotes Perl Agora vamos instalar os pacotes de mdulos para o Perl. Descompacte um por um e use logo abaixo os comandos para instalao: # tar -zxvf (em cada arquivo desse) Convert-ASN1-0.20.tar.gz Authen-SASL-2.10.tar.gz Crypt-SmbHash-0.12.tar.gz Digest-SHA1-2.11.tar.gz IO-Socket-SSL-0.97.tar.gz Jcode-2.05.tar.gz Net_SSLeay.pm-1.25.tar.gz URI-1.33.tar.gz Unicode-Map-0.112.tar.gz Unicode-Map8-0.12.tar.gz Unicode-String-2.09.tar.gz XML-SAX-Base-1.04.tar.gz perl-ldap-0.33.tar.gz Entre no diretrio de cada um e execute: # perl Makefile.PL # make # make test # make install

Nextuid Pronto, agora precisamos informar qual ser o prximo uid disponvel para ele criar os usurios. Para isso, inserimos a seguinte entrada no LDAP. Salve as seguintes informaes em um arquivo chamado "nextuid.ldif": dn: cn=NextFreeUnixId,dc=linuxajuda,dc=org objectClass: inetOrgPerson objectClass: sambaUnixIdPool uidNumber: 1000 gidNumber: 1000 cn: NextFreeUnixId sn: NextFreeUnixId

13 de 25

12/02/2010 13:43

Tutorial completo de implementao de LDAP + Samba + Squid [Artigo]

http://www.vivaolinux.com.br/artigos/impressora.php?codigo=5178

Inclua a entrada no LDAP: # ldapadd -x -D cn=administrador,dc=linuxajuda,dc=org, -W -f root/nextuid.ldif Agora que temos nossa base praticamente pronta, vamos popular a base usando o comando abaixo: # smbldap-populate

Apache2 + PHP5 Pronto, nosso LDAP + Samba j est praticamente funcionando, bastando apenas administr-lo. agora que entra o LDAP Administrator Manager (LAM). Primeiramente vamos instalar o servidor web (Apache): # tar -zxvf httpd-2.0.58.tar.gz # cd httpd-2.0.58 # ./configure --enable-so # make # make install Em seguida vamos instalar o PHP, resolvi usar o PHP5 que j est bem estvel: # tar -zxvf php-5.1.4.tar.gz # cd php-5.1.4 # env CPPFLAGS="-I/usr/local/include" # ./configure --with-ldap --with-gettext --libexecdir=/usr/libexec/apache --with-apxs2=/usr/local /apache2/bin/apxs --with-mhash # make # make install Inclua as linhas abaixo no seu httpd.conf, que fica em /usr/local/apache2/confs/httpd.conf: # Confira se o PHP j no incluiu essa linha no seu conf LoadModule php5_module modules/libphp5.so AddType application/x-httpd-php .php .phtml AddType application/x-httpd-php-source .phps Feito isso vamos iniciar o Apache: # /usr/local/apache2/bin/apachectl start

LAM - Ldap Account Manager Depois de muito estudar sobre um bom front-end que pudesse me dar todas as ferramentas para uma boa administrao do LDAP, acabei encontrando o LAM, mas existem vrias outras ferramentas, como o PhpLdapAdmin por exemplo.

14 de 25

12/02/2010 13:43

Tutorial completo de implementao de LDAP + Samba + Squid [Artigo]

http://www.vivaolinux.com.br/artigos/impressora.php?codigo=5178

Agora vamos instalar o Ldap Account Manager. Primeiro crie o usurio e o grupo httpd: # useradd httpd # groupadd httpd Depois pegue o pacote ldap-account-manager-1.0.2.tar.gz e o mova para: # mv ldap-account-manager-1.0.2.tar.gz /usr/local/apache2/htdocs Descompacte-o: # tar -zxvf ldap-account-manager-1.0.2.tar.gz Renomeie-o: # mv ldap-account-manager-1.0.2 lam/ Entre no diretrio: # cd /usr/local/apache2/htdocs/lam # ./configure # make install Agora vamos configur-lo. Entre no diretrio /usr/local/apache2/htdocs/lam/config e copie os arquivos config.cfg.example e lam.conf.example: # cp config.cfg.example config.cfg # cp lam.conf.example lam.conf Agora vamos editar os arquivos config.cfg e lam.conf. Deixe seu config.cf exatamente assim: password to add/delete/rename configuration profiles password: system # default profile, without ".conf" default: lam E o lam.config: # LDAP Account Manager configuration # server address (e.g. ldap://localhost:389 or ldaps://localhost:636) serverURL: ldap://localhost:389 # list of users who are allowed to use LDAP Account Manager # names have to be seperated by semicolons # e.g. admins: cn=admin,dc=yourdomain,dc=org;cn=root,dc=yourdomain,dc=org admins: cn=administrador,dc=tropical,dc=local # password to change these preferences via webfrontend passwd: system

15 de 25

12/02/2010 13:43

Tutorial completo de implementao de LDAP + Samba + Squid [Artigo]

http://www.vivaolinux.com.br/artigos/impressora.php?codigo=5178

# suffix of tree view # e.g. dc=yourdomain,dc=org treesuffix: dc=tropical,dc=local usersuffix: ou=Usuarios,dc=tropical,dc=local groupsuffix: ou=Grupos,dc=tropical,dc=local hostsuffix: ou=Computadores,dc=tropical,dc=local domainsuffix: ou=Dominios,dc=tropical,dc=local # maximum number of rows to show in user/group/host lists maxlistentries: 30 # default language (a line from config/language) defaultLanguage: en_GB.utf8:UTF-8:English (Great Britain) # Path to external Script scriptPath: # Server of external Script scriptServer: # Number of minutes LAM caches LDAP searches. cachetimeout: 5 samba3: yes # Module settings modules: posixAccount_minUID: 10000 modules: posixAccount_maxUID: 30000 modules: posixAccount_minMachine: 50000 modules: posixAccount_maxMachine: 60000 modules: posixGroup_minGID: 10000 modules: posixGroup_maxGID: 20000 modules: posixGroup_pwdHash: CRYPT modules: posixAccount_pwdHash: CRYPT # List of active account types. activeTypes: user,group,host,smbDomain types: suffix_user: ou=Usuarios,dc=tropical,dc=local types: attr_user: #uid;#givenName;#sn;#uidNumber;#gidNumber types: modules_user: inetOrgPerson,posixAccount,shadowAccount,sambaSamAccount types: suffix_group: ou=Grupos,dc=tropical,dc=local types: attr_group: #cn;#gidNumber;#memberUID;#description types: modules_group: posixGroup,sambaGroupMapping types: suffix_host: ou=Computadores,dc=tropical,dc=local types: attr_host: #cn;#description;#uidNumber;#gidNumber types: modules_host: account,posixAccount,sambaSamAccount types: suffix_smbDomain: ou=Dominios,dc=tropical,dc=local types: attr_smbDomain: sambaDomainName:Domain name;sambaSID:Domain SID

16 de 25

12/02/2010 13:43

Tutorial completo de implementao de LDAP + Samba + Squid [Artigo]

http://www.vivaolinux.com.br/artigos/impressora.php?codigo=5178

types: modules_smbDomain: sambaDomain Implementando SSL ao seu LDAP Server Todo administrador sempre deve estar preocupado com a segurana de seus servidores, por isso aqui esta uma boa soluo para acrescentar ao seu LDAP Server. A seguir vamos aplicar as configuraes ao LDAP usando os utilitrios do OpenSSL para gerar as chaves auto-assinadas para ele.

Note que as chaves devero ser geradas dentro do diretrio /usr/local/etc/openldap/certificates/. Foi desabilitada a verificao do certificado (se h alguma entidade certificadora que garante que voc voc mesmo). Estamos apenas interessados em usar um tnel criptografado. Primeiramente vamos criar um diretrio dentro do /usr/local/etc/openldap chamado certificates e depois um script para gerar as chaves criptografadas. Utilize seu editor de textos preferido e crie o script gerador.sh: #!/bin/sh # /usr/local/etc/openldap/certificates/gerador.sh # Certificado para a funo "server" echo " necessrio prover uma senha para a chave privada." openssl genrsa -des3 -out server.key 4096 # Esta linha agora REMOVE a passphrase da chave privada echo "Digite primeiro a senha da chave privada, depois um para remova-la" openssl rsa -in server.key -out server.key openssl req -new -key server.key -out server.csr openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.csr # Certificado para a funo "client" echo "Gerando a chave para o client. Mesmo procedimento anterior" openssl genrsa -des3 -out client.key 1024 openssl rsa -in client.key -out client.key openssl req -new -key client.key -out client.csr openssl x509 -req -days 365 -in client.csr -signkey client.key -out client.csr Use o comando a baixo para rodar o script: # sh gerador.sh Ele far algumas perguntas (veja abaixo) como requisio se senhas, escolha uma senha de maneira que voc no v esquec-la, eu usei a mesma do admin. necessrio prover uma senha para a chave privada. Generating RSA private key, 4096 bit long modulus

17 de 25

12/02/2010 13:43

Tutorial completo de implementao de LDAP + Samba + Squid [Artigo]

http://www.vivaolinux.com.br/artigos/impressora.php?codigo=5178

... e is 65537 (0x10001) Enter pass phrase for server.key: Verifying - Enter pass phrase for server.key Digite primeiro a senha da chave privada, depois um <ENTER> para remov-la. Enter pass phrase for server.key: riting RSA key You are about to be asked to enter information that will be incorporated into your certificate request. What you are about to enter is what is called a Distinguished Name or a DN. There are quite a few fields but you can leave some blank For some fields there will be a default value, If you enter '.', the field will be left blank. ----Country Name (2 letter code) [AU]:BR State or Province Name (full name) [Some-State]:Goias Locality Name (eg, city) []:Goiania Organization Name (eg, company) [Internet Widgits Pty Ltd]:Canal Linuxajuda Organizational Unit Name (eg, section) []: Common Name (eg, YOUR name) []:administrador Email Address []:administrador@linuxajuda.org Please enter the following 'extra' attributes to be sent with your certificate request challenge password []:system An optional company name []: Signature ok subject=/C=BR/ST=Goias/L=Goiania/O=Canal Linuxajuda/CN=administrador /emailAddress=administrador@linuxajuda.org Getting Private key Gerando a chave para o client. Mesmo procedimento anterior Generating RSA private key, 1024 bit long modulus ... e is 65537 (0x10001) Enter pass phrase for client.key: Verifying - Enter pass phrase for client.key: Enter pass phrase for client.key: writing RSA key You are about to be asked to enter information that will be incorporated into your certificate request. What you are about to enter is what is called a Distinguished Name or a DN. There are quite a few fields but you can leave some blank For some fields there will be a default value, If you enter '.', the field will be left blank. ----Country Name (2 letter code) [AU]:BR State or Province Name (full name) [Some-State]:Goias Locality Name (eg, city) []:Goiania Organization Name (eg, company) [Internet Widgits Pty Ltd]:Canal Linuxajuda Organizational Unit Name (eg, section) []: Common Name (eg, YOUR name) []:administrador Email Address []:administrador@linuxajuda.org

18 de 25

12/02/2010 13:43

Tutorial completo de implementao de LDAP + Samba + Squid [Artigo]

http://www.vivaolinux.com.br/artigos/impressora.php?codigo=5178

Please enter the following 'extra' attributes to be sent with your certificate request A challenge password []:system An optional company name []: Signature ok subject=/C=BR/ST=Goias/L=Goiania/O=Canal Linuxajuda/CN=administrador /emailAddress=administrador@linuxajuda.org Getting Private key OBS: Onde perdir "Enter pass phrase for client" ou server, digite uma senha.

O LDAP e seus arquivos de configuraes So necessrios 2 pequenas configuraes no OpenLDAP para que ele aceite o certificado criado. Em /etc/openldap/slapd.conf:
TLSCertificateFile TLSCertificateKeyFile TLSVerifyClient 0 /etc/openldap/certificates/server.csr /etc/openldap/certificates/server.key

Aps isso modifique o arquivo /etc/ldap.conf para:


host ldap.linuxajuda.org base dc=linuxajuda,dc=org uri ldaps://ldap.linuxajuda.org rootbinddn cn=administrador,dc=linuxajuda,dc=org port 636 ssl true TLS_CERT /etc/openldap/certificates/client.csr TLS_KEY /etc/openldap/certificates/client.key TLS_REQCERT never

Altere a linha no smb.conf de: passdb backend = ldapsam:ldap://ldap.linuxajuda.org/ para: passdb backend = ldapsam:ldaps://ldap.linuxajuda.org/ Vamos alterar tambm o lam.conf: ServerURL: ldaps://ldap.tropical.local:636 Altere o smbldap.conf nas seguintes linhas: slavePort="636" masterPort="636"

19 de 25

12/02/2010 13:43

Tutorial completo de implementao de LDAP + Samba + Squid [Artigo]

http://www.vivaolinux.com.br/artigos/impressora.php?codigo=5178

Depois de gerar o certificado, tive que incluir uma entrada no DNS para o LDAP porque ele estava reclamando o hostname, a bastou incluir ldap.linuxajuda.org no DNS e estava resolvido. Edite o arquivo /etc/resolv.conf e acrescente a linha: nameserver ldap.linuxajuda.org Edite tambm o /etc/hosts:
10.0.0.101 ldap.linuxajuda.org

Agora basta inicializar o slapd com o seguinte comando: # /usr/local/libexec/slapd -h "ldap:/// ldaps:///" -4 OBS: Acrescente essa linha no seu rc.local para carregar seu LDAP no boot. Agora vamos aos testes: # ldapsearch -x -ZZ -h ldap.linuxajudaorg -b 'dc=linuxajuda,dc=org' (objectclass=*)'

Primeiro armazenamos a senha do usurio suporte com: # saslpasswd2 -c administrador Podemos listar os usurios com: # sasldblistusers2 administrador@linuxajuda: cmusaslsecretOTP administrador@linuxajuda: userPassword

Seu sistema ficou lento na inicializao? Depois que instalei o LDAP e alterei o nsswitch.conf, percebi que o sistema operacional tinha ficado lento tanto pra iniciar quanto pra fazer login e digitar alguns comandos, foi ento que quase sem querer encontrei a soluo para o meu problema. Creio que voc possa ter o mesmo problema que eu, mas vamos l a soluo: Abra o arquivo /etc/rc.d/rc.S e localize o trecho "Create a fresh utmp file:"; Comente a linha "chown root.utmp /var/run/utmp"; Mude a linha "chmod 664 /var/run/utmp" para "chmod 666 /var/run/utmp"; Abra o arquivo /etc/rc.d/rc.local e adicione as prximas duas linhas: chown root.utmp /var/run/utmp

20 de 25

12/02/2010 13:43

Tutorial completo de implementao de LDAP + Samba + Squid [Artigo]

http://www.vivaolinux.com.br/artigos/impressora.php?codigo=5178

chmod 664 /var/run/utmp Pronto, seu sistema est rpido de novo!

Adicionando as mquinas Windows 98 no Samba 1. Editar as propriedades de rede; 2. Editar as propriedades do "Cliente para redes Microsoft"; 3. Selecionar a opo "Efetuar logon no domnio do Windows NT"; 4. Na opo "Domnio do Windows NT", digitar o nome do domnio; 5. Selecionar a opo de "Logon rpido" e pressionar OK; 6. Na opo "Logon primrio da rede", selecionar clientes para redes Microsoft, aplicar as alteraes e reiniciar o computador. Para alterar a senha do usurio logado: 1. 2. 3. 4. 5. 6. 7. Entrar no "Painel de Controle"; Entrar no cone "Senhas"; Clicar em "Alterar a senha do Windows"; Selecionar "Rede Microsoft" e pressionar OK; Digitar a senha atual, digitar a nova senha e confirm-la; Clicar no boto detalhes e selecionar a opo "Rede Microsoft"; Pressionar OK e fechar todas as janelas.

No servidor, rode o comando abaixo para cadastr-la no domnio: # smbldap-useradd -w Maq01

Adicionando mquinas Windows XP/2000/2003 no Samba 1. Logar como um usurio local e administrador do sistema; 2. Entrar no "Painel de Controle" em modo de exibio clssico, editar as propriedades do cone "Sistema"; 3. Clicar na aba "Nome do Computador" e no boto "ID da Rede"; 4. Na janela que ir aparecer, clicar em "Avanar"; 5. Selecionar a opo "Este computador faz parte de uma rede corporativa..." e clicar em "Avanar"; 6. Selecionar a opo "Minha empresa usa uma rede com um domnio", clicar em "Avanar" e clicar em "Avanar" novamente;

21 de 25

12/02/2010 13:43

Tutorial completo de implementao de LDAP + Samba + Squid [Artigo]

http://www.vivaolinux.com.br/artigos/impressora.php?codigo=5178

7. Digitar no "nome do usurio" um usurio que j exista no Samba, sua senha e o domnio e clicar em "Avanar"; 8. Digitar o nome do computador em questo, o domnio novamente e clicar em "Avanar"; 9. Digitar "root" no nome do usurio e sua senha e o domnio do Samba. 10. Deixar selecionado a opo "Inserir o seguinte usurio" e clicar em "Avanar"; 11. Selecionar o nvel de acesso "Outros", selecionar o grupo "Administradores" e clicar e "Avanar" e "Concluir", mas NO reiniciar o computador; 12. Entrar no "Painel de Controle" em modo de exibio clssico e entrar em "Ferramentas Administrativas"; 13. Entrar em "Diretiva de Segurana local" e depois abrir a chave "Diretivas locais" e clicar em "Opes de Segurana"; Dentro dessa janela as seguintes opes devem ser desabilitadas: Membro do domnio: criptografar ou assinar digitalmente os dados do canal seguro (sempre). Membro do domnio: desativar alteraes de senha de conta da mquina. Membro do domnio: requerer uma chave de sesso de alta segurana (Windows 2000 ou posterior). No registro, alterar/incluir a chave: HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServices netlogonparameters"RequireSignOrSeal"=dword:00000000

1. Logar como um usurio local e administrador do sistema; 2. Entrar no "Painel de Controle", editar as propriedades do cone "Sistema"; 3. Clicar na Aba "Identificao de rede" e no boto "Identificao da Rede"; 4. Na janela que ir aparecer clicar em "Avanar"; 5. Selecionar a opo "Este computador faz parte de uma rede corporativa..." e clicar em "Avanar"; 6. Selecionar a opo "Minha empresa usa uma rede com um domnio" e clicar em "Avanar" e clicar em "Avanar" novamente; 7. Digitar no "nome do usurio" um usurio que j exista no Samba devidamente configurado, sua senha, domnio e clicar em "Avanar";

22 de 25

12/02/2010 13:43

Tutorial completo de implementao de LDAP + Samba + Squid [Artigo]

http://www.vivaolinux.com.br/artigos/impressora.php?codigo=5178

8. Digitar o nome do computador em questo e tambm o domnio novamente e clicar em "Avanar"; 9. Digitar "root" no nome do usurio, sua senha e o domnio do Samba. 10. Deixar selecionada a opo "Inserir o seguinte usurio" e clicar em "Avanar"; 11. Selecionar o nvel de acesso "Outros" e selecionar o grupo "Administradores" e clicar e "Avanar" e "Concluir", e reiniciar o computador. No se esquea de adicionar as suas estaes no Samba: # smbladp-useradd -w maq02 e assim por diante.

Integrando seu Squid ao LDAP Bom, agora que j temos nosso servidor Samba com Active Directory usando o LDAP, pensei porque no colocar os usurios de internet para autenticar no LDAP para acessar a internet, lembrando que no vou abordar uma configurao mais afundo do Squid, para isso voc dever buscar em outras faqs ou manuais. Segue a baixo como instalar o Squid com suporte a LDAP: # tar -zxpvf squid-2.5.STABLE8.tar.gz # cd /root/ squid-2.5.STABLE8 Faremos a compilao bsica e depois compilaremos os programas de autenticao LDAP separadamente. Para tanto, use a famosa seqncia: # ./configure - -prefix=/usr/local/squid (sendo /usr/local/squid o local onde o squid ser instalado) # make # make install Mude a propriedade do diretrio Squid de root para nobody e crie o cache: # chown -R nobody.nobody /usr/local/squid # squid -z Depois mude a propriedade do diretrio /usr/local/squid/cache: # chown -R nobody.nobody /usr/local/squid/cache Com isso o seu Squid j estar instalado e pronto pra ser configurado. Agora passaremos para o passo seguinte, onde iremos acessar squid-2.5.STABLE8/helpers /basic_auth/LDAP e compilar o daemon squid_ldap_auth, que far a autenticao de usurios no AD: # cd /squid-2.5.STABLE8/helpers /basic_auth/LDAP # make Aps a compilao, copie o daemon squid_ldap_auth para dentro da libexec: # cp squid_ldap_auth /usr/local/squid/libexec

23 de 25

12/02/2010 13:43

Tutorial completo de implementao de LDAP + Samba + Squid [Artigo]

http://www.vivaolinux.com.br/artigos/impressora.php?codigo=5178

Acesse squid-2.5.STABLE8/helpers/external_acl/ldap_group e compile o daemon squid_ldap_group: # cd /squid-2.5.STABLE8/helpers/external_acl/ldap_group: # make Aps a compilao, copie o squid_ldap_auth para dentro da libexec: # cp squid_ldap_group /usr/local/squid/libexec Agora adicione as seguintes linhas no seu squid.conf: ## Configuraes de autenticao do proxy <-> ldap (troque o IP pelo do seu domnio) auth_param basic realm (Canal Linuxajuda): Autenticao de Usurio para Internet auth_param basic program /usr/local/squid/libexec/squid_ldap_auth -R -b "ou=Usuarios,ou=People,dc=linuxajuda,dc=org" -f "uid=%s" -s one -h 10.0.0.101 auth_param basic children 3 auth_param basic casesensitive off auth_param basic credentialsttl 15 minutes Feito isso, reinicie todos os servios.

Agradecimentos e consideraes finais Bom galera, depois de quase 2 meses trabalhando em cima deste HOWTO, finalmente consegui chegar ao seu final e o melhor de tudo, com o LDAP funcionando perfeitamente. Em breve adicionarei o Postfix ao LDAP tambm. Agradeo a pacincia e a compreenso de todos. Crticas, elogios e sugestes sero de grande valia para a melhoria do tutorial. Gostaria de agradecer e muito as pessoas que puderam contribuir e me ajudar de forma direta e indireta neste pequeno trabalho e que puderam fazer deste tutorial uma realidade, onde poucas pessoas conseguiam obter sucesso atravs de outros tutoriais distribudos pela internet devido a falta de documentao para essa maravilhosa distribuio chamada Slackware.

Nome Nickname Rede IRC Canais Fernando Ribeiro Musb irc.freenode.org #nerdgroup Flavio do Carmo Junior blk1d irc.brasnet.org #linuxajuda Kleber Araujo Access -

24 de 25

12/02/2010 13:43

Tutorial completo de implementao de LDAP + Samba + Squid [Artigo]

http://www.vivaolinux.com.br/artigos/impressora.php?codigo=5178

Tutorial criado por Braulio Gomes - Postfix, Squid, Bind. Usurio da rede brasnet e freenode de IRC, canais frequentados: #linuxajuda - irc.brasnet.org #openbsd - irc.brasnet.org #freebsd - irc.brasnet.org #nerdgroup - irc.freenode.org Email: braulio[at]linuxajuda.org | postfix[at]brturbo.com Espero ter ajudado, boa sorte!!! "Seja Livre, use Linux""

http://www.vivaolinux.com.br/artigo/Tutorial-completo-de-implementacao-de-LDAP-+-Samba-+-Squid Voltar para o site

25 de 25

12/02/2010 13:43

You might also like