Server Ldap+apache+samba

Tema: 

Pues bien muchos son los problemas que nos ocacionan avese los usuariuos a la hora del cambio de contraseñas y la gestion de los servicios en nustra red. pues aqui traigo una integracion perfecta del directorio ldap con los servicios necesarios. Partiendo de que ya tenemos instalado un server DNS que nos resuelve las consulta al 100% pues empezamos con la faena.
Para instalar es servidor ldap:

apt-get install slapd ldap-utils

Nos pedirá el dominio

prueba.miisp.cu

Aquí quedaría definida la base

dc=prueba,dc=miispdc=com

Luegos nos pedira la contraseña del root para el server Ldap.
Bien pero queremos que nustras contraseñas en los usuarios del server ldap sean cifrada; para ellos utilizaremos el modulo 5

slappasswd -h {md5}

Ponemos nuestro passwd y lo reafirmamos. Bueno esta baina comienza a tomar forma.
Ahora debemos detener nuestro servidor para la configuracion que deseamos.

/etc/init.d/slapd stop

Eliminamos las bases antiguas

rm /var/lib/ldap/*

Ahora reconfiguramos a nuestro estilo el Ldap

dpkg-reconfigure slapd

bien aca nos volverá a pedir el dominio primero, la base después, sería así:

prueba.miisp.com
dc=prueba,dc=miisp,dc=com

luego pediría la contraseña para el root, tambien pedira borrar las bases de datos antiguas, pero ojo ya las hemos borrado, y por que version van a bindiar los servicios, pues bien escogeremos por la version 2. Ya con esto tendremos nuestro servidor ldap, ahora debemos tener los schema para el samba, dhcp y los servicios. Pues debemos bajarlos de internet.
Modificamos el fichero /etc/ldap/slapd.conf

nano /etc/ldap/slapd.conf

y debería quedar de esta forma:

allow bind_v2

include /etc/ldap/schema/core.schema
include /etc/ldap/schema/cosine.schema
include /etc/ldap/schema/nis.schema
include /etc/ldap/schema/inetorgperson.schema
include /etc/ldap/schema/samba.schema
include /etc/ldap/schema/services.schema
include /etc/ldap/schema/dhcp.schema

pidfile /var/run/slapd/slapd.pid

argsfile /var/run/slapd/slapd.args

loglevel none

modulepath /usr/lib/ldap
moduleload back_hdb

sizelimit 10000

tool-threads 1

backend hdb

database hdb

suffix "dc=prueba,dc=miisp,dc=com"

rootdn "cn=admin,dc=prueba,dc=miisp,dc=com"
rootpw "{MD5}GWrMXsn1hDAWJboeHjEF6g==" # aquí es donde se pone el passwd cifrado que anterior obtubimos con la instruccion slappasswd -h {md5}

moduleload syncprov
overlay syncprov
syncprov-checkpoint 50 10
syncprov-sessionlog 100

directory "/var/lib/ldap"

dbconfig set_cachesize 0 2097152 0

dbconfig set_lk_max_objects 1500

dbconfig set_lk_max_locks 1500

dbconfig set_lk_max_lockers 1500

index default sub
index objectClass eq
index entryCSN eq
index entryUUID eq
index uidNumber eq
index gidNumber eq
index mail eq
index sambaSID eq
index sambaPrimaryGroupSID eq
index givenName pres,sub,eq
index sn pres,sub,eq
index cn pres,sub,eq
index uid pres,sub,eq

lastmod on

checkpoint 512 30

access to dn.subtree="cn=equipos,dc=prueba,dc=miisp,dc=com"
by dn="cn=admin,dc=prueba,dc=miisp,dc=com" write
by dn="cn=samba,dc=prueba,dc=miisp,dc=com" write
by * read

access to attrs=userPasswkey,userPassword,sambaLMPassword,sambaNTPassword
by dn="cn=admin,dc=prueba,dc=miisp,dc=com" write
by dn="cn=chpass,dc=prueba,dc=miisp,dc=com" write
by dn="cn=mailauth,dc=prueba,dc=miisp,dc=com" read
by dn="cn=syncrepl,dc=prueba,dc=miisp,dc=com" read
by dn="cn=samba,dc=prueba,dc=miisp,dc=com" write
by anonymous auth
by * none

access to attrs=userPasswdac,userPasswdch,userPasswdip,sambaAcctFlags,sambaPwdLastSet,title
by dn="cn=admin,dc=prueba,dc=miisp,dc=com" write
by dn="cn=chpass,dc=prueba,dc=miisp,dc=com" write
by dn="cn=mailauth,dc=prueba,dc=miisp,dc=com" read
by * read

access to dn.base="" by * read

access to *
by dn="cn=admin,dc=prueba,dc=miisp,dc=com" write
by * read

bien este es el fichero del server ldap pero en /etc/ldap/schema debemos poner los schema que anteriormente mencione.
Ahora le damos permiso de al usuario y grupo ldap de poder leer el fichero modificado.

chown openldap.openldap /etc/ldap/slapd.conf

reiniciamos nuestro servidor y listo

/etc/init.d/slapd restart

Aora comenzaremos la baina del apache que es nuestro server web.

apt-get install apache2 php5-ldap

Ahora instalamos nuestro phpldapadmin que seria el cliente para ver grafico nuestro directorio ldap.

apt-get install phpldapadmin

Abrimos nuetro navegador de preferencias y http://localhost/phpldapadmin

Bueno la baina comiensa realmente ahora, en nuestro phpldapadmin que es donde debemos configurar algunas cosillas.
- Vamos a eliminar la base creada automatica por nuestro ldap, OJO, en este periodo no devemos serrar el phpldapadmin abirto. Vamos a crear en un directorio X un fichero llamado base.ldif, el contenido de este fichero sera el siguiente:

version: 1

# LDIF Export for: dc=prueba,dc=miisp,dc=com
# Generated by phpLDAPadmin ( http://phpldapadmin.sourceforge.net/ ) on May 30, 2010 12:17 pm
# Server: PDC-SERVER (ldap://127.0.0.1)
# Search Scope: sub
# Search Filter: (objectClass=*)
# Total Entries: 103

dn: dc=prueba,dc=miisp,dc=com
objectClass: top
objectClass: dcObject
objectClass: organization
o: prueba.miisp.com
dc: fra

dn: cn=chpass,dc=prueba,dc=miisp,dc=com
cn: chpass
description: LDAP administrator
objectClass: simpleSecurityObject
objectClass: organizationalRole
userPassword: {MD5}4YHoxGaWMDMi+9Z9U14+mA==

dn: cn=equipos,dc=prueba,dc=miisp,dc=com
cn: equipos
objectClass: top
objectClass: dhcpService
objectClass: dhcpOptions
dhcpPrimaryDN: cn=dhcp.prueba.miisp.com,cn=equipos,dc=fra,dc=hlg,dc=rimed,dc =cu
dhcpSubnetDN: cn=10.0.0.0,cn=dhcp.prueba.miisp.com,cn=equipos,dc=prueba,dc=miisp,dc=com
dhcpStatements: server-name DHCP
dhcpStatements: server-identifier dhcp.prueba.miisp.com
dhcpStatements: ddns-update-style none
dhcpStatements: ddns-domainname "prueba.miisp.com"
dhcpStatements: log-facility local7
dhcpStatements: authoritative
dhcpStatements: max-lease-time 84600
dhcpStatements: default-lease-time 180000
dhcpStatements: filename "pxelinux.0"
dhcpStatements: next-server 10.0.0.1
dhcpOption: domain-name "prueba.miisp.com"
dhcpOption: domain-name-servers 10.0.0.1
dhcpOption: netbios-name-servers 10.0.0.1
dhcpOption: netbios-dd-server 10.0.0.1
dhcpOption: netbios-node-type 8
dhcpOption: ip-forwarding off
dhcpOption: ntp-servers 10.0.0.1
dhcpOption: wpad-url code 252 = text
dhcpOption: wpad-url "http://wpad.prueba.miisp.com/wpad.dat\n"

dn: cn=dhcp.prueba.miisp.com,cn=equipos,dc=prueba,dc=miisp,dc=com
cn: dhcp.prueba.miisp.com
dhcpVersion: V3.1.1
objectClass: top
objectClass: dhcpServer
dhcpServiceDN: cn=equipos,dc=prueba,dc=miisp,dc=com

dn: cn=10.0.0.0,cn=dhcp.prueba.miisp.com,cn=equipos,dc=prueba,dc=miisp,dc=com
cn: 10.0.0.0
dhcpNetMask: 24
objectClass: top
objectClass: dhcpSubnet
objectClass: dhcpOptions
dhcpOption: broadcast-address 10.255.255.254
dhcpRange: 10.0.0.1 10.0.0.254

dn: uid=mined-95e633bcd$,cn=equipos,dc=prueba,dc=miisp,dc=com
objectClass: top
objectClass: dhcpHost
objectClass: sambaSamAccount
objectClass: posixAccount
description: --
gidNumber: 515
homeDirectory: /dev/null
loginShell: /bin/false
sambaAcctFlags: [W ]
uid: mined-95e633bcd$
sambaSID: S-1-5-21-2426537050-1888680479-2241998807-1001
uidNumber: 1001
cn: mined-95e633bcd
dhcpHWAddress: ethernet 00:1c:25:e4:99:29
dhcpStatements: fixed-address 10.0.0.200
dhcpStatements: host-name mined-95e633bcd.prueba.miisp.com
sambaNTPassword: 71F3AAAAED86E563CACEEF88980783AB

dn: cn=mailauth,dc=prueba,dc=miisp,dc=com
cn: mailauth
description: LDAP administrator
objectClass: simpleSecurityObject
objectClass: organizationalRole
userPassword: {MD5}rZ/4pwwijBTLvCEUvRfXIw==

dn: cn=samba,dc=prueba,dc=miisp,dc=com
cn: samba
description: LDAP administrator
objectClass: simpleSecurityObject
objectClass: organizationalRole
userPassword: {MD5}hKS5bSpYlur/cNsNFYwyEA==

dn: cn=syncrepl,dc=prueba,dc=miisp,dc=com
cn: syncrepl
description: LDAP administrator
objectClass: simpleSecurityObject
objectClass: organizationalRole
userPassword: {MD5}mmNLC59GOlldJ9LzLZLFkQ==

dn: ou=grupos,dc=prueba,dc=miisp,dc=com
objectClass: top
objectClass: organizationalUnit
ou: grupos

dn: cn=Account Operators,ou=grupos,dc=prueba,dc=miisp,dc=com
objectClass: top
objectClass: posixGroup
objectClass: sambaGroupMapping
gidNumber: 548
cn: Account Operators
description: Netbios Domain Users to manipulate users accounts
sambaSID: S-1-5-32-548
sambaGroupType: 5
displayName: Account Operators

dn: cn=Administrators,ou=grupos,dc=prueba,dc=miisp,dc=com
objectClass: top
objectClass: posixGroup
objectClass: sambaGroupMapping
gidNumber: 544
cn: Administrators
description: Netbios Domain Members can fully administer the computer/sambaD
omainName
sambaSID: S-1-5-32-544
sambaGroupType: 5
displayName: Administrators
memberUid: admin

dn: cn=Backup Operators,ou=grupos,dc=prueba,dc=miisp,dc=com
objectClass: top
objectClass: posixGroup
objectClass: sambaGroupMapping
gidNumber: 551
cn: Backup Operators
description: Netbios Domain Members can bypass file security to back up file
s
sambaSID: S-1-5-32-551
sambaGroupType: 5
displayName: Backup Operators

dn: cn=Domain Admins,ou=grupos,dc=prueba,dc=miisp,dc=com
objectClass: top
objectClass: posixGroup
objectClass: sambaGroupMapping
gidNumber: 512
cn: Domain Admins
description: Netbios Domain Administrators
sambaGroupType: 2
displayName: Domain Admins
sambaSID: S-1-5-21-2426537050-1888680479-2241998807-512
memberUid: admin

dn: cn=Domain Computers,ou=grupos,dc=prueba,dc=miisp,dc=com
objectClass: top
objectClass: posixGroup
objectClass: sambaGroupMapping
gidNumber: 515
cn: Domain Computers
description: Netbios Domain Computers accounts
sambaGroupType: 2
displayName: Domain Computers
sambaSID: S-1-5-21-2426537050-1888680479-2241998807-515

dn: cn=Domain Guests,ou=grupos,dc=prueba,dc=miisp,dc=com
objectClass: top
objectClass: posixGroup
objectClass: sambaGroupMapping
gidNumber: 514
cn: Domain Guests
description: Netbios Domain Guests Users
sambaGroupType: 2
displayName: Domain Guests
sambaSID: S-1-5-21-2426537050-1888680479-2241998807-514

dn: cn=Domain Users,ou=grupos,dc=prueba,dc=miisp,dc=com
objectClass: top
objectClass: posixGroup
objectClass: sambaGroupMapping
gidNumber: 513
cn: Domain Users
description: Netbios Domain Users
sambaGroupType: 2
displayName: Domain Users
sambaSID: S-1-5-21-2426537050-1888680479-2241998807-513
memberUid: admin

dn: cn=Print Operators,ou=grupos,dc=prueba,dc=miisp,dc=com
objectClass: top
objectClass: posixGroup
objectClass: sambaGroupMapping
gidNumber: 550
cn: Print Operators
description: Netbios Domain Print Operators
sambaSID: S-1-5-32-550
sambaGroupType: 5
displayName: Print Operators

dn: cn=Replicators,ou=grupos,dc=prueba,dc=miisp,dc=com
objectClass: top
objectClass: posixGroup
objectClass: sambaGroupMapping
gidNumber: 552
cn: Replicators
description: Netbios Domain Supports file replication in a sambaDomainName
sambaSID: S-1-5-32-552
sambaGroupType: 5
displayName: Replicators

dn: ou=Usuarios,dc=prueba,dc=miisp,dc=com
objectClass: organizationalUnit
objectClass: top
ou: Usuarios

Ahora este arhivo se lo vamos a importar a al ldap por el phpldapadmin.
Co esto quedaría realizada nuestra estructura para el servidor.