Howto Domain Controller SAMBA+LDAP para windows

É possivel combinar os protocolos de comunicação ldap, netbios, smb, rpc entre outros criando um servidor de arquivos e impressão com um excelente serviço de diretorios multiplataforma.
É claro que ao falarmos disso tudo estamos falando do maravilhoso samba (v3) e do openldap, uma solução que permite aos nossos clientes windows juntar-se ao um dominio e desfrutar de um serviço de logon único (SSO). Claro que depois você pode estender o esquema do ldap pra outros serviços como correio por exemplo.
Utilizaremos uma distro muito estável o Red Hat na versão CentOS (5.3/5.4), pra quem não sabe o Centos “é o Red Hat” sem marcas e logos, podendo usar sem limitações porém sem garantias e suporte pago como no RH.

Em outro post eu expliquei o que é o samba e o que se pode fazer com ele, iremos explorar muitissimo as possibilidades do samba
no blog.

Ok let’s go, samba de crioulo doido na área!😉

Vamos desabilitar o SElinux que é um mecânismo de segurança do RH.
Vá em /etc/sysconfig/selinux e mude para SELINUX=disabled

Agora instalar os pacotes:

rpm -Uvh http://download.fedora.redhat.com/pub/epel/5/i386/epel-release-5-3.noarch.rpm
yum update
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

Baixe e instale:
rpm -Uvh http://download.gna.org/smbldap-tools/packages/smbldap-tools-0.9.5-1.noarch.rpm

Pelos nomes dos pacotes acredito que vocês já sacaram as funções: ldap, samba, samba+ldap, banco de dados e ferramentas para configurar.

Vamos configurar o hostname, vá em /etc/hosts e acrescente:

192.168.0.5 server.MEUDOMINIO server

Lembrando que server é o nome do domain controller e meudominio do dominio.

Altere o nome da máquina usando hostname server.MEUDOMINIO

Vamos gerar a senha do ldap: slappasswd

Esta senha será inserida dentro do arquivo: /etc/openldap/slapd.conf na linha rootpw veja:

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=MEUDOMINIO”
rootdn “cn=root,dc=MEUDOMINIO”
rootpw {SSHA}TTzshhAbmZPPb8F2s7sgf9B+IrZt+nUD
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

Agora copiar o esquema do samba para a pasta esquema do ldap, o banco de dados do ldap, mudar as permissões e as propriedades:

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

Insira este texto abaixo no arquivo /etc/openldap/init.ldif

dn: dc=MEUDOMINIO
objectclass: dcObject
objectclass: organization
o: CentOS Directory Server
dc: MEUDOMINIO
dn: cn=root,dc=MEUDOMINIO
objectclass: organizationalRole
cn: root

Adicionando o conteudo de init.ldif:
slapadd -l /etc/openldap/init.ldif

Alterando as permissões e propriedades dos arquivos:
chown -R ldap:ldap /var/lib/ldap
chmod 600 /var/lib/ldap/*

Verificando a saida com o comando slapcat:
slapcat

Deverá aparecer algo semelhante a isso:

dn: dc=MEUDOMINIO
objectClass: dcObject
objectClass: organization
o: CentOS Directory Server
dc: MEUDOMINIO
structuralObjectClass: organization
entryUUID: 717d1b1e-ce90-102d-88c3-df22563ebfee
creatorsName: cn=root,dc=MEUDOMINIO
modifiersName: cn=root,dc=MEUDOMINIO
createTimestamp: 20090506134920Z
modifyTimestamp: 20090506134920Z
entryCSN: 20090506134920Z#000000#00#000000
dn: cn=root,dc=MEUDOMINIO
objectClass: organizationalRole
cn: root
structuralObjectClass: organizationalRole
entryUUID: 71858556-ce90-102d-88c4-df22563ebfee
creatorsName: cn=root,dc=MEUDOMINIO
modifiersName: cn=root,dc=MEUDOMINIO
createTimestamp: 20090506134920Z
modifyTimestamp: 20090506134920Z
entryCSN: 20090506134920Z#000001#00#000000

Iniciaremos e ativaremos o serviço ldap:

service ldap start
chkconfig ldap on

Usando o ldasearch faremos uma search na base, usando domain name:

ldapsearch -x -b “dc=MEUDOMINIO”

A saida deverá ser algo assim:

# extended LDIF
#
# LDAPv3
# base with scope subtree
# filter: (objectclass=*)
# requesting: ALL
#
# MEUDOMINIO
dn: dc=MEUDOMINIO
objectClass: dcObject
objectClass: organization
o: CentOS Directory Server
dc: MEUDOMINIO
# root, MEUDOMINIO
dn: cn=root,dc=MEUDOMINIO
objectClass: organizationalRole
cn: root
# search result
search: 2
result: 0 Success
# numResponses: 3
# numEntries: 2

Configurando a administração remota, edite o arquivo /etc/php.ini e coloque o parâmetro memory_limit para 32M.

Para administrar você pode usar o Phpldapadmin (linux-web) ou o ldapadmin (windows), tudo depende de onde você acessará:
phpldapadmin aqui:
http://sourceforge.net/project/showfiles.php?group_id=61828&package_id=177751
ldapadmin aqui:
http://ldapadmin.sourceforge.net/download/ldapadmin.html

Para administrar parâmetros especificos do Samba use o Swat do próprio samba (yum install swat) e aponte o browser para http://127.0.0.1:901.

Se for usar o phpldapadmin pode seguir os passos:

mkdir /var/www/html/samba && cd /var/www/html/samba
wget http://softlayer.dl.sourceforge.net/sourceforge/phpldapadmin/phpldapadmin-1.2.0.5.tar.gz
tar zxf phpldapadmin-1.2.0.5..tar.gz
ln -s phpldapadmin-1.2.0.5. pla
cp pla/config/config.php.example pla/config/config.php

A versão que está era a última no momento que o post foi escrito.

Edite o arquivo ./pla/config/config.php e e descomente a linha:
$config->custom->jpeg[‘tmpdir’] = “/tmp”;

Agora inicie o serviço do apache (http) para usar o phpldapadmin:
service httpd restart
chkconfig httpd on

Não esqueça de liberar as portas dos serviços envolvidos no firewall:
-137,138(udp),139,445 e 443(tcp)

Abra o browser e aponte pra url com o ip do server, exemplo:
https://192.168.10.1/samba/pla/
Faça logon com cn=root,dc=MEUDOMINIO e sua senha.

Se não for usar o phpldapadmin ignore esses últims passos que fizemos e passe a usar o ldapadmin direto no windows.

Integrar LDAP e SAMBA:
mv /etc/samba/smb.conf /etc/samba/smb.conf.dist
cp /usr/share/doc/smbldap-tools-0.9.5/smb.conf /etc/samba/smb.conf

Edite o /etc/samba/smb.conf na sessão global coloque:
ldap ssl = off
nt acl support = yes
socket options = TCP_NODELAY SO_RCVBUF=8192 SO_SNDBUF=8192 SO_KEEPALIVE

Dê o comando net getlocalsid não importa se der erro, pois ainda o samba não está pronto, porém o que queremos é número do SID do dominio samba

Edite o /etc/smbldap-tools/smbldap.conf e insira as informações cmo o SID colhido, dominio e outras.
Edite o /etc/smbldap-tools/smbldap_bind.conf e mude o que achr necessário, mas só não esqueça de mudar a senha para sua senha.
Vamos dar as permissões corretas:
chmod 644 /etc/smbldap-tools/smbldap.conf
chmod 600 /etc/smbldap-tools/smbldap_bind.conf

E configurar o modo de autenticação:
authconfig-tui e verifique se [ ] Local authorization is sufficientestá ok.

Faça uma verificação básica da configuração do samba com comandotestparm

Agora vem uma parte importante poupular o ldap com as informações dp samba (integrar):
smbpasswd -w SUA SENHA DO ROOT DO LDAP
smbldap-populate

Inicie o samba:
/etc/init.d/smb start
chkconfig smb on

Adicione os usuarios e grupos do unix e ldap:
useradd pedro
smbldap-useradd -a -G ‘Domain Users’ -m -s /bin/bash -d /home/user2 -F “” -P pedro

Pegue a relação de grupos que ainda não existem no linux, mas ja no samba/ldap (nativos):
net groupmap list

A saida é algo assim:
Domain Admins (S-1-5-21-990788473-1556064292-4137819756-512) -> domain_admins
Domain Users (S-1-5-21-990788473-1556064292-4137819756-513) -> domain_users
Domain Guests (S-1-5-21-990788473-1556064292-4137819756-514) -> 514
Domain Computers (S-1-5-21-990788473-1556064292-4137819756-515) -> 515
Administrators (S-1-5-32-544) -> 544
Account Operators (S-1-5-32-548) -> 548
Print Operators (S-1-5-32-550) -> 550
Backup Operators (S-1-5-32-551) -> 551
Replicators (S-1-5-32-552) -> 552

Adicione os grupos no linux relacionando-os com os do samba:
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

Esses grupos são grupos do linux/unix para rlacionar com os internos do windows, porém você pode adicionar no seu dominio ldap/samba grupos da sua empresa por exemplo:
smbldap-groupadd -a “Controladoria”
e não esqueça de relaciona-lo a um grupo local do unix:
groupadd -g 1001 samba_controladoria

Para gerenciar contas de usuarios e de computador pela linha de comando use:

usermod -a -G GRUPO_LINUX USUARIO_LINUX
adicionando usuario a um grupo unix.

useradd -M -g 515 -s /bin/false maquina1$
onde 515 é o gid do grupo onde a conta de maquina será adicionada (samba_domain_computers).

Pronto! Adicione agora as máquinas ao dominio… qualquer erro veja os logs do ldap, do samba e do linux.

Procure usar a última versão do samba principalmente se você deseja usar o windows 7 no dominio.
Para adicionar o windows 7 no dominio samba consulte os passos no wiki do samba:http://wiki.samba.org/index.php/Windows7 ou aguarde que irei postar aqui no blog em português.

Até o próximo post.

Deixe uma resposta

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s

%d blogueiros gostam disto: