lunes, 23 de junio de 2008

Debian+Ldap+GOsa+Samba+pam PDC

Paquetes:
# aptitude install rsync perl screen less make gcc locales-all
# aptitude install slapd ldap-utils db4.4-util
# aptitude install apache2 php5 php5-imagick php5-imap php5-pgsql
# aptitude install php5-ldap php5-mysql libapache-mod-php5 php5-common
# aptitude install php5-tidy php5-xmlrpc php5-xls php5-snmp
# aptitude install gosa gosa-schema
# aptitude install smbldap-tools
# aptitude install samba samba-doc
# aptitude install libnss-ldap
# aptitude install libpam-ldap
# aptitude install nscd

### groups.ldif #####################
dn: ou=groups,dc=rodria,dc=com,dc=ve
ou: groups
objectClass: organizationalUnit
objectClass: top
objectClass: gosaObject
gosaSubtreeACL: :all
#####################################

### people.ldif #####################
dn: ou=people,dc=rodria,dc=com,dc=ve
ou: people
objectClass: organizationalUnit
objectClass: top
objectClass: gosaObject
gosaSubtreeACL: :all
#####################################

### machines.ldif ###################
dn: ou=machines,dc=rodria,dc=com,dc=ve
objectClass: organizationalUnit
objectClass: top
objectClass: gosaObject
gosaSubtreeACL: :all
ou: machines
#####################################



Debian+Ldap+GoSA+Samba
Luego de darme algunos golpes con GoSA y LDAP decidí colocar esta receta para ayudar a otros que posiblemente tengan algunos problemitas.

Lo primero es acotar que he usado PHP5 en lugar de usar PHP4 que es el que instala por defecto GoSA.

Los primeros pasos como en todo debian es asegurarse de tener la lista de paquetes actualizada, como esto lo he hecho sobre una máquina virtual en xen y _solo_ tiene el sistema base instalado debo instalar algunos paquetes necesarios y otros que me gusta usar, como rsync y screen por ejemplo ;).

# aptitude update
# aptitude dist-upgrade
# aptitude install rsync perl screen less make gcc locales-all

Ahora los paquetes para el ldap

# aptitude install slapd ldap-utils db4.4-util

Preguntas de SLAPD
* Contraseñe Administrador: 123456
* Verificación Contraseña: 123456

Luego debemos reconfigurar ldap para asegurarnos de que nuestro dominio esté configurado como queremos.

# dpkg-reconfigure slapd

* ¿Desea omitir la configuración del servidor OpenLDAP?: No
* Introduzca su nombre de dominio DNS: rodria.com.ve
* Introduzca el nombre de su organización: Raul Odria Corp.
* Contraseña del administrador: 123456
* Motor de base de datos a utilizar: BDB
* ¿Desea que se borre la base de datos cuando se purgue el paquete slapd? : No
* ¿Desea mover la base de datos antigua? Si
* ¿Permitir el protocolo LDAPv2? Si

# aptitude install apache2 php5 php5-imagick php5-imap php5-pgsql

** Configuring libc-client2002edebian
* Continue installing libc-client without Maildir support? Si

# aptitude install php5-ldap php5-mysql libapache-mod-php5 php5-common
# aptitude install php5-tidy php5-xmlrpc php5-xls php5-snmp

Instalación de GOSA

# aptitude install gosa gosa-schema

Iniciamos ldap y todo debería de funcionar bien

# /etc/init.d/slapd start

Editamos /etc/php5/apache2/php.ini

# nano /etc/php5/apache2/php.ini

Cambiamos memory_limit = 16M por memory_limit = 64M
session.gc_maxlifetime = 86400


Luego copiamos los esquemas que usaremos para gosa

# cp /usr/share/doc/gosa/contrib/openldap/samba3.schema.gz /etc/ldap/schema/
# cp /usr/share/doc/gosa/contrib/openldap/trust.schema /etc/ldap/schema/

# cd /etc/ldap/schema/
# gunzip samba3.schema.gz

# nano /etc/ldap/slapd.conf

Agregar lo siguiente: (los 4 primeros include ya los tendrán, son colocados como referencia para que sepan el orden en que van)

==================================================
# Schema and objectClass definitions
include /etc/ldap/schema/core.schema
include /etc/ldap/schema/cosine.schema
include /etc/ldap/schema/nis.schema
include /etc/ldap/schema/inetorgperson.schema

#Esquemas de GoSA
include /etc/ldap/schema/samba3.schema
include /etc/ldap/schema/trust.schema
include /etc/ldap/schema/gosystem.schema
include /etc/ldap/schema/gofon.schema
include /etc/ldap/schema/goto.schema
include /etc/ldap/schema/gosa+samba3.schema
include /etc/ldap/schema/gofax.schema
include /etc/ldap/schema/goserver.schema
include /etc/ldap/schema/goto-mime.schema

schemacheck on
password-hash {MD5}

==================================================

Ahora nos falta agregar los ldiff que necesitará GoSA, si usamos ldapadd debemos primero detener slapd

# /etc/init.d/slapd stop

# slapadd -l people.ldif
# slapadd -l machines.ldif
# slapadd -l groups.ldif

# /etc/init.d/slapd start


Ahora Configuraremos GoSA

http://ip_server/gosa/setup.php

Relativamente esto es sencillo, solo hay que hacer unos ajustes simples y todo debe funcionar.
Las dos primeras pantallas son para verificar si nos falta algún módulo que querramos tener, si hace falta alguno, agregarlos. Luego en las siguientes solo hay que agregar lo siguiente:

1.- cambiar [Example] por el Nombre de su Empresa por ejemplo: RO Corp.
2.- luego nos pide el dn y la clave del usuario ldap, que según este ejemplo sería así:
DN: cn=admin, dc=midominio, dc=com, dc=ve
--- "admin" es el nombre que usé para el login del usuarios administrador del LDAP
Passwd: 123456
--- "123456" es la clave que usé para el login del usuarios administrador del LDAP
Este login y clave es el que configuraron cuando reconfiguraron slapd

3.- Base: dc=midominio, dc=com, dc=ve

teóricamente no deben modificar más nada, deben tener en cuenta que al darle check el único error que debe arrojar es que aun no se ha creado un usuario y clave para el administrador de GoSA, así que omitir el error y crear el usuario y clave del admin gosa en la pantalla que corresponde.

Luego les aparecerá una pantalla para generar el gosa.conf, generen este archivo y creen un archivo en el servidor y copien todo de este, o sencillamente copien el archivo en el server gosa en la ruta siguiente:

/etc/gosa/gosa.conf

luego debemos cambiarle los permisos:

# chown root.www-data /etc/gosa/gosa.conf
# chmod 640 /etc/gosa/gosa.conf


Instalando Samba....

# aptitude install smbldap-tools
# aptitude install samba samba-doc


Nombre del dominio o del grupo de trabajo: midominio.com.ve
¿Modificar smb.conf para usar la configuración WINS que proviene de DHCP? No


CREACION DE CARPETAS PARA SAMBA
#mkdir /home/samba/
#mkdir /home/samba/netlogon
#mkdir /home/samba/profiles


INSTALACION DE MKNTPWD
$ cd /opt/
$ wget http://www.silcom.com.pe/soft/mkntpwd.tar.gz
$ tar -zxf mkntpwd.tar.gz
$ cd mkntpwd
$ make
$ cp mkntpwd /usr/local/bin
VERIFICAR
#mkntpwd
Usage: mkntpwd [-L lanmgrpwd] [-N ntpasswd]
mkntpwd password
mkntpwd -f [-] [filename]

-L lanmgrpasswd LanManager cleartextpwd <= 14 chars
-N ntpasswd NT cleartextpwd <=128 chars (usually <=14)

with both options present the encrypted LanManager-Pwd is
printed first, followed by a ‘:’ and the encrypted NT-Pwd.

The second usage behaves like mkntpwd -L pwd -N pwd

The third usage reads the password from STDIN or a File. Printout
is the same as second.

anton@genua.de


CONFIGURACIÓN DE SAMBA
# cd /etc/samba
# cp smb.conf smb.conf.bkp
# vi smb.conf

EL ARCHIVO QUEDARA DE LA SIGUIENTE FORMA:

=========================================================================
# /etc/samba/smb.conf
# archivo de configuracion de samba
[global]
# configuracion basica del servidor
workgroup = RODRIA
netbios name = pdc
server string = Samba PDC Version %v
socket options = TCP_NODELAY IPTOS_LOWDELAY SO_SNDBUF=8192 SO_RCVBUF=8192
# configuracion para que la maquina sea el PDC master
os level = 65
preferred master = yes
local master = yes
domain master = yes
domain logons = yes
# configuracion de seguridad y conexion
security = user
guest ok = no
encrypt passwords = yes
null passwords = no
# hosts allow es para que solo permita las maquinas de la LAN (192.168.0.x)
hosts allow = 127.0.0.1 192.168.100.0/255.255.255.0
wins support = yes
name resolve order = wins lmhosts host bcast

dns proxy = no
# otras configuraciones varias para SAMBA
log file = /var/log/samba/log.%m
log level = 2
max log size = 50
hide unreadable = yes
hide dot files = yes
# parametros para el soporte de LDAP
passdb backend = ldapsam:ldap://127.0.0.1
ldap suffix = dc=rodria,dc=com,dc=ve
ldap machine suffix = ou=machines
ldap user suffix = ou=people
ldap group suffix = ou=groups
ldap admin dn = cn=admin,dc=rodria,dc=com,dc=ve
ldap delete dn = no
enable privileges = yes
# para permitir a los usuarios cambiar su clave desde Windows
ldap password sync = yes
# perfiles moviles de usuario, carpeta home y script de inicio
logon home = \\%L\%U\.profile
logon drive = H:
logon path = \\%L\profiles\%U
logon script = netlogon.bat OR %U.bat
# script para automatizar la adicion de cuentas de maquinas
# al arbol LDAP cuando estas se unan por primera vez al dominio
add machine script = /usr/sbin/smbldap-useradd -w "%u"
unix charset = ISO8859-1

#=== Recursos SAMBA ===
# ruta en donde se alojaran el(los) script(s) de inicio
[netlogon]
path = /home/samba/netlogon
guest ok = no
read only = yes
browseable = no
# carpetas home de los usuarios
[homes]
path = /home/%U
comment = Carpetas HOME
root preexec = /etc/samba/mk_sambadir “/home/%u” “%u” “%g”
browseable = no
writeable = yes
valid users = %S
read only = no
guest ok = no
inherit permissions = yes
# carpeta en donde se guardan los perfiles de los usuarios
[profiles]
path = /home/samba/profiles
writeable = yes
browseable = no
default case = lower
preserve case = no
short preserve case = no
case sensitive = no
hide files = /desktop.ini/ntuser.ini/NTUSER.*/
create mask = 0600
directory mask = 0700
csc policy = disable

=======================================================================

PROBAR LA CONFIGURACIÓN
#testparm

Load smb config files from /etc/samba/smb.conf
Processing section “[netlogon]”
Processing section “[homes]”
Processing section “[profiles]”
Loaded services file OK.
Server role: ROLE_DOMAIN_PDC
Press enter to see a dump of your service definitions


LE DAMOS A CONTRASEÑA DE LDAP A SAMBA
#smbpasswd -w 123456

REINICIAR SAMBA
# /etc/init.d/samba restart


VOLVER A PHPLDAPADMIN Y VERIFICAR LA ENTRADA
sambaDomainName=RODRIA
IDENTIFICAR EL SID DEL DOMINIO ejem :
S-1-5-21-2893205429-3405179508-402743511
CREACIÓN DE GRUPOS DE DOMINIO
DENTRO DE PHPLDAPADMIN EN CONTENEDOR “groups” ELEGIR CREAR “New
Samba3 Group Mapping” Y CREAR LOS SIGUIENTES GRUPOS:

Group: Windows Name: Gid: samba sid:
sambaadmins Domain Admins 20000 512
sambausers Domain Users 20001 513
sambaguests Domain Guests 20002 514
sambamachines Domain Computers 20003 515



INTEGRACIÓN DE LA AUTENTIFICACION Y LDAP
INSTALACIÓN NSS LDAP

#aptitude install libnss-ldap

#dpkg-reconfigure libnss-ldap

Servidor LDAP : 127.0.0.1
Nombre distintivo (DN) : dc=rodria,dc=com,dc=ve
Vercion de LDAP a utilizar : 3
Hace falta un usuario para acceder a la base de datos ldap : No
Dar privilegios especiales de ldap para root : SI
Desea hacer que la configuracion solo pueda leer o escribir el propietario : SI
Cuenta ldap para root : cn=admin,dc=rodria,dc=com,dc=ve
contraseña ldap para root : 123456


CONFIGURACION
#vi /etc/nsswitch.conf

Estas líneas deberán quedar de la siguiente manera:

passwd: compat ldap
group: compat ldap
shadow: compat ldap


COMPROBAR
# getent group

DEBE MOSTRAR
sambaadmins:*:20000:
sambausers:*:20001:
sambaguests:*:20002:
sambamachines:*:20003:


INSTALACION PAM LDAP

# aptitude install libpam-ldap
# dpkg-reconfigure libpam-ldap

Servidor ldap : 127.0.0.1
Nombre distintivo : dc=rodria,dc=com,dc=ve
Vercion de ldap : 3
Make local root Database admin : si
Hace falta un usuario para la base de datos LDAP : no
Ldap account for root : cn=admin,dc=rodria,dc=com,dc=ve
contraseña para la cuenta ldap de root : 123456
Local crypt to use when changing passwords : md5

# vi /etc/pam.d/common-account


COMENTAR
account required pam_unix.so

Y AGREGAR
account sufficient pam_ldap.so
account required pam_unix.so try_first_pass

#vi /etc/pam.d/common-auth

COMENTAR
auth required pam_unix.so nullok_secure

Y AGREGAR
auth sufficient pam_ldap.so
auth required pam_unix.so nullok_secure use_first_pass

# vi /etc/pam.d/common-password
COMENTAR
password required pam_unix.so nullok obscure min=4 max=8 md5

Y AGREGAR AL FINAL
password sufficient pam_ldap.so
password required pam_unix.so nullok obscure min=4 max=8 md5 use_first_pass


INSTALACION DE NSCD
# aptitude install nscd


REINICIAR SAMBA
/etc/init.d/samba restart

####################################################################################
AGREGAR USUARIOS
En la “UO” users crear un nuevo “Samba3 Account” se creara el usuario
“administrator” que tendra permisos para ingresar maquinas al dominio
y otro usuario “rodria” que pertenecera al grupo adminstradores y otro llamado
“usuario” que solo será un usuario de dominio , esto se hará de la siguiente
forma :

Fist Name : Administrador
Last Name : Global
Comon Name : Administrador
User ID : administrador
UID Number : 0
Samba SID : 512
Password : 123456
Verify Password : 123456
Gid number : sambaadmins
Primary Group ID : sambaadmins
Home Directory : /home/administrador

Fist Name : Raul
Last Name : Odria
Comon Name : Raul Odria
User ID : rodria
UID Number : 10000
Samba SID : 512
Password : 123456
Verify Password : 123456
Gid number : sambaadmins
Primary Group ID : sambaadmins
Home Directory : /home/rodria

Fist Name : Pedro
Last Name : Perez
Comon Name : Pedro Perez
User ID : pperez
UID Number : 10001
Samba SID : 513
Password : 123456
Verify Password : 123456
Gid number : sambausers
Primary Group ID : sambausers
Home Directory : /home/sebastian


VERIFICAR LA CREACIÓN DE USUARIOS EN LINUX
# getent passwd
administrador:*:0:20000:Administrador:/home/administrador:
rodria:*:10000:20000:Raul Odria:/home/rodria:
pperez:*:10001:20001:Pedro Perez:/home/pperez:

CREACION DE HOME
# mkdir /home/rodria
# cp /etc/skel/.* /home/rodria/
# chown -R rodria /home/rodria
# chgrp -R sambaadmins /home/rodria

# mkdir /home/pperez
# cp /etc/skel/.* /home/pperez
# chown -R pperez /home/pperez
# chgrp -R sambausers /home/pperez


AUTOMATIZANDO INGRESO DE CUENTAS MAQUINA A LDAP
# cd /usr/share/doc/smbldap-tools/examples
# cp smbldap.conf.gz smbldap_bind.conf /etc/smbldap-tools
# cd /etc/smbldap-tools
# gunzip smbldap.conf.gz
# chown root:root *
# chmod 600 *

HAY QUE EDITAR 2 ARCHIVOS

#vi /etc/smbldap-tools/smbldap_bind.conf
slaveDN="cn=admin,dc=rodria,dc=com,dc=ve"
slavePw="123456"
masterDN="cn=admin,dc=rodria,dc=com,dc=ve"
masterPw="123456"
smbldap.conf

#vi /etc/smbldap-tools/smbldap.conf

SID="S-1-5-21-2893205429-3405179508-402743511"
sambaDomain="RODRIA"

slaveLDAP="127.0.0.1"
slavePort="389"
masterLDAP="127.0.0.1"
masterPort="389"
ldapTLS="0"
verify="none"
cafile=""
clientcert=""
clientkey=""
suffix="dc=rodria,dc=com,dc=ve"
usersdn="ou=people,${suffix}"
computersdn="ou=machines,${suffix}"
groupsdn="ou=groups,${suffix}"
groups
sambaUnixIdPooldn="sambaDomainName=RODRIA,${suffix}"
scope="sub"
hash_encrypt="MD5"
crypt_salt_format="%s"
userLoginShell="/bin/bash"
userHome="/home/%U"
userHomeDirectoryMode="700"
userGecos="System User"
defaultUserGid="513"
defaultComputerGid="20003"
skeletonDir="/etc/skel"
userSmbHome=""
userProfile=""
userHomeDrive="H:"
userScript="logon.bat"
mailDomain="rodria.com.ve"
with_smbpasswd="0"
smbpasswd="/usr/bin/smbpasswd"
with_slappasswd="0"
slappasswd="/usr/sbin/slappasswd"



POR ULTIMO
# cp smbldap_bind.conf /etc/
# cp smbldap.conf /etc/

AGREGANDO OBJECTCLASS

Tenemos que ir al phpldapadmin vamos a agragar el atributo SAMBAUNIXIDPOOL para el dominio samba
nos ubicamos en sambaDomainName=RODRIA
En la etiqueta objectClass agragamos un nuevo valor "add value" Seleccionamos SAMBAUNIXIDPOOL
En la Siguiente ventana colocaremos:
GID: 20003 Corresponde al Grupo sambamachines
UID: 30000 Número inicial que usaremos para las cuentas de máquinas
Una vez hecho esto, ya podemos registrar nuestras máquinas win$ el dominio

ANEXO 1
CREACIÓN DE HOMES POR DEFECTO

Crear el archivo /etc/samba/mk_sambadir con lo siguiente:

#!/bin/bash
if [ ! -d $1 ]
then
mkdir $1
fi
chmod 770 $1 -R
chown $2 $1 -R
chgrp $3 $1 -R

###############

Luego REINICIAR SAMBA

# /etc/init.d/samba restart


ANEXO2

PRUEBA 1

PODER VALIDAR POR SSH AL PDC, SI BIEN ES CIERTO LOS USUARIOS DEL DOMINIO
NO TIENEN SHELL DEBERIA SER POSIBLE HACER UN INICIO VIA SSH
#ssh -l administrador 192.168.100.5
#ssh -l rodria 192.168.100.5

PRUEBA 2
PODER VALIDAR DESDE UN WIN$ AUN ASI NO SE HALLA UNIDO AL DOMINIO, SIN
PERTENECER AL DOMINIO DEBERÍA PODER VALIDAR COMO UN SIMPLE SERVER DE
ARCHIVOS
\\pdc\rodria


Para Registrar máquinas con Windows XP se debe crear/modificar la siguiente etiqueta de registro usando regedit

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Netlogon\Parameters]
"requiresignorseal"=dword:00000000

Si nos sale este error al tratar de meter el equipo al dominio:
"Las conexiones múltiples para un servidor o recurso compartido compatible por el musmo usuario, usando más de un nombre de usuario, no están permitidas. Desconecte todas las conexiones anteriores al servidor o recursos compartidos y vuelva a intentarlo de nuevo."
Debemos correr esto en una consola DOS:
net use * /d /y

No hay comentarios.: