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.
# 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 /var/run/slapd.pid argsfile /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:
# 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
#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
# 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 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)
# 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.