Integrando OpenLDAP e Samba no Fedora 7 como servidor de autenticacao A primeira coisa a se fazer e instalar os softwares necessarios para o precedimento. Como root, digite em um terminal: # yum update #yum install -y openldap-servers samba smbldap-tools nss_ldap Apos a instalacao dos pacotes, vamos comecar a configuracao do servidor OpenLDAP. Abaixo, temos o arquivo de configuracao do OpenLDAP /etc/openldap/slapd.conf totalmente comentado: # See slapd.conf(5) for details on configuration options. # This file should NOT be world readable. # include/etc/openldap/schema/core.schema include /etc/openldap/schema/cosine.schema include /etc/openldap/schema/inetorgperson.schema include /etc/openldap/schema/nis.schema #necessario para dizer que o LDAP seja usado como #servidor de autenticacao. include /etc/openldap/schema/samba.schema #esse schema deve ser incluido adicionalmete.
# Define global ACLs to disable default read access. # Do not enable referrals until AFTER you have a working directory # service AND an understanding of referrals. #local onde e gravado o PID do programa e os parametros de inicializacao pidfile argsfile /var/run/slapd.pid /var/run/slapd.args # Load dynamic backend modules: # modulepath /usr/local/libexec/openldap # moduleload back_bdb.la # moduleload back_ldap.la # moduleload back_ldbm.la # moduleload back_passwd.la # moduleload back_shell.la # Sample security restrictions # Require integrity protection (prevent hijacking) # Require 112-bit (3DES or better) encryption for updates # Require 63-bit encryption for simple bind # security ssf=1 update_ssf=112 simple_bind=64 # Sample access control policy: # Root DSE: allow anyone to read it
# Subschema (sub)entry DSE: allow anyone to read it # Other DSEs: # Allow self write access # Allow authenticated users read access # Allow anonymous users to authenticate # Directives needed to implement policy: # access to dn.base="" by * read # access to dn.base="cn=subschema" by * read # access to * # by self write # by users read # by anonymous auth # # if no access controls are present, the default policy # allows anyone and everyone to read anything but restricts # updates to rootdn. (e.g., "access to * by * read") # # rootdn can always read and write EVERYTHING! ####################################################################### # BDB database definitions ####################################################################### # tipo de banco de dados a ser usado, aqui no caso bdb, que e o DB4 database bdb
#sufixo da base da dados suffix "dc=teste,dc=impa,dc=br" # administrador da base de dados, o root pode ser #substituido por outro nome que voce queira, como # admin, ou master e etc... rootdn "cn=root,dc=teste,dc=impa,dc=br" # Cleartext passwords, especially for the rootdn, should # be avoid. See slappasswd(8) and slapd.conf(5) for details. # Use of strong authentication encouraged. # Aqui localiza-se acima, localiza-se a senha do servidor LDAP, de forma encriptada. O rootpw #deve ser gerado com slappasswd. rootpw {SSHA}PBsph3ZRDJts5Ohi+6ftLZi9ByFa+FPb # The database directory MUST exist prior to running slapd AND # should only be accessible by the slapd and slap tools. # Mode 700 recommended. # diretorio onde fica a base de dados do LDAP directory /var/lib/ldap #tipo de hash que o password usa {CRYPT} password-hash {CRYPT} # formato do password para suporte ao Cyrus-Sasl password-crypt-salt-format "$1$.8s"
# Abaixo os atributos necessarios para os usuarios que serao adicionados na base de dados. index objectclass,uidnumber,gidnumber eq index cn,sn,uid,displayname pres,sub,eq index memberuid,mail,givenname eq # Abaixo, a linha necessaria para o samba se integrar com LDAP index sambasid,sambaprimarygroupsid,sambadomainname eq index default sub # ACLs access to attrs=userpassword by self write by anonymous auth by * none access to * by * read
Agora que a configuracao do OpenLDAP esta pronta, vamos popular a base de dados. Crie um arquivo com o seguinte conteudo. dn: dc=teste,dc=impa,dc=br dc: teste objectclass: top objectclass: domain dn: ou=people, dc=teste,dc=impa,dc=br ou: People objectclass: top objectclass: organizationalunit dn: ou=group, dc=teste,dc=impa,dc=br ou: Group objectclass: top objectclass: organizationalunit dn: ou=computers, dc=teste,dc=impa,dc=br ou: Computers objectclass: top objectclass: organizationalunit Salve esse arquivo com o nome base.ldif e agora inicie o servidor ldap para que a base possa ser importada. # service ldap start Agora importe a base da estrutura com o comando: # ldapadd -x -D cn=root,dc=teste,dc=impa,dc=br -W -f base.ldif Agora com a base criada, importaremos a base de grupos do sistema usando o migrantion-tools. Dê o comando: # /usr/share/openldap/migration/migrate_group.pl /etc/group group.ldif E agora a base de usuarios do sistema: # /usr/share/openldap/migration/migrate_passwd.pl /etc/passwd users.ldif E depois importe esses arquivos para a base do LDAP com os comandos: # ldapadd -x -D cn=root,dc=teste,dc=impa,dc=br -W -f group.ldif
# ldapadd -x -D cn=root,dc=teste,dc=impa,dc=br -W -f users.ldif Agora, se voce quiser, pode fazer uma consulta a sua base de dados com o comando: # ldapsearch -x -h localhost (o localhost pode ser trocado pelo nome da maquina caso esteja trabalhando remotamente. Agora comecaremos com a configuracao do samba, para quer a integracao possa ser feita e os usuarios autentiquem com sucesso. Aqui abaixo o arquivo de configuracao do samba, o /etc/samba/smb.conf.: [global] workgroup = TESTE netbios name = VIVALDI server string = Vivaldi Authentication LDAP & Samba Server (FLUID) 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 = root logon script = %U.bat logon path = %Lprofiles%U wins support = no
dns proxy = no ldap passwd sync = yes ldap delete dn = Yes passdb backend = ldapsam:ldap://vivaldi.fluid.impa.br ldap admin dn = cn=root,dc=teste,dc=impa,dc=br ldap suffix = dc=teste,dc=impa,dc=br ldap group suffix = ou=group ldap user suffix = ou=people ldap machine suffix = ou=computers ldap idmap suffix = ou=idmap idmap backend = ldap:ldap://vivaldi.fluid.impa.br #nome na maquina servidor LDAP idmap uid = 10000-15000 idmap gid = 10000-15000 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 #os scripts que adicionam os usuarios samba e LDAP add machine script = /usr/sbin/smbldap-useradd -w "%u" add user script = /usr/sbin/smbldap-useradd -m "%u" delete user script = /usr/sbin/smbldap-userdel "%u"
add machine script = /usr/sbin/smbldap-useradd -w "%u" add group script = /usr/sbin/smbldap-groupadd -p "%g" delete group script = /usr/sbin/smbldap-groupdel "%g" add user to group script = /usr/sbin/smbldap-groupmod -m "%u" "%g" delete user from group script = /usr/sbin/smbldap-groupmod -x "%u" "%g" set primary group script = /usr/sbin/smbldap-usermod -g "%g" "%u" dos charset = UTF-8 unix charset = UTF-8 [homes] comment = Home Directory 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 [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 Com configuracao adpatada a sua necessidade, inicie o servidor samba. # service smb start Configuraremos agora, o smbldap-tools. Execute o script de configuracao do smbldap-tools e responda as perguntas conforme sao apresentadas. # /usr/share/doc/smbldap-tools-0.9.2/configure.pl (OBS: So funciona se o samba estiver ativo) Apos a configuracao do smbldap-tools, temos que gravar senha do samba:
# smbpasswd -w SENHA Agora criaremos o arquivo nextuid.ldif, para nao precisarmos indicar proximo UID dos usuarios que poderao ser adicionados posteriormente. O arquivo tera o seguinte conteudo: dn: cn=nextfreeunixid,dc=teste,dc=impa,dc=br objectclass: inetorgperson objectclass: sambaunixidpool uidnumber: 1000 gidnumber: 1000 cn: NextFreeUnixId sn: NextFreeUnixId Inclua a entrada no LDAP: # ldapadd -x -D cn=root,dc=teste,dc=impa,dc=br -W -f nextuid.ldif Agora que temos nossa base praticamente pronta, vamos popular a base usando o comando abaixo: # smbldap-populate Pronto! Agora so falta colocar seu sistema para autenticar, com o seguinte comando: # authconfig --enableldap --enableldapauth --ldapserver 147.65.7.59 --ldapbasedn dc=teste,dc=impa,dc=br kickstart OBS: O IP deve ser trocado de acordo com o IP do servidor LDAP assim como base de dados. Apos esse processo, vamos agora usar o smbldap-tools para poder adicionar os novos usuarios e gerenciar os ja existentes
NOTA: Nao se esqueca de verificar as permissoes do arquivo /etc/openldap/slapd.conf, que devem estar como 700 (chmod 700 /etc/openldap/slapd.conf) para que ninguem, a nao ser o root, tenha conhecimento dos modos de autenticacao e atributos da base de dados. //PENDENCIA DA INTEGRACAO DO KERBEROS//