Canales populares

[Tutorial] Dominio de Red en Slackware 13 (Samba+LDAP)

Dominio de Red con Samba + LDAP en Slackware 13


Bien, la razón de este tutorial, es que las veces que busque como realizar esto para Slackware nunca encontré un Tutorial o Howto que hablara de como configurar un Dominio con Samba en dicha distribución. La mayoria de los tutoriales se basan en Debian o RedHat. Como mi distribución preferida es Slackware, decidi armar este manual.


Software Utilizado:

Sistema Operativo: Slackware 13
OpenLDAP: 2.4.21
Cyrus-SASL: 2.1.23
Linux-PAM: 1.1.1
CVSTools: 10.3.1
pam_ldap: 185
nss_ldap: 265
Samba: 3.2.13
PHP: 5.3.1
LDAP Account Manager: 2.9.0
smbldaptools: 0.9.2

Instalación


OpenLDAP


[email protected]:~/Dominio# wget ftp://ftp.openldap.org/pub/OpenLDAP/openldap-stable/openldap-stable-20100219.tgz
[email protected]:~/Dominio# tar -zxvf openldap-stable-20100219.tgz
[email protected]:~/Dominio# cd openldap-2.4.21/
[email protected]:~/Dominio/openldap-2.4.21# ./configure --prefix=/usr --sysconfdir=/etc --localstatedir=/var --enable-crypt --without-cyrus-sasl --with-tls
[email protected]:~/Dominio/openldap-2.4.21# make depend
[email protected]:~/Dominio/openldap-2.4.21# make
[email protected]:~/Dominio/openldap-2.4.21# make install


Creamos el archivo de inicio del servicio rc.openldap en /etc/rc.d/ con el siguiente contenido:

#=============== Begin Script=================
#!/bin/sh
## Slackware Script to initialize LDAP Server

ldap_start() {
if [ -x /usr/libexec/slapd ]; then
echo "Starting LDAP Server"
/usr/libexec/slapd -4
fi
}
ldap_stop() {
killall slapd
killall slapd
}
ldap_restart() {
sh $0 stop
sleep 1
sh $0 start
}
case "$1" in
'start')
ldap_start
;;
'stop')
ldap_stop
;;
'restart')
ldap_restart
;;
*)
echo "Usage $0 start|stop|restart"

#============== End Script =================


Darle permisos de ejecución al script de inicio de LDAP:

chmod +x /etc/rc.d/rc.openldap

Editar el archivo /etc/rc.d/rc.M, buscar donde esta la ejecución del script de LDAP, copiarlo y pegarlo justo antes del script del messagebus. Esto es necesario ya que dicho script necesita que el LDAP este ejecutandose.

Copiar el esquema de Samba para LDAP:

[email protected]:~/Dominio# cp /usr/doc/samba-3.2.13/examples/LDAP/samba.schema /etc/openldap/schema/

Cyrus-Sasl


[email protected]:~/Dominio# wget http://ftp.andrew.cmu.edu/pub/cyrus-mail/cyrus-sasl-2.1.23.tar.gz
[email protected]:~/Dominio# tar -zxvf cyrus-sasl-2.1.23.tar.gz
[email protected]:~/Dominio# cd cyrus-sasl-2.1.23
[email protected]:~/Dominio/cyrus-sasl-2.1.23# ./configure –prefix=/usr
[email protected]:~/Dominio/cyrus-sasl-2.1.23# make
[email protected]:~/Dominio/cyrus-sasl-2.1.23# make install

Linux-PAM


[email protected]:~/Dominio# wget http://www.us.kernel.org/pub/linux/libs/pam/library/Linux-PAM-1.1.1.tar.gz
[email protected]:~/Dominio# tar -zxvf Linux-PAM-1.1.1.tar.gz
[email protected]:~/Dominio# cd Linux-PAM-1.1.1
[email protected]:~/Dominio/Linux-PAM-1.1.1# ./configure --prefix=/usr
[email protected]:~/Dominio/Linux-PAM-1.1.1# make
[email protected]:~/Dominio/Linux-PAM-1.1.1# make install


CVSTools


[email protected]:~/Dominio# wget http://www.padl.com/download/CVSTools.tar.gz
[email protected]:~/Dominio# cd CVSTools-10.3.1/
[email protected]:~/Dominio/CVSTools-10.3.1# make


pam_ldap


[email protected]:~/Dominio# wget http://www.padl.com/download/pam_ldap.tgz
[email protected]:~/Dominio# tar -zxvf pam_ldap.tgz
[email protected]:~/Dominio# cd pam_ldap-185/
[email protected]:~/Dominio/pam_ldap-185# ./configure --prefix=/usr –sysconfdir=/etc
[email protected]:~/Dominio/pam_ldap-185# make
[email protected]:~/Dominio/pam_ldap-185# make install
[email protected]:~/Dominio/pam_ldap-185# cp -r pam.d /etc/


nss_ldap


[email protected]:~/Dominio# wget http://www.padl.com/download/nss_ldap.tgz
[email protected]:~/Dominio# tar -zxvf nss_ldap.tgz
[email protected]:~/Dominio# cd nss_ldap-265/
[email protected]:~/Dominio/nss_ldap-265# ./configure --prefix=/usr –sysconfdir=/etc
[email protected]:~/Dominio/nss_ldap-265# make
[email protected]:~/Dominio/nss_ldap-265# make install

Modificar las siguientes lineas en el archivo /etc/nsswitch.conf:

passwd: compat
group: compat


cambiarlas por:

passwd: files ldap
group: files ldap


y agregar:

shadow: files ldap

De esta manera el sistema va a poder usar los usuarios de LDAP como de sistema.


PHP


[email protected]:~/Dominio# wget http://ar2.php.net/get/php-5.3.1.tar.gz/from/this/mirror
[email protected]:~/Dominio# tar -zxvf php-5.3.1.tar.gz
[email protected]:~/Dominio# cd php-5.3.1
[email protected]:~/Dominio/php-5.3.1# ./configure --with-apxs2=/usr/sbin/apxs --with-pear --with-mysql --prefix=/usr --with-config-file-path=/etc/httpd/php --disable-cgi --with-zlib --with-gettext –with-gdbm --with-ldap
[email protected]:~/Dominio/php-5.3.1# make
[email protected]:~/Dominio/php-5.3.1# make test
[email protected]:~/Dominio/php-5.3.1# make install


LDAP Account Manager


[email protected]:~/Dominio# wget http://downloads.sourceforge.net/project/lam/LAM/2.9.0/ldap-account-manager-2.9.0.tar.gz?use_mirror=ufpr
[email protected]:~/Dominio# tar -zxvf ldap-account-manager-2.9.0.tar.gz
[email protected]:~/Dominio# cd ldap-account-manager-2.9.0
[email protected]:~/Dominio/ldap-account-manager-2.9.0# mkdir /var/www/htdocs/lam
[email protected]:~/Dominio/ldap-account-manager-2.9.0# cp -r . /var/www/htdocs/lam/.
[email protected]:~/Dominio/ldap-account-manager-2.9.0# cd /var/www/htdocs/lam/config
[email protected]:/var/www/htdocs/lam/config# cp config.cfg_sample config.cfg
[email protected]:/var/www/htdocs/lam/config# chown -R apache.apache /var/www/htdocs/lam


smbldaptools


[email protected]:~/Dominio# wget http://downloads.sourceforge.net/project/smbldap-tools/smbldap-tools/0.9.2/smbldap-tools-0.9.2a.tgz?use_mirror=ufpr
[email protected]:~/Dominio# tar -zxvf smbldap-tools-0.9.2a.tgz
[email protected]:~/Dominio# cd smbldap-tools-0.9.2

Copiar todos los scripts en /usr/sbin/

Crear el directorio /etc/smbldap-tools y copiar dentro los archivos smbldap.conf y smbldap-bind.conf.

Configurar los 2 archivos de acuerdo a su arbol LDAP.

Setear los permisos de los 2 archivos de la manera siguiente:

chmod 644 /etc/smbldap-tools/smbldap.conf
chmod 600 /etc/smbldap-tools/smbldap-bind.conf

Instalar los siguientes modulos de PERL:

Jcode, Unicode::Map, Unicode::Map8, Unicode::MapUTF8, Unicode::String y Net::Ldap

La instalación de los módulos de PERL se pueden realizar desde Webmin o desde la página de CPAN (http://search.cpan.org/)

Ejecutar smbldap-populate para que se cree la estructura dentro del Directorio LDAP para el Dominio.




Configuración



OpenLDAP


Crear el archivo slapd.conf en /etc/openldap/ similar al siguiente:

#================= Begin File==================

# 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/nis.schema
include /etc/openldap/schema/inetorgperson.schema
include /etc/openldap/schema/samba.schema


# 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.
#referral ldap://root.openldap.org

pidfile /var/run/slapd.pid
argsfile /var/run/slapd.args

password-hash {CRYPT}

loglevel 128

# Load dynamic backend modules:
# modulepath /usr/libexec/openldap
# moduleload back_bdb.la
# moduleload back_hdb.la
# moduleload back_ldap.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:
# Root DSE: allow anyone to read it
# 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
#######################################################################

backend bdb
database bdb
suffix "dc=dominioprueba"
rootdn "cn=admin,dc=dominioprueba"
# Cleartext passwords, especially for the rootdn, should
# be avoid. See slappasswd(8) and slapd.conf(5) for details.
# Use of strong authentication encouraged.
rootpw {CRYPT}kB5RQDcB2VYP6
# The database directory MUST exist prior to running slapd AND
# should only be accessible by the slapd and slap tools.
# Mode 700 recommended.
directory /var/openldap-data
# Indices to maintain
index objectClass eq
index cn pres,sub,eq
index sn pres,sub,eq
index uid pres,sub,eq
index displayName pres,sub,eq
index uidNumber eq
index gidNumber eq
index memberUID eq
index sambaSID eq
index sambaPrimaryGroupSID eq
index sambaDomainName eq
index default sub

#==================== End File =================


Obtener la clave {CRYPT} de la siguiente manera:

[email protected]:~/Dominio# slappasswd -c {CRYPT}
New password:
Re-enter new password:
{CRYPT}{CYFPLOayMlVo


Modificar las variables de "base" y "host" en /etc/openldap/ldap.conf y /etc/ldap.conf acorde con la configuracion de su server LDAP.


Samba


Editar el archivo /etc/samba/smb.conf para que quede similar al siguiente:

#===================== Begin File========================



interfaces = eth0
bind interfaces only = true
hosts allow = 192.168. 127.

workgroup = DOMINIOPRUEBA
netbios name = PDC
server string = PDC Server

log level = 4
log file = /var/log/samba/%m.log
max log size = 100000

deadtime = 15
socket options = TCP_NODELAY SO_RCVBUF=8192 SO_SNDBUF=8192

time server = yes
dos charset = 850
unix charset = UTF8

domain logons = yes
domain master = yes
local master = yes
preferred master = yes
os level = 255
wins support = yes
acl compatibility = win2k
nt acl support = yes
map acl inherit = yes
inherit acls = yes

security = user
#min password length = 5
encrypt passwords = yes


admin users = Administrador
passdb backend = ldapsam:ldap://localhost

ldap admin dn = cn=admin,dc=dominioprueba
ldap delete dn = yes
ldap suffix = dc=dominioprueba
ldap user suffix = ou=Users
ldap idmap suffix = ou=Idmap
ldap group suffix = ou=Groups
ldap machine suffix = ou=Computers

ldap ssl = off
ldap passwd sync = yes

add group script = /usr/sbin/smbldap-groupadd -p
delete user from group script = /usr/sbin/smbldap-groudel -p
add machine script = /usr/sbin/smbldap-useradd -w %u

# root preexec = /usr/local/bin/genlogon.pl %m %U %a %g %L
logon script = logon.bat
# logon script = scripts%m%U.bat
logon drive = L:
logon path =
logon home =

admin users = Administrador
create mask = 0640
directory mask = 0750
case sensitive = No
dont descend = /proc,/dev,/etc,/lib,/lost+found,/initrd

# This will prevent nmbd to search for NetBIOS names through DNS.
dns proxy = no

# What naming service and in what order should we use to resolve host names
# to IP addresses
name resolve order = lmhosts host wins bcast

# Do something sensible when Samba crashes: mail the admin a backtrace
# panic action = /usr/share/samba/panic-action %d

# Cups

load printers = Yes
printing = cups
printcap name = cups
use client driver = no

#==================== Share Definitions =======================


comment = Directorios de usuarios
path = %H
valid users = %S
read only = No
browseable = No
create mask = 0600
directory mask = 0700

[netlogon]
comment = Network Logon Service
path = /opt/samba/netlogon
locking = No
write list = @"Domain Admins"

# FIXME

comment = All Printers
valid users =
browseable = no
path = /var/spool/samba
printable = yes
public = no
writable = no
create mode = 0700
printer admin = @"Domain Admins"

# FIXME
# Windows clients look for this share name as a source of downloadable
# printer drivers
[print$]
comment = Printer Drivers
path = /usr/share/cups/drv
browseable = yes
read only = yes
guest ok = no
write list = @"Domain Admins"

#===================== End File =========================


Agregar la cuenta Admin del Directorio LDAP al Samba:

[email protected]:~# smbpasswd -w CLAVE-ADMIN-DEL-LDAP
Setting stored password for "cn=admin,dc=dominioprueba" in secrets.tdb


Ldap Account Manager


ingresar en la dirección http://ipdelserver/lam, y luego en "LAM Configuration" o "Configuración LAM", dependiendo de en que idioma este seteado. La clave por defecto para ingresar en la edición de configuraciones es "lam".

Elegir "Editar la configuracion general "o ""Edit general settings" para editar las configuraciones globales del LAM o para cambiar el master password.

Elegir "Editar perfil del servidor" o "Edit server profiles" para agregar el perfil para su Directorio LDAP.


File System con ACL


Editar el archivo /etc/fstab para agregar al sistema de archivos que usen la posibilidad de dar permisos por ACL. Los permisos con ACL son permisos mejorados, ya que son permisos extendidos que mejoran el tipico permiso de owner,group,other estandar de todo sistema Linux.

File System sin ACL:
/dev/hda2 / ext4 defaults 1 1

File System con ACL:
/dev/hda2 / ext4 defaults,acl 1 1


Notas Finales


Con esto ya tienen un Dominio Samba, sobre Slackware 13 con autenticación LDAP. Les aconsejo instalar el Webmin, que es una aplicación Web desde la cual se pueden configurar muchos aspectos del Servidor, y les va a servir mas que nada para configurar los recursos compartidos por Samba, sean directorios o impresoras, y los permisos de los mismos, para lo cual recomiendo le instalen el módulo de ACLs.

Espero les sirva y por cualquier consulta no duden en preguntar.
0
0
0
0No hay comentarios