OpenLDAP + Samba como alternativa livre ao Active Directory
Há muito tempo tenho interesse de instalar e configurar um ambiente alternativo ao Active Directory da Microsoft, mas nunca tive tempo para tal pesquisa e configuração.
No meu novo emprego, por coincidência ou não, foi solicitado a instalação desse ambiente. Sendo assim estou satisfeito em proporcionar esse resultado.
Vale salientar que algumas funções do Active Directory ainda não foram completamente atendidas, tal como o controle de estações via GPO e afins, mas iremos tratar isso posteriormente.
Eu instalei esse ambiente em um CentOS 5.5 x64 (Final), mas acredito que ele possa ser reproduzido em qualquer distribuição Gnu/Linux.
Segue abaixo os pacotes utilizados e suas versões:
Eu utilizei o repositório EPEL, que é mantido pela comunidade para obter alguns pacotes extras, esse é um repositório sério, pode confiar:
# rpm -Uvh http://download.fedora.redhat.com/pub/epel/5/x86_64/epel-release-5-4.noarch.rpm
Agora vamos instalar os pacotes necessários:
# yum install openldap-servers nss_ldap samba httpd openssl mod_ssl mysql mysql-server php php-xml php-ldap php-mysql php-pdo php-cli php-common smbldap-tools
A efeito de entendimento, quando for citado o termo <NOMEDOMINIO>, ele deve ser substituído para nome preterido pelo seu domínio, <NOMEHOST> pelo nome do servidor a ser instalado e <SEUIP> pelo ip do servirdor.
OpenLDAP
Agora vamos começar pelas configurações do OpenLDAP:
Acesse o arquivo /etc/hosts e adicione a seguinte linha:
<SEUIP> <NOMEHOST>.<NOMEDOMINIO> <NOMEHOST>
Execute o comando abaixo para que seu nome seja modificado:
# hostname <NOMEHOST>
Agora vamos ao OpenLDAP,
Execute o comando abaixo para gerar o hash da senha a ser utilizada no arquivo de configuração do OpenLDAP:
# slappasswd
Guarde o arquivo padrão do OpenLDAP com o comando abaixo:
# mv -f /etc/openldap/slapd.conf /etc/openldap/slapd.conf.dist
Acesse o arquivo /etc/openldap/slapd.conf e adicione o seguinte conteúdo:
include /etc/openldap/schema/core.schema
include /etc/openldap/schema/cosine.schema
include /etc/openldap/schema/inetorgperson.schema
include /etc/openldap/schema/nis.schema
include /etc/openldap/schema/samba.schema
allow bind_v2
pidfile /var/run/openldap/slapd.pid
argsfile /var/run/openldap/slapd.args
database bdb
suffix “dc=<NOMEDOMINIO>,dc=com,dc=br”
rootdn “cn=root,dc=<NOMEDOMINIO>”
rootpw Coloque aqui o hash gerado com o comando slappasswd
password-hash {SSHA}
directory /var/lib/ldap
index cn,sn,uid,displayName pres,sub,eq
index uidNumber,gidNumber eq
index sambaSID eq
index sambaPrimaryGroupSID eq
index sambaDomainName eq
index objectClass pres,eq
index default sub
access to attrs=userPassword,sambaLMPassword,sambaNTPassword
by self write
by anonymous auth
by * none
access to *
by * read
Digite os comandos abaixo para que os arquivos necessário sejam copiados e devidamente ajustados:
# cp /usr/share/doc/samba-3.*/LDAP/samba.schema /etc/openldap/schema/
# cp /etc/openldap/DB_CONFIG.example /var/lib/ldap/DB_CONFIG
# chown ldap:ldap /var/lib/ldap/DB_CONFIG
# chmod 600 /var/lib/ldap/DB_CONFIG
Crie o arquivo /etc/openldap/init.ldif, que será utilizado para adicionar as informações básicas de sua base openldap com o seguinte conteúdo:
dn: dc=<NOMEDOMINIO>,dc=com,dc=br
objectclass: dcObject
objectclass: organization
o: CentOS Directory Server
dc: <NOMEDOMINIO>
dn: cn=root,dc=<NOMEDOMINIO>,dc=com,dc=br
objectclass: organizationalRole
cn: root
Agora execute os comandos abaixo para que o arquivo seja carregado corretamente:
# slapadd -l /etc/openldap/init.ldif
# chown -R ldap:ldap /var/lib/ldap
# chmod 600 /var/lib/ldap/*
Com o comando abaixo, você poderá verificar se o procedimento foi efetuado de maneira correta:
# slapcat
Com os comandos abaixo iremos ativar o serviço OpenLDAP:
# service ldap start
# chkconfig ldap on
Com o comando abaixo será possível verificar se todo processo foi efetuado com sucesso:
# ldapsearch -x -b "dc=<NOMEDOMINIO>,dc=com,dc=br"
PHPLDAPAdmin
Pronto, seu OpenLDAP está ok! Agora vamos ao PHPLDAPAdmin.
Execute o comando abaixo para instalar o phpldapadmin:
# yum install phpldapadmin -y
Acesse o arquivo /usr/share/phpldapadmin/config/config.php e adicione as seguintes linhas:
$ldapservers->SetValue($i,’server’,'name’,'CentOS Openldap’);
$ldapservers->SetValue($i,’server’,'host’,'<SEUIP>’);
$ldapservers->SetValue($i,’server’,'base’,array(‘dc=<NOMEDOMINIO>,dc=com,dc=br’));
$ldapservers->SetValue($i,’server’,'auth_type’,'session’);
Obs: Atente que é necessário configurar o acesso ao phpldapadmin via HTTPS. Caso contrário ele não funcionará. Não irei abordar aqui essa configuração.
Agora acesse a URL abaixo:
https://<SEUIP>/phpldapadmin
Obs: Acesse com um usuário criado, ensinaremos posteriormente nesse manual como criar usuários.
Samba
Agora vamos a configuração do Samba.
Primeiramente, vamos guardar os arquivos que são instalados por padrão e obter uma base para nossa configuração com os comandos abaixo:
# mv /etc/samba/smb.conf /etc/samba/smb.conf.dist
# cp /usr/share/doc/smbldap-tools*/smb.conf /etc/samba/smb.conf
Acesse o arquivo /etc/samba/smb.conf e edite conforme seu ambiente.
Como nessa arquitetura, o servidor OpenLDAP e Samba estarão no mesmo servidor, sendo assim segue abaixo três parâmetros que devem ser adicionados no arquivo /etc/samba/smb.conf:
ldap ssl = off
nt acl support = yes
socket options = TCP_NODELAY SO_RCVBUF=8192 SO_SNDBUF=8192 SO_KEEPALIVE
Com o comando abaixo vamos obter uma base para configuração do smbldap-tools:
# cp /usr/share/doc/smbldap-tools-*/smbldap.conf /etc/smbldap-tools/smbldap.conf
Com o comando abaixo vamos gerar o SID do seu domínio:
# net getlocalsid
Obs: Retornará diversos erros. Não se preocupe, espere até o final de todo retorno, que terá a informação necessária.
Acesse o arquivo /etc/smbldap-tools/smbldap.conf, adicione o SID retirado no comando anterior, e modifique os parâmetros de acordo com seu ambiente.
Acesse o arquivo /etc/smbldap-tools/smbldap_bind.conf e configure também de acordo com seu ambiente.
Com os comandos abaixo ajuste a permissão dos arquivos de configuração do smbldap-tools:
# chmod 644 /etc/smbldap-tools/smbldap.conf
# chmod 600 /etc/smbldap-tools/smbldap_bind.conf
Digite o comando abaixo e selecione a opção “Local authorization is sufficient” :
# authconfig-tui
Utilize o comando abaixo para verificar se todos os parâmetros do samba estão devidamente configurados:
# testparm
Com os comandos abaixo inicie a população da base LDAP:
# smbpasswd -w < SUA SENHA DE ROOT DO LDAP AQUI >
# smbldap-populate
Inicie o serviço e configure para iniciar no boot automaticamente com os comandos abaixo:
# /etc/init.d/smb start
# chkconfig smb on
Para adicionar um novo usuário é necessário adicionar no unix, samba e LDAP, com os comandos abaixo:
# useradd user1
# smbldap-useradd -a -G 'Domain Users' -m -s /bin/bash -d /home/user2 -F "" -P user1
Com comando abaixo veja quais as relações no LDAP com os GID locais do unix:
# net groupmap list
Agora crie os grupos locais com as relações informadas no comando acima:
# groupadd -g 514 samba_domain_guests
# groupadd -g 515 samba_domain_computers
# groupadd -g 544 samba_administrator
# groupadd -g 548 samba_account_operators
# groupadd -g 550 samba_print_operators
# groupadd -g 551 samba_backup_operators
# groupadd -g 552 samba_replicators
Para criar um novo grupo digite o comando abaixo:
# smbldap-groupadd -a "grupo1"
Agora verifique qual GID está configurado para ele na base LDAP com o comando abaixo:
# net groupmap list
Com o comando abaixo crie o arquivo na base unix com o GID igual ao obtido no comando anterior:
# groupadd -g < GID DO GRUPO AQUI> grupo1
Com os comandos abaixo vamos desabilitar todos os serviços desnecessários do servidor:
# chkconfig ntpd off
# chkconfig bluetooth off
# chkconfig xinetd off
# chkconfig smartd off
# chkconfig yum-updatesd off
# chkconfig rpcidmapd off
# chkconfig rpcgssd off
# chkconfig restorecond off
# chkconfig portmap off
# chkconfig pcscd off
# chkconfig nfslock off
# chkconfig mcstrans off
# chkconfig mdmonitor off
# chkconfig irqbalance off
# chkconfig kudzu off
# chkconfig ip6tables off
# chkconfig hidd off
# chkconfig gpm off
# chkconfig haldaemon off
# chkconfig autofs off
# chkconfig avahi-daemon off
# service ntpd stop
# service bluetooth stop
# service xinetd stop
# service smartd stop
# service yum-updatesd stop
# service rpcidmapd stop
# service rpcgssd stop
# service restorecond stop
# service portmap stop
# service pcscd stop
# service nfslock stop
# service mcstrans stop
# service mdmonitor stop
# service irqbalance stop
# service kudzu stop
# service ip6tables stop
# service hidd stop
# service gpm stop
# service haldaemon stop
# service autofs stop
# service avahi-daemon stop
Com o comando abaixo configure o servidor para buscar parâmetros de usuário e grupo na base ldap:
# authconfig --enableldap --enableldapauth --ldapserver 127.0.0.1 --ldapbasedn dc=<NOMEDOMINIO>,dc=com,dc=br --kickstart
Obs: Não se esqueça de configurar em seu DNS o nome do domínio para o ip do servidor que acabou de configurar.
Pronto! Seu ambiente está completamente pronto!
Clientes com Windows 7
Você tem máquina Windows 7 em sua rede? Não ta conseguindo adicionar ela em seu domínio?
Não se desespere! Siga os passos abaixo:
Primeiro vamos instalar uma versão mais atual do Samba, pois a versão disponível no repositório do CentOS é a 3.0 e o Windows 7 somente foi suportado a partir da versão 3.3.
Vamos configurar o repositório de onde iremos atualizar o nosso samba:
# cd /etc/yum.repos.d/
# wget http://ftp.sernet.de/pub/samba/3.3/centos/5/sernet-samba.repo
Agora atualize seus pacotes, o samba será atualizado:
# yum update
Obs : Caso não queria mais utilizar esse repositório, basta remover o arquivo /etc/yum.repos.d/sernet-samba.repo.
Recoloque o samba na inicialização automática do sistema e reinicialize o serviços com os comandos abaixo:
# chkconfig --add smb
# chkconfig smb on
# service smb restart
Antes de adicionar a máquina no domínio, é necessário executar um .reg na mesma, pois existem algumas opções que precisam ser modificadas para que ele se adeque ao domínio samba.
Pronto, com esse procedimento será possível adicionar uma estação Windows7 em seu domínio.
Atualizar versão do samba
Fonte: http://www.faqforge.com/linux/distributions/centos/updating-samba-on-centos-5/
Updating Samba on CentOS 5
Friday, January 14, 2011 posted by rafael
wrote by Rafael Marangoni, from Servidor Linux team.
This article explains howto update the Samba packages on CentOS 5 to version 3.5.
First, we need to add a new repository:
cd /etc/yum.repos.d/
wget http://ftp.sernet.de/pub/samba/3.5/centos/5/sernet-samba.repo
Then, update samba:
yum update samba
Probably, you will need winbind too:
yum install samba3-winbind samba3-utils
Check the rpm version:
rpm -qa | grep samba
Restarting Samba:
/etc/init.d/smb restart