Dominio Samba + LDAP en Slackware 13
- Dominio 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.2InstalaciónOpenLDAP
root@domainsrv:~/Dominio# wget ftp://ftp.openldap.org/pub/OpenLDAP/...e-20100219.tgz
root@domainsrv:~/Dominio# tar -zxvf openldap-stable-20100219.tgz
root@domainsrv:~/Dominio# cd openldap-2.4.21/
root@domainsrv:~/Dominio/openldap-2.4.21# ./configure --prefix=/usr --sysconfdir=/etc --localstatedir=/var --enable-crypt --without-cyrus-sasl --with-tls
root@domainsrv:~/Dominio/openldap-2.4.21# make depend
root@domainsrv:~/Dominio/openldap-2.4.21# make
root@domainsrv:~/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:
root@domainsrv:~/Dominio# cp /usr/doc/samba-3.2.13/examples/LDAP/samba.schema /etc/openldap/schema/Cyrus-Sasl
root@domainsrv:~/Dominio# wget http://ftp.andrew.cmu.edu/pub/cyrus-...-2.1.23.tar.gz
root@domainsrv:~/Dominio# tar -zxvf cyrus-sasl-2.1.23.tar.gz
root@domainsrv:~/Dominio# cd cyrus-sasl-2.1.23
root@domainsrv:~/Dominio/cyrus-sasl-2.1.23# ./configure prefix=/usr
root@domainsrv:~/Dominio/cyrus-sasl-2.1.23# make
root@domainsrv:~/Dominio/cyrus-sasl-2.1.23# make installLinux-PAM
root@domainsrv:~/Dominio# wget http://www.us.kernel.org/pub/linux/l...M-1.1.1.tar.gz
root@domainsrv:~/Dominio# tar -zxvf Linux-PAM-1.1.1.tar.gz
root@domainsrv:~/Dominio# cd Linux-PAM-1.1.1
root@domainsrv:~/Dominio/Linux-PAM-1.1.1# ./configure --prefix=/usr
root@domainsrv:~/Dominio/Linux-PAM-1.1.1# make
root@domainsrv:~/Dominio/Linux-PAM-1.1.1# make installCVSTools
root@domainsrv:~/Dominio# wget http://www.padl.com/download/CVSTools.tar.gz
root@domainsrv:~/Dominio# cd CVSTools-10.3.1/
root@domainsrv:~/Dominio/CVSTools-10.3.1# makepam_ldap
root@domainsrv:~/Dominio# wget http://www.padl.com/download/pam_ldap.tgz
root@domainsrv:~/Dominio# tar -zxvf pam_ldap.tgz
root@domainsrv:~/Dominio# cd pam_ldap-185/
root@domainsrv:~/Dominio/pam_ldap-185# ./configure --prefix=/usr sysconfdir=/etc
root@domainsrv:~/Dominio/pam_ldap-185# make
root@domainsrv:~/Dominio/pam_ldap-185# make install
root@domainsrv:~/Dominio/pam_ldap-185# cp -r pam.d /etc/nss_ldap
root@domainsrv:~/Dominio# wget http://www.padl.com/download/nss_ldap.tgz
root@domainsrv:~/Dominio# tar -zxvf nss_ldap.tgz
root@domainsrv:~/Dominio# cd nss_ldap-265/
root@domainsrv:~/Dominio/nss_ldap-265# ./configure --prefix=/usr sysconfdir=/etc
root@domainsrv:~/Dominio/nss_ldap-265# make
root@domainsrv:~/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
root@domainsrv:~/Dominio# wget http://ar2.php.net/get/php-5.3.1.tar...om/this/mirror
root@domainsrv:~/Dominio# tar -zxvf php-5.3.1.tar.gz
root@domainsrv:~/Dominio# cd php-5.3.1
root@domainsrv:~/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
root@domainsrv:~/Dominio/php-5.3.1# make
root@domainsrv:~/Dominio/php-5.3.1# make test
root@domainsrv:~/Dominio/php-5.3.1# make installLDAP Account Manager
root@domainsrv:~/Dominio# wget http://downloads.sourceforge.net/pro...se_mirror=ufpr
root@domainsrv:~/Dominio# tar -zxvf ldap-account-manager-2.9.0.tar.gz
root@domainsrv:~/Dominio# cd ldap-account-manager-2.9.0
root@domainsrv:~/Dominio/ldap-account-manager-2.9.0# mkdir /var/www/htdocs/lam
root@domainsrv:~/Dominio/ldap-account-manager-2.9.0# cp -r . /var/www/htdocs/lam/.
root@domainsrv:~/Dominio/ldap-account-manager-2.9.0# cd /var/www/htdocs/lam/config
root@domainsrv:/var/www/htdocs/lam/config# cp config.cfg_sample config.cfg
root@domainsrv:/var/www/htdocs/lam/config# chown -R apache.apache /var/www/htdocs/lamsmbldaptools
root@domainsrv:~/Dominio# wget http://downloads.sourceforge.net/pro...se_mirror=ufpr
root@domainsrv:~/Dominio# tar -zxvf smbldap-tools-0.9.2a.tgz
root@domainsrv:~/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ónOpenLDAP
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:
root@domainsrv:~/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========================
[global]
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 =======================
[homes]
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
[printers]
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:
root@domainsrv:~# smbpasswd -w CLAVE-ADMIN-DEL-LDAP
Setting stored password for "cn=admin,dc=dominioprueba" in secrets.tdbLdap 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 1Notas 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 -
El administrador del dominio tiene acceso a los clientes windows?, porque de ser asi el caso, podes configurarlo en los clientes. Ahora, si es una empresa grande donde no se tiene control de los clientes windows, habria ahi si, que ver alguna politica de LDAP o de Samba para bloquear el acceso a los USB, lo cual por el momento no he encontrado.
-
Ok, recien estuve investigando, porque la verdad nunca se me habia presentado el caso, y veo que Samba tiene la posibilidad de bloquear todo tipo de accesos en los clientes windows, para lo cual hay que crear un archivo de politicas con una aplicacion que venia con Windows98, el poledit.exe, y el archivo de politicas hay que ponerlo en la carpeta NETLOGON del Samba. He visto que hay bastante info en Google de como implementar las politicas en Samba con poledit. Espero eso te sirva, de paso voy a investigar yo tambien porque me parece una muy buena utilidad.
-
Daniel, estuve viendo mas a fondo y llegue a la solución para tu tema. En primera instancia estaba correcto, es necesario usar el poledit, solo que para los clientes XP se necesita usar el poledit de Windows 2000. Hice pruebas con politicas simples como que el usuario no vea los discos de la PC, o no poder acceder al Panel de Control, y anduvo de 10, el archivo .pol que generas con el poledit tenes que nombrarlo como NTConfig.POL y colocarlo en la carpeta que samba tiene configurada para el NETLOGON. Puntualizando sobre el bloqueo de USB, encontre en google un articulo donde alguien mostraba como realizar ese bloqueo, creando un nuevo archivo de politicas (.adm), que luego lo podes cargar con el poledit y asi agregarle esa funcionalidad a la restriccion de politicas.
-
Olá parabens pelo artigo.
Desculpe mas sou brasileiro e não falo espanhol, mas consegui entender seu artigo.
Gostaria de saber quais séries você utilizou na instalação do slackware, pois acredito que você não realizou uma instalação completa.
Muito Obrigado!
Google Translator:
Hola felicitaciones sobre el artículo.
Lo siento pero yo soy brasileño y yo no hablo español, pero yo podía entender su artículo.
¿Quiere saber lo que diferencia a que utilizó en la instalación de Slackware, porque considero que no ha realizado una instalación completa.
¡Gracias!
