You are on page 1of 25

Tutorial completo de implementação de LDAP + Samba + Squid [Artigo

]

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

Tutorial completo de implementação de LDAP + Samba + Squid
Autor: Braulio Gomes Rodrigues <braulio at linuxajuda.org> Data: 26/07/2006 Considerações iniciais Este tutorial, criado por Braulio Gomes, aborda a criação de um servidor Samba baseado em banco de dados LDAP com suporte a autenticação de usuários, tanto pelo Samba quanto pelo Squid. Tutorial criado em: 30/06/2006 Plataforma: Slackware 10.2 Versão do Tutorial: TUTORIAL-LDAP-1.0 Licença: LDP ( Linux Documentation Project ) Reduzir custo gerencial é papel de todo bom administrador. Nada mais recomendável então, para se iniciar uma boa gestão de TI, do que manter centralizado o máximo possível de informações. Tecnologicamente falando, uma base centralizada de usuários (e permissões à estes usuários) deixou de ser simplesmente uma opção de implementação 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 organização de todas as informações da rede: trata-se do Active Directory, que é o serviço de diretório implementado pela Microsoft para servir como depósito concentrador de informações comuns (objetos). São exemplos de objetos do Active Directory: contas de usuários, grupos de usuários, impressoras de rede, políticas de controle, etc. O fato do sistema operacional Linux estar conquistando cada vez mais espaço dentro das corporações (atuando tanto como servidores quanto como estações de trabalho), incentivou a comunidade Open Source a integrá-lo às já existentes "redes Windows". É exatamente aí que entra o Samba, que faz a gerência de sistemas heterogêneos. É bem verdade que máquinas com Linux e executando Samba podem completamente substituir os controladores de domínio (PDC e BDCs), mas AINDA não podem por si só implementar o Active Directory (característica esta que certamente estará presente na versão 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 graças ao protocolo SMB. Neste documento será abordado em todos os detalhes necessários em como montar um Primary Domain Server (PDC) utilizando Samba + OpenLDAP. Este documento não aborda a explicação teórica, mas sim a parte prática de tudo isso. Minha intenção na elaboração dessa solução é a unificação da autenticação dos usuários da empresa, podendo assim os clientes acessarem todos os serviços disponibilizados utilizando apenas 1 (um) usuário e senha.

1 de 25

12/02/2010 13:43

Tutorial completo de implementação de LDAP + Samba + Squid [Artigo]

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

Pacotes utilizados A seguir os pacotes que foram necessários nesta instalação. Neste instante considerarei que todo o sistema operacional esteja instalado e configurado, pois não abordaremos a instalação do Linux. Sugiro que você crie um diretório 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

.com..tar.sourceforge.2.vivaolinux.gz php-5.33.4.1.11.net/mirror ldap-account-manager-1.cpan./Unicode-String-2.tar.tar.org/CPAN/.tar.org/CPAN/.0.0.tar. certamente está estável.tar.33.tar.gz httpd-2..gz XML-SAX-Base-1.tar.org/CPAN/.12.tar.58..112..gz Foi utilizado Slackware 10.org/CPAN/.12.1. mas isso fica a critério do administrador.tar.cpan.0. vamos criar um link simbólico para que o LDAP consiga acessar o DB.tar./Unicode-Map-0.gz Unicode-String-2.tar.gz http://search.gz http://search.gz perl-ldap-0./configure --with-bdb-libdir=/usr/lib --with-bdb-incdir=/usr/include/db4 # make # make install Se tudo correu bem.1.cpan.tar. Para isso faça o comando: 3 de 25 12/02/2010 13:43 .. pois como já é um kernel default no Slackware.tar.0.gz http://prdownloads.net/get/php-5.0 com kernel 2.11.4.Tutorial completo de implementação de LDAP + Samba + Squid [Artigo] http://www.04.php?codigo=5178 Unicode-Map-0.br/artigos/impressora.2.gz Unicode-MapUTF8-1.br/pub/apache/httpd/httpd-2.gz http://search.22 # .2.tar.tar. Foi utilizado o ldap-account-manager como front-end.org/CPAN/..volity.4.gz http://ftp.1..gz http://search.gz/from/us2.gz http://search.tar.cpan../Unicode-MapUTF8-1../Unicode-Map8-0.php.gz http://br2. O ambiente utilizado foi uma máquina virtual construída através do software Vmware Workstation.112. Instalando O Cyrus-Sasl O Cyrus-Sasl é um pacote de autenticação segura que vamos usar para o Samba: # tar -zxvf cyrus-sasl-2.net/..gz Unicode-Map8-0.tar.gz http://www.unicamp.22.cpan.04..09./perl-ldap-0.gz # cd cyrus-sasl-2.php.tar.31.org/frivolity/perl/XML-SAX-Base-1.09.58./ldap-account-manager-1. pois eu o achei mais amigável em relação aos outros front-ends utilizados.

Por sua vez. o OpenLDAP é uma implementação OpenSource do LDAP.conf./configure --enable-crypt # make depend # make # make install No pacote do Samba existe o "samba.br/artigos/impressora.conf. Vamos apenas descompactar o Samba: # tar -zxvf samba-3.schema" foi incluído porque usarei esta mesma base para a autenticação no Postfix.24.vivaolinux. # slapd.gz Agora basta copiar o arquivo "samba.Tutorial completo de implementação de LDAP + Samba + Squid [Artigo] http://www. as informações referentes a esse usuário estarão armazenadas e disponíveis graças ao uso deste protocolo.tar. Ao se registrar um usuário no domínio. 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 informações em um repositório logicamente organizado.schema include /usr/local/etc/openldap/schema/nis.com. que será necessário aqui.schema include /usr/local/etc/openldap/schema/inetorgperson.3.0.php?codigo=5178 # ln -s /usr/local/lib/sasl2 /usr/lib/sasl2 OBS: É necessário que seu sistema tenha o DB4 instalado.schema 4 de 25 12/02/2010 13:43 .schema include /usr/local/etc/openldap/schema/cosine.tgz # cd openldap-2. # tar -zxvf openldap-2. por exemplo.schema /usr/local/etc/openldap/schemas Lembrando que o "qmail.20/examples/LDAP/samba. alteradas.0. O nosso slapd.conf include /usr/local/etc/openldap/schema/core.20. É graças a ele que informações comuns podem ser inseridas. que está no diretório /usr/local/etc/openldap/slapd. excluídas e consultadas de uma espécie de "banco de dados de informações". que instalarei futuramente.3.schema".24 # env CPPFLAGS="-I/usr/include/db4" LDFLAGS="-L/usr/lib" . deverá ficar da seguinte forma: OBS: O rootpw deve ser gerado com slappasswd.schema" para que seja carregado no LDAP: # cp /opt/ldap/samba-3.

dc=org ou: Grupos objectClass: top objectClass: organizationalUnit dn: ou=Computadores.sub.gidNumber eq index cn. basta criar um arquivo chamado /root/base.br/artigos/impressora.givenname.dc=linuxajuda.eq index memberUid.Tutorial completo de implementação de LDAP + Samba + Squid [Artigo] http://www.schema pidfile /usr/local/var/run/slapd.accountStatus.com.sambaNTPassword by self write by anonymous auth by * none access to * by * read Populando o LDAP Como nossa base é bem simples.dc=linuxajuda.php?codigo=5178 include /usr/local/etc/openldap/schema/samba.dc=linuxajuda.ldif com o seguinte conteúdo: dn: dc=linuxajuda.displayName pres.args database bdb suffix "dc=linuxajuda.schema include /usr/local/etc/openldap/schema/qmail.dc=org ou: Usuarios objectClass: top objectClass: organizationalUnit dn: ou=Grupos.sambaLMPassword.deliveryMode eq index sambaSID.sambaDomainName eq index default sub access to attrs=userPassword.dc=org dc: linuxajuda objectClass: top objectClass: domain dn: ou=Usuarios.dc=org ou: Computadores objectClass: top 5 de 25 12/02/2010 13:43 .mail.dc=org" rootdn "cn=administrador.pid argsfile /usr/local/var/run/slapd.mailHost.mailAlternateAddress.uidNumber.sambaPrimaryGroupSID.sn.dc=org" rootpw {SSHA}KwwbIdAjWcAOlxLjgq0O4iRnl7C05NhZ directory /usr/local/var/openldap-data password-hash {CRYPT} password-crypt-salt-format "$1$.uid.dc=linuxajuda.vivaolinux.8s" index objectClass.

ldif Pronto.tgz # cd MigrationTools-47 Edite o arquivo migrate_common.dc=org" adding new entry "ou=Computadores. $DEFAULT_MAIL_HOST = "mail.org".dc=org -W -f /root/base. $DEFAULT_MAIL_DOMAIN = "linuxajuda.dc=linuxajuda./migrate_group. Migrando os grupos e usuários Agora migraremos nossas contas do sistema para o LDAP: # tar zxvf MigrationTools.ph e altere as seguintes linhas: $NAMINGCONTEXT{'passwd'} = "ou=Usuarios".dc=linuxajuda. Não podemos esquecer de adicionar também os usuários: # .com.dc=org" Com isso nossa base já está inicializada.dc=org".ldif Enter LDAP Password: adding new entry "dc=linuxajuda.ldif Com isso ele irá gerar o arquivo /root/grupos.ldif". que conterá todos os grupos do sistema: # . $DEFAULT_BASE = "dc=linuxajuda. nossa base do sistema já esta ok.dc=org" adding new entry "ou=Usuarios.org". Agora migraremos nossas contas do sistema para o LDAP usando o MigrationTools.Tutorial completo de implementação de LDAP + Samba + Squid [Artigo] http://www. Salve e execute o seguinte comando para gerar o arquivo "grupos.linuxajuda. $NAMINGCONTEXT{'group'} = "ou=Grupos".dc=org" adding new entry "ou=Grupos./migrate_passwd.dc=linuxajuda. basta agora informarmos para o sistema se autenticar no LDAP.pl /etc/group /root/grupos.dc=org -W -f /root/usuarios.dc=linuxajuda. Agora vamos inserir as entradas dos grupos no LDAP: # ldapadd -x -D cn=administrador.dc=org -W -f /root/grupos.dc=linuxajuda.ldif Pronto! Ele adicionou todos os grupos do sistema no LDAP. 6 de 25 12/02/2010 13:43 .php?codigo=5178 objectClass: organizationalUnit Agora é só incluir essas entradas no LDAP usando o comando abaixo: # ldapadd -x -D cn=administrador.dc=linuxajuda.ldif # ldapadd -x -D cn=administrador. um simples "ldapsearch -x" mostra como ela ficou.ldif com as entradas necessárias para o LDAP.pl /etc/passwd /root/usuarios.br/artigos/impressora.vivaolinux.

o LDAP já está funcionando! 7 de 25 12/02/2010 13:43 .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.1 base dc=linuxajuda.dc=org rootbinddn cn=administrador.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.php?codigo=5178 Nss_ldap Instale o pacote de configurações de contas: # tar zxvf nss_ldap.dc=org Vamos agora modificar as linhas do /etc/nsswitch.conf: host 127. esse arquivo é onde o sistema busca as informações de login.conf. 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).0.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.br/artigos/impressora./configure # make # make install É necessário modificar o arquivo /etc/ldap.6(disk).tgz # cd nss_ldap-251 # .vivaolinux.3(sys).com.2(daemon). 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.10(wheel).11(floppy) se você verificar nos logs.4(adm).1(bin).0.Tutorial completo de implementação de LDAP + Samba + Squid [Artigo] http://www.dc=linuxajuda.

Tutorial completo de implementação de LDAP + Samba + Squid [Artigo] http://www.com.br/artigos/impressora.0.conf.0. 127.0./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 opções. pude realmente chegar a configuração ideal para ele implementado ao LDAP.vivaolinux.dc=linuxajuda.dc=org ldap suffix = dc=linuxajuda. --with-krb5=/usr e --enable-krb5developer. # make # make install Vamos agora ao smb.php?codigo=5178 Samba Vamos agora à parte que devemos ter mais atenção.bat logon path = %Lprofiles%U hosts allow = 10.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. vamos entrar no diretório dele: # cd samba-3. Segue o smb. que é a do Samba. use somente se você tiver o kerberos instalado.20 # env CPPFLAGS="-I/usr/local/include/" # . wins support = no dns proxy = no ldap passwd sync = yes ldap delete dn = Yes passdb backend = ldapsam:ldap://127.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. Como já tínhamos descompactado anteriormente.0.0.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.1/ ldap admin dn = cn=administrador.1 idmap uid = 10000-15000 idmap gid = 10000-15000 8 de 25 12/02/2010 13:43 .0.0. caso contrário não precisa. depois de uns três dias ralando em cima do Samba.

php?codigo=5178 template shell = /bin/false winbind use default domain = no .vivaolinux.br/artigos/impressora.#*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 = Diretório 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 .smb passwd file=/etc/samba/smbpasswd passwd program=/usr/bin/passwd %u passwd chat = *New*password* %n *Retype*new*password* %n .com.Tutorial completo de implementação de LDAP + Samba + Squid [Artigo] http://www.

conf ].vivaolinux.samba #!/bin/sh # # /etc/rc.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.br/artigos/impressora. 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 . make this # file executable: chmod 755 /etc/rc.d/rc.d/rc. # # To make Samba start automatically at boot.samba # # Start/stop/restart the Samba SMB file/print server.d/rc. Agora vamos criar um script para iniciar o Samba: # vim /etc/rc.Tutorial completo de implementação de LDAP + Samba + Squid [Artigo] http://www.samba # samba_start() { if [ -x /usr/local/sbin/smbd -a -x /usr/local/sbin/nmbd -a -r /etc/samba/smb.com.

Lembrando que: o SID é obtido com o seguinte comando: # net getlocalsid linuxajuda # smbldap.samba: # /etc/rc. This may change to a 'usage' error someday.conf smbldap_bind.9. 'stop') samba_stop .conf /etc/smbldap-tools/ # chmod 644 /etc/smbldap-tools/smbldap..9.samba start Smbldap-tools Pronto. samba_start esac Crie o diretório /var/log/samba e rode o script /etc/rc.Tutorial completo de implementação de LDAP + Samba + Squid [Artigo] http://www. agora vamos configurar o smbldap-tools. # tar zxvf smbldap-tools_0.conf # chmod 600 /etc/smbldap-tools/smbldap_bind.1" 11 de 25 12/02/2010 13:43 .0.0..vivaolinux.br/artigos/impressora.php?codigo=5178 sleep 2 samba_start } case "$1" in 'start') samba_start .0. o Samba está no ar. mas não deixa de ser uma boa ferramenta para administração.conf SID="S-1-5-21-4172198711-3320573932-1449352776" sambaDomain="LINUXAJUDA" slaveLDAP="127. que fica dentro do diretório que você acabou de criar.d/rc. 'restart') samba_restart .1" slavePort="389" masterLDAP="127.orig. Eu particularmente prefiro usar um front-end.tar. for backwards compatibility with previous # Slackware versions.com. pois pode acontecer de dar alguns erros com ela.0.2.d/rc.conf Vamos editar o arquivo de configuração do smbladp-tools.. *) # Default is "start".2 # cp -f smbldap-* /usr/local/sbin/ # mkdir /etc/smbldap-tools/ # cp smbldap.gz # cd smbldap-tools_0. que é uma ferramenta de administração do LDAP.

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.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. SMD5. SHA.${suffix}" groupsdn="ou=Grupos.dc=org" usersdn="ou=Usuarios.br/artigos/impressora.${suffix}" scope="sub" # Unix password encryption (CRYPT. SSHA. após isso ele automaticamente cria uma entrada no LDAP: # ldapsearch -x dn: sambaDomainName=linuxajuda. CLEARTEXT) hash_encrypt="CRYPT" crypt_salt_format="$1$%.local" with_smbpasswd="0" smbpasswd="/usr/bin/smbpasswd" with_slappasswd="0" slappasswd="/usr/sbin/slappasswd" # no_banner="1" E se notar.${suffix}" idmapdn="ou=Idmap.conf e configure da seguinte forma: 12 de 25 12/02/2010 13:43 .vivaolinux.dc=linuxajuda.php?codigo=5178 masterPort="389" ldapTLS="0" verify="" cafile="" clientcert="" clientkey="" suffix="dc=linuxajuda.com.bat" mailDomain="tropical.${suffix}" computersdn="ou=Computadores. MD5.Tutorial completo de implementação de LDAP + Samba + Squid [Artigo] http://www.${suffix}" sambaUnixIdPooldn="cn=NextFreeUnixId.

04.10.tar.gz Net_SSLeay.tar.tar.vivaolinux.pm /usr/lib/perl5/5.tar.gz Unicode-String-2.tar.97.8.gz Crypt-SmbHash-0.pm-1.tar.25.dc=linuxajuda.gz IO-Socket-SSL-0.12.7/i486-linux/: # cp smbldap_tools. agora precisamos informar qual será o próximo uid disponível para ele criar os usuários.11.dc=org" slavePw="senha" masterDN="cn=administrador.com. inserimos a seguinte entrada no LDAP.gz Authen-SASL-2. Descompacte um por um e use logo abaixo os comandos para instalação: # tar -zxvf (em cada arquivo desse) Convert-ASN1-0. Para isso.20.gz Unicode-Map8-0.ldif": dn: cn=NextFreeUnixId. Salve as seguintes informações em um arquivo chamado "nextuid.112.gz Unicode-Map-0.dc=linuxajuda.Tutorial completo de implementação de LDAP + Samba + Squid [Artigo] http://www.PL # make # make test # make install Nextuid Pronto.8.05.tar.tar.dc=linuxajuda.gz XML-SAX-Base-1.php?codigo=5178 slaveDN="cn=administrador.33.tar.tar.tar.tar.7/i486-linux/ Pacotes Perl Agora vamos instalar os pacotes de módulos para o Perl.dc=org objectClass: inetOrgPerson objectClass: sambaUnixIdPool uidNumber: 1000 gidNumber: 1000 cn: NextFreeUnixId sn: NextFreeUnixId 13 de 25 12/02/2010 13:43 .gz Entre no diretório de cada um e execute: # perl Makefile.33.tar.dc=org" masterPw="senha" Após isso é necessário copiar o arquivo smbldap_tools.gz URI-1.br/artigos/impressora.gz Digest-SHA1-2.gz Jcode-2.gz perl-ldap-0.pm para o diretório /usr/lib/perl5/5.12.09.

0.vivaolinux.tar. acabei encontrando o LAM. Primeiramente vamos instalar o servidor web (Apache): # tar -zxvf httpd-2. É agora que entra o LDAP Administrator Manager (LAM).gz # cd php-5./configure --enable-so # make # make install Em seguida vamos instalar o PHP.com. bastando apenas administrá-lo.php?codigo=5178 Inclua a entrada no LDAP: # ldapadd -x -D cn=administrador.phtml AddType application/x-httpd-php-source .Ldap Account Manager Depois de muito estudar sobre um bom front-end que pudesse me dar todas as ferramentas para uma boa administração do LDAP./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.58 # .0.ldif Agora que temos nossa base praticamente pronta.58. nosso LDAP + Samba já está praticamente funcionando. mas existem várias outras ferramentas.so AddType application/x-httpd-php .gz # cd httpd-2.4 # env CPPFLAGS="-I/usr/local/include" # .1.phps Feito isso vamos iniciar o Apache: # /usr/local/apache2/bin/apachectl start LAM .conf.4.1. como o PhpLdapAdmin por exemplo. que fica em /usr/local/apache2/confs/httpd.conf: # Confira se o PHP já não incluiu essa linha no seu conf LoadModule php5_module modules/libphp5. vamos popular a base usando o comando abaixo: # smbldap-populate Apache2 + PHP5 Pronto.dc=org.tar. 14 de 25 12/02/2010 13:43 .br/artigos/impressora.dc=linuxajuda. resolvi usar o PHP5 que já está bem estável: # tar -zxvf php-5.Tutorial completo de implementação de LDAP + Samba + Squid [Artigo] http://www. -W -f root/nextuid.php .

conf" default: lam E o lam.cfg.dc=yourdomain.dc=local # password to change these preferences via webfrontend passwd: system 15 de 25 12/02/2010 13:43 .php?codigo=5178 Agora vamos instalar o Ldap Account Manager.dc=tropical.g.example lam.tar.br/artigos/impressora.cfg # cp lam.Tutorial completo de implementação de LDAP + Samba + Squid [Artigo] http://www.dc=org.tar.example: # cp config.cfg e lam. admins: cn=admin.dc=yourdomain.dc=org admins: cn=administrador.com.conf. Deixe seu config.gz e o mova para: # mv ldap-account-manager-1.0. Primeiro crie o usuário e o grupo httpd: # useradd httpd # groupadd httpd Depois pegue o pacote ldap-account-manager-1.gz /usr/local/apache2/htdocs Descompacte-o: # tar -zxvf ldap-account-manager-1. Entre no diretório /usr/local/apache2/htdocs/lam/config e copie os arquivos config.2.conf.2. without ".config: # LDAP Account Manager configuration # server address (e.conf.conf Agora vamos editar os arquivos config.vivaolinux.0.cf exatamente assim: password to add/delete/rename configuration profiles password: system # default profile.cfg.example e lam.example config./configure # make install Agora vamos configurá-lo.0.tar.2 lam/ Entre no diretório: # cd /usr/local/apache2/htdocs/lam # .0.gz Renomeie-o: # mv ldap-account-manager-1.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.cn=root.2.

com. activeTypes: user.dc=tropical.dc=local usersuffix: ou=Usuarios.#gidNumber types: modules_host: account.sambaGroupMapping types: suffix_host: ou=Computadores.#gidNumber types: modules_user: inetOrgPerson.g.dc=org treesuffix: dc=tropical.host.dc=local types: attr_group: #cn.#uidNumber.#givenName.sambaSID:Domain SID 16 de 25 12/02/2010 13:43 .dc=tropical.vivaolinux.sambaSamAccount types: suffix_group: ou=Grupos.group.posixAccount.shadowAccount. dc=yourdomain. 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.smbDomain types: suffix_user: ou=Usuarios.dc=local types: attr_user: #uid.#gidNumber.#description.posixAccount.dc=local groupsuffix: ou=Grupos.dc=tropical.dc=tropical.#uidNumber.dc=local types: attr_host: #cn.Tutorial completo de implementação de LDAP + Samba + Squid [Artigo] http://www.utf8:UTF-8:English (Great Britain) # Path to external Script scriptPath: # Server of external Script scriptServer: # Number of minutes LAM caches LDAP searches.dc=local hostsuffix: ou=Computadores.php?codigo=5178 # suffix of tree view # e.#description types: modules_group: posixGroup.br/artigos/impressora.#sn.dc=local domainsuffix: ou=Dominios.#memberUID.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.dc=tropical.sambaSamAccount types: suffix_smbDomain: ou=Dominios.dc=tropical.dc=local types: attr_smbDomain: sambaDomainName:Domain name.dc=tropical.dc=tropical.

csr openssl x509 -req -days 365 -in server. É necessário prover uma senha para a chave privada. 4096 bit long modulus 17 de 25 12/02/2010 13:43 .com.key -out client. Mesmo procedimento anterior" openssl genrsa -des3 -out client. Generating RSA private key.sh: #!/bin/sh # /usr/local/etc/openldap/certificates/gerador. eu usei a mesma do admin. depois um para remova-la" openssl rsa -in server.csr -signkey server. escolha uma senha de maneira que você não vá esquecê-la.vivaolinux.csr # Certificado para a função "client" echo "Gerando a chave para o client.key 1024 openssl rsa -in client.br/artigos/impressora.key -out client. Foi desabilitada a verificação do certificado (se há alguma entidade certificadora que garante que você é você mesmo).php?codigo=5178 types: modules_smbDomain: sambaDomain Implementando SSL ao seu LDAP Server Todo administrador sempre deve estar preocupado com a segurança de seus servidores.sh Ele fará algumas perguntas (veja abaixo) como requisição se senhas. Estamos apenas interessados em usar um túnel criptografado.key openssl req -new -key server.csr Use o comando a baixo para rodar o script: # sh gerador.csr -signkey client.sh # Certificado para a função "server" echo "É necessário prover uma senha para a chave privada.key 4096 # Esta linha agora REMOVE a passphrase da chave privada echo "Digite primeiro a senha da chave privada.key -out server. Note que as chaves deverão ser geradas dentro do diretório /usr/local/etc/openldap/certificates/.key -out server." openssl genrsa -des3 -out server.Tutorial completo de implementação de LDAP + Samba + Squid [Artigo] http://www. Utilize seu editor de textos preferido e crie o script gerador.key -out server. A seguir vamos aplicar as configurações ao LDAP usando os utilitários do OpenSSL para gerar as chaves auto-assinadas para ele.key -out client. por isso aqui esta uma boa solução para acrescentar ao seu LDAP Server.csr openssl x509 -req -days 365 -in client.key openssl req -new -key client. Primeiramente vamos criar um diretório dentro do /usr/local/etc/openldap chamado certificates e depois um script para gerar as chaves criptografadas.

What you are about to enter is what is called a Distinguished Name or a DN. e is 65537 (0x10001) Enter pass phrase for server.com. the field will be left blank.Enter pass phrase for client.org Getting Private key Gerando a chave para o client.'.br/artigos/impressora.key: Verifying . company) [Internet Widgits Pty Ltd]:Canal Linuxajuda Organizational Unit Name (eg. If you enter '. the field will be left blank. Mesmo procedimento anterior Generating RSA private key. YOUR name) []:administrador Email Address []:administrador@linuxajuda.Tutorial completo de implementação de LDAP + Samba + Squid [Artigo] http://www. section) []: Common Name (eg.key: Enter pass phrase for client. ----Country Name (2 letter code) [AU]:BR State or Province Name (full name) [Some-State]:Goias Locality Name (eg. If you enter '. There are quite a few fields but you can leave some blank For some fields there will be a default value.org 18 de 25 12/02/2010 13:43 . ----Country Name (2 letter code) [AU]:BR State or Province Name (full name) [Some-State]:Goias Locality Name (eg. YOUR name) []:administrador Email Address []:administrador@linuxajuda.vivaolinux. There are quite a few fields but you can leave some blank For some fields there will be a default value. 1024 bit long modulus . Enter pass phrase for server.'..key Digite primeiro a senha da chave privada. city) []:Goiania Organization Name (eg. e is 65537 (0x10001) Enter pass phrase for client. depois um <ENTER> para removê-la... What you are about to enter is what is called a Distinguished Name or a DN.key: riting RSA key You are about to be asked to enter information that will be incorporated into your certificate request. company) [Internet Widgits Pty Ltd]:Canal Linuxajuda Organizational Unit Name (eg.php?codigo=5178 .Enter pass phrase for server.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. city) []:Goiania Organization Name (eg.key: Verifying .key: writing RSA key You are about to be asked to enter information that will be incorporated into your certificate request. section) []: Common Name (eg..

conf: TLSCertificateFile TLSCertificateKeyFile TLSVerifyClient 0 /etc/openldap/certificates/server.linuxajuda.linuxajuda.org Getting Private key OBS: Onde perdir "Enter pass phrase for client" ou server.Tutorial completo de implementação de LDAP + Samba + Squid [Artigo] http://www.br/artigos/impressora.tropical.linuxajuda.vivaolinux.csr /etc/openldap/certificates/server.org/ Vamos alterar também o lam.key TLS_REQCERT never Altere a linha no smb. digite uma senha.org rootbinddn cn=administrador.local:636 Altere o smbldap.org base dc=linuxajuda.dc=linuxajuda.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.com.linuxajuda.org/ para: passdb backend = ldapsam:ldaps://ldap.dc=org uri ldaps://ldap. O LDAP e seus arquivos de configurações São necessários 2 pequenas configurações no OpenLDAP para que ele aceite o certificado criado.dc=org port 636 ssl true TLS_CERT /etc/openldap/certificates/client.conf nas seguintes linhas: slavePort="636" masterPort="636" 19 de 25 12/02/2010 13:43 .key Após isso modifique o arquivo /etc/ldap.csr TLS_KEY /etc/openldap/certificates/client.conf: ServerURL: ldaps://ldap. Em /etc/openldap/slapd.conf de: passdb backend = ldapsam:ldap://ldap.conf para: host ldap.

linuxajuda. Edite o arquivo /etc/resolv.dc=org' (objectclass=*)' Primeiro armazenamos a senha do usuário suporte com: # saslpasswd2 -c administrador Podemos listar os usuários com: # sasldblistusers2 administrador@linuxajuda: cmusaslsecretOTP administrador@linuxajuda: userPassword Seu sistema ficou lento na inicialização? Depois que instalei o LDAP e alterei o nsswitch.0. Creio que você possa ter o mesmo problema que eu.conf.101 ldap.br/artigos/impressora. aí bastou incluir ldap.php?codigo=5178 Depois de gerar o certificado.org no DNS e estava resolvido. mas vamos lá a solução: Abra o arquivo /etc/rc. foi então que quase sem querer encontrei a solução para o meu problema.local e adicione as próximas duas linhas: chown root. Agora vamos aos testes: # ldapsearch -x -ZZ -h ldap.conf e acrescente a linha: nameserver ldap. Comente a linha "chown root.utmp /var/run/utmp".d/rc. tive que incluir uma entrada no DNS para o LDAP porque ele estava reclamando o hostname.Tutorial completo de implementação de LDAP + Samba + Squid [Artigo] http://www.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.0.d/rc.linuxajuda.linuxajuda.utmp /var/run/utmp 20 de 25 12/02/2010 13:43 .vivaolinux.linuxajudaorg -b 'dc=linuxajuda. percebi que o sistema operacional tinha ficado lento tanto pra iniciar quanto pra fazer login e digitar alguns comandos. Mude a linha "chmod 664 /var/run/utmp" para "chmod 666 /var/run/utmp". Abra o arquivo /etc/rc.org Edite também o /etc/hosts: 10.com.local para carregar seu LDAP no boot.S e localize o trecho "Create a fresh utmp file:".

Para alterar a senha do usuário logado: 1. Digitar a senha atual. digitar o nome do domínio." e clicar em "Avançar".php?codigo=5178 chmod 664 /var/run/utmp Pronto. clicar em "Avançar" e clicar em "Avançar" novamente. 4. 6. seu sistema está rápido de novo! Adicionando as máquinas Windows 98 no Samba 1. 3. Entrar no "Painel de Controle" em modo de exibição clássico. Selecionar "Rede Microsoft" e pressionar OK. Entrar no ícone "Senhas". Editar as propriedades de rede. 5. 4. editar as propriedades do ícone "Sistema". 2.Tutorial completo de implementação de LDAP + Samba + Squid [Artigo] http://www.. 3. 5. digitar a nova senha e confirmá-la. Logar como um usuário local e administrador do sistema. 2. Na opção "Logon primário da rede". 3. Clicar na aba "Nome do Computador" e no botão "ID da Rede". Selecionar a opção "Minha empresa usa uma rede com um domínio". 7. Selecionar a opção "Este computador faz parte de uma rede corporativa. aplicar as alterações e reiniciar o computador. 6.br/artigos/impressora.com. No servidor. Selecionar a opção de "Logon rápido" e pressionar OK. 5. selecionar clientes para redes Microsoft. 21 de 25 12/02/2010 13:43 . 4. Na janela que irá aparecer. 2. Na opção "Domínio do Windows NT". rode o comando abaixo para cadastrá-la no domínio: # smbldap-useradd -w Maq01 Adicionando máquinas Windows XP/2000/2003 no Samba 1. Entrar no "Painel de Controle".. Clicar em "Alterar a senha do Windows". 6.vivaolinux. Editar as propriedades do "Cliente para redes Microsoft". Pressionar OK e fechar todas as janelas. Clicar no botão detalhes e selecionar a opção "Rede Microsoft". clicar em "Avançar". Selecionar a opção "Efetuar logon no domínio do Windows NT".

3. 13. Digitar no "nome do usuário" um usuário que já exista no Samba devidamente configurado. Membro do domínio: requerer uma chave de sessão de alta segurança (Windows 2000 ou posterior). Digitar "root" no nome do usuário e sua senha e o domínio do Samba. editar as propriedades do ícone "Sistema". Entrar em "Diretiva de Segurança local" e depois abrir a chave "Diretivas locais" e clicar em "Opções de Segurança". No registro. 11. 6. 9. Clicar na Aba "Identificação de rede" e no botão "Identificação da Rede". Selecionar a opção "Este computador faz parte de uma rede corporativa. Membro do domínio: desativar alterações de senha de conta da máquina. Logar como um usuário local e administrador do sistema. 12. 8. o domínio novamente e clicar em "Avançar". alterar/incluir a chave: HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServices netlogonparameters"RequireSignOrSeal"=dword:00000000 1. Selecionar a opção "Minha empresa usa uma rede com um domínio" e clicar em "Avançar" e clicar em "Avançar" novamente. mas NÃO reiniciar o computador. 5." e clicar em "Avançar".vivaolinux. domínio e clicar em "Avançar". Digitar o nome do computador em questão.br/artigos/impressora. 4. Entrar no "Painel de Controle" em modo de exibição clássico e entrar em "Ferramentas Administrativas". Na janela que irá aparecer clicar em "Avançar". Entrar no "Painel de Controle". 7. 10. 2. Dentro dessa janela as seguintes opções devem ser desabilitadas: Membro do domínio: criptografar ou assinar digitalmente os dados do canal seguro (sempre).php?codigo=5178 7.. 22 de 25 12/02/2010 13:43 .Tutorial completo de implementação de LDAP + Samba + Squid [Artigo] http://www. sua senha. Deixar selecionado a opção "Inserir o seguinte usuário" e clicar em "Avançar".. sua senha e o domínio e clicar em "Avançar".com. Digitar no "nome do usuário" um usuário que já exista no Samba. Selecionar o nível de acesso "Outros". selecionar o grupo "Administradores" e clicar e "Avançar" e "Concluir".

11. Selecionar o nível de acesso "Outros" e selecionar o grupo "Administradores" e clicar e "Avançar" e "Concluir". Segue a baixo como instalar o Squid com suporte a LDAP: # tar -zxpvf squid-2. pensei porque não colocar os usuários de internet para autenticar no LDAP para acessar a internet. lembrando que não vou abordar uma configuração mais afundo do Squid.STABLE8 Faremos a compilação básica e depois compilaremos os programas de autenticação LDAP separadamente.-prefix=/usr/local/squid (sendo /usr/local/squid o local onde o squid será instalado) # make # make install Mude a propriedade do diretório Squid de root para nobody e crie o cache: # chown -R nobody. agora que já temos nosso servidor Samba com Active Directory usando o LDAP. 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 . Deixar selecionada a opção "Inserir o seguinte usuário" e clicar em "Avançar".Tutorial completo de implementação de LDAP + Samba + Squid [Artigo] http://www. Digitar "root" no nome do usuário. Digitar o nome do computador em questão e também o domínio novamente e clicar em "Avançar"./configure . Agora passaremos para o passo seguinte.nobody /usr/local/squid/cache Com isso o seu Squid já estará instalado e pronto pra ser configurado.php?codigo=5178 8. onde iremos acessar squid-2.5.com. que fará a autenticação de usuários no AD: # cd /squid-2.gz # cd /root/ squid-2.5. sua senha e o domínio do Samba. Integrando seu Squid ao LDAP Bom. para isso você deverá buscar em outras faqs ou manuais.5.STABLE8/helpers /basic_auth/LDAP e compilar o daemon squid_ldap_auth. 10.STABLE8. 9.5.nobody /usr/local/squid # squid -z Depois mude a propriedade do diretório /usr/local/squid/cache: # chown -R nobody.STABLE8/helpers /basic_auth/LDAP # make Após a compilação. e reiniciar o computador. Não se esqueça de adicionar as suas estações no Samba: # smbladp-useradd -w maq02 e assim por diante. Para tanto.br/artigos/impressora. use a famosa seqüência: # .vivaolinux.tar.

php?codigo=5178 Acesse squid-2. 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.Tutorial completo de implementação de LDAP + Samba + Squid [Artigo] http://www. elogios e sugestões serão de grande valia para a melhoria do tutorial. Nome Nickname Rede IRC Canais Fernando Ribeiro Musb irc. reinicie todos os serviços.5.conf: ## Configurações de autenticação do proxy <-> ldap (troque o IP pelo do seu domínio) auth_param basic realm (Canal Linuxajuda): Autenticação de Usuário para Internet auth_param basic program /usr/local/squid/libexec/squid_ldap_auth -R -b "ou=Usuarios.vivaolinux. depois de quase 2 meses trabalhando em cima deste HOWTO. Agradecimentos e considerações finais Bom galera.STABLE8/helpers/external_acl/ldap_group: # make Após a compilação.0. com o LDAP funcionando perfeitamente.org #linuxajuda Kleber Araujo Access - 24 de 25 12/02/2010 13:43 .org #nerdgroup Flavio do Carmo Junior blk1d irc. Em breve adicionarei o Postfix ao LDAP também. 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.brasnet.ou=People. finalmente consegui chegar ao seu final e o melhor de tudo.com. Críticas.5. Agradeço a paciência e a compreensão de todos.0.dc=linuxajuda.101 auth_param basic children 3 auth_param basic casesensitive off auth_param basic credentialsttl 15 minutes Feito isso.dc=org" -f "uid=%s" -s one -h 10.STABLE8/helpers/external_acl/ldap_group e compile o daemon squid_ldap_group: # cd /squid-2.br/artigos/impressora. onde poucas pessoas conseguiam obter sucesso através de outros tutoriais distribuídos pela internet devido a falta de documentação para essa maravilhosa distribuição chamada Slackware.freenode.

br/artigos/impressora. Usuário da rede brasnet e freenode de IRC. Bind.br/artigo/Tutorial-completo-de-implementacao-de-LDAP-+-Samba-+-Squid Voltar para o site 25 de 25 12/02/2010 13:43 .irc.org #freebsd .org #nerdgroup . canais frequentados: #linuxajuda .irc.brasnet. Squid.freenode.Tutorial completo de implementação de LDAP + Samba + Squid [Artigo] http://www.irc.org Email: braulio[at]linuxajuda.php?codigo=5178 Tutorial criado por Braulio Gomes .irc.brasnet.vivaolinux. use Linux"" http://www.Postfix.com.org #openbsd .vivaolinux.com Espero ter ajudado. boa sorte!!! "Seja Livre.brasnet.org | postfix[at]brturbo.com.