Mostrando entradas con la etiqueta ldap. Mostrar todas las entradas
Mostrando entradas con la etiqueta ldap. Mostrar todas las entradas

Samba: Registro de actividad

Por normal general, tarde o temprano, al trabajar sobre unidades de red y ficheros compartidos, la pregunta ¿quién ha borrado el fichero ...? llega al administrador de sistemas. Es en este momento cuando un samba mal configurado o con unas opciones de auditoría malas puede complicarte la vida.
Por suerte, samba nativamente ofrece dicha posibilidad, y únicamente para usarlo hay que emplear el módulo full_audit que viene incluido ya en las últimas versiones de samba. La forma en la que yo lo implementé creo que es la más sencilla y fácil de gestionar, y permite más modularidad. Para ello, comenzamos creando el fichero /etc/samba/audit.conf con el siguiente contenido,
vfs objects         = full_audit
 
full_audit:prefix   = %u|%I|%m|%S
full_audit:success  = mkdir rename unlink rmdir pwrite
full_audit:failure  = none
full_audit:facility = local0
full_audit:priority = INFO
Con el fichero creado, únicamente debemos de incluir este método de auditoría en aquellas carpetas compartidas que deseemos. Para hacerlo, nada más sencillo que en el fichero /etc/samba/samba.conf, añadir la siguiente línea las unidades que deseemos,
[UNIDAD DE RED]
  include   = /etc/samba/audit.conf
  path      = /srv/data
  read only = no
  ...
Tras ello, y antes de reiniciar el servicio, podemos comprobar con testparm que el fichero de configuración es válido. Si todo está correcto, entonces ya podemos reiniciar el servicio.
shell> testparm
shell> service smbd restart
shell> service nmbd restart
Desde este momento, aparecerán líneas en syslog indicando la actividad de los usuarios en el sistema.
shell> tail -f /var/log/syslog
mail|192.168.0.20|304j|user|pwrite|ok|data/file.text
fran|192.168.0.14|71aj|user|pwrite|ok|data/file.text
fran|192.168.0.14|712j|user|pwrite|ok|data/file.text
mail|192.168.0.20|304j|user|pwrite|ok|data/file.text
javier|192.168.0.25|304j|user|pwrite|ok|javier/file.text
javier|192.168.0.25|304j|user|pwrite|ok|javier/file.text
javier|192.168.0.25|304j|user|pwrite|ok|javier/file.text
Espero que os sea de utilidad. En esta salida, buscar un evento, como veis es muy sencillo.

Nota:

Significado de las líneas del fichero de auditoría:
  • vfs objects
    Indicamos que use el módulo full_audit
  • full_audit:success
    Especifica las acciones en las cuales realizar la escritura de auditoría.
    • mkdir: Creación de directorios
    • rename: Cambio de nombres
    • unlink: Borrado de ficheros
    • rmdir: Borrado de directorios
    • pwrite: Nuevos ficheros (creados o subidos)
    Aquí puedes encontrar toda la lista de opciones soportadas.
  • full_audit:failure
    Indica qué acciones se deben de escribir a auditoría en caso de que fallen.
  • full_audit:facility
    full_audit envía todo a syslog, pero permite configurarlo por si nos interesa separar o poder filtrar dichas acciones. En este caso, hemos optado por poner la facility local0, ya que suele ser de las no usadas en el sistema.
  • full_audit:priority
    Al igual que nos permite indicar la facility, también se permite indicar la prioridad. Para nosotros INFO.
  • full_audit:prefix
    Indica cómo queremos escribir la línea de log, para hacerla más legible. A continuación os deja la tabla de las variables soportadas por full_audit.
    Variable Definition
    Variables de cliente
    %a Arquitectura del cliente
    %I Dirección IP del cliente
    %m Nombre NetBIOS del cliente
    %M Nombre DNS del cliente
    Variables de usuario
    %u Nombre de usuario
    %U Nombre de usuario que el cliente solicita
    %H Directorio ~ de %u
    %g Grupo primario de %u
    %G Grupo primario de %U
    Variables de compartido
    %S Nombre del compartido
    %P Directorio del compartido
    %p Punto de montaje del compartido
    Variables del servidor
    %d ID del proceso del servidor
    %h Nombre DNS del servidor
    %L Nombre NetBIOS del servidor
    %N Directorio raís del servidor
    %v Versión de samba
    Miscellaneous variables
    %R Nivel de protocolo SMB negociado
    %T Fecha
    var Valor de una variable de entorno var
Leer más

slapd bdb_equality_candidates not indexed

Tras la instalación de un PCD y ponerlo en funcionamiento, el servidor LDAP comenzó a enviar a syslog una gran cantidad de warnings que indicaban que algo se estaba haciendo mal. Los mensajes era como estos, pero el problema no era tener una línea cada cierto tiempo, sino que cada 10 minutos estábamos teniendo unas 50 líneas aproximadas, más otras pocas que rsyslog omitía. En el mensaje, como veis está indicado el problema, y es que un campo que se considera importante no tiene un índice creado.
...
slapd[1354]: <= bdb_equality_candidates: (displayName) not indexed
slapd[1354]: <= bdb_equality_candidates: (cn) not indexed
slapd[1354]: <= bdb_equality_candidates: (displayName) not indexed
slapd[1354]: <= bdb_equality_candidates: (cn) not indexed
...
Para solucionarlo tocó hacer lo que justamente el error indicaba, indexar esos campos. Así que para ello, seguimos los siguientes pasos.
  • Parar LDAP
    shell> service slapd stop
    
  • Crear los nuevos índices
    Para hacer esto debemos editar el fichero /etc/ldap/slapd.d/cn\=config/olcDatabase\=\{1\}hdb.ldif y después de la línea "olcDbIndex: objectClass eq" añadir los índices que nos interesen.
    ...
    olcDbIndex: objectClass eq
    olcDbIndex: displayName eq
    olcDbIndex: cn eq
    ...
    
  • Reindexar la base de datos
    shell> slapindex -F /etc/ldap/slapd.d/
    
    Ojo aquí! Si este último comando lo ejecutáis como root, os saltará una advertencia de que los ficheros creados no tendrán permisos, ya que están ejecutados como root. Así que hay que establecer los permisos correctos.
  • Establecer los permisos correctos
    shell> chown -R openldap:openldap /var/lib/ldap/
    
  • Arrancar LDAP
    shell> service slapd start
    
El proceso de hacer estos cambios es aproximadamente de 3 minutos y dejaremos sin dudarlo la base de datos LDAP mejor indexada y, sobre todo, evitaremos los molestos warnings.
Leer más

LDAP, creación de /home en login

En sistemas GNU/Linux, por defecto al crear un usuario ya crea la carpeta home asociada al mismo y establece los permisos pertinentes. Sin embargo, si el sistema de autenticación es vía LDAP, el usuario no se crea nunca el local, por lo que si la home no es remota, ésta no existirá y nos dará un fallo a la hora de crearla.
Para solucionar este problema, en sistemas que se autentiquen vía LDAP, en el fichero /etc/pam.d/common-session tenemos que añadir la siguiente línea. Ésta justamente hará eso, crear el directorio home del usuario en caso de que éste no exista.
session required pam_mkhomedir.so skel=/etc/skel umask=0022
Leer más

LDAP: Restaurar copia

En la entrada anterior hablamos de cómo hacer un backup de la base de datos de LDAP. Este es un proceso que todo el mundo debería de hacer regularmente, para tener solución a algún problema que pueda suceder.
Si el problema de que LDAP se corrompe sucede, tener backup es importante y por lo tanto, vamos a ver cómo restaurar desde la copia de seguridad.
Para restaurar la copia, los pasos a seguir son:
  1. Para LDAP
    shell> /etc/init.d/slapd stop
    
  2. Restaurar los datos de LDAP
    shell> slapadd -l /var/backups/ldap.ldif
    
  3. Rehacer los índices
    shell> slapindex -v -f /etc/ldap/slapd.conf
    
  4. Arrancar LDAP
    shell> /etc/init.d/slapd start
    
De forma sencilla hemos logrado volver a tener el servicio activo y sin demasiado trabajo extra para el fallo ocasionado.
Leer más

LDAP: Copia de seguridad

En nuestro servidor samba/ldap es una práctica muy necesaria y recomendada realizar un backup diario o cada X tiempo de toda su estructura, por si por cualquier motivo se pierden dichos datos o se corrompe la base de datos, poder restaurarlo de forma rápida e inmediata. En el siguiente post mostraremos cómo restaurar la copia, pero primero es necesario realizar la copia. Para hacer eso, usaremos el comando slapcat. Aunque se puede realizar el backup con el servidor corriendo, por seguridad lo realizaremos con él apagado, para asegurarnos que no se crea un nuevo registro mientras se realizar el backup.
shell> /etc/init.d/slapd stop
shell> slapcat > /var/backups/ldap.ldif
shell> /etc/init.d/slapd start

A continuación se muestra un pequeño script que realiza un backup diario, al programarlo en cron por cada día de la semana.
#!/bin/sh
[ -x /usr/sbin/slapcat ] || exit 0
/usr/sbin/slapcat | gzip -c > /var/backups/ldap-$(date +%u).gz
Leer más

samba+ldap: grupos de dominio


Según la documentación oficial de microsoft, bajo el protocolo netbios, existen 3 tipos de grupos que forman parte de un dominio y sobre los que se pueden realizar diferentes tipos de tareas y manteniemitno. Estos són:

  • Grupo local
    Es un grupo de samba-ldap local al dominio. Esto quiere decir que éste grupo sólo estará disponible para el dominio local y en caso de que haya dominios de confianza, no estará disponible para los otros dominios del "grupo".
    Cada uno de los dominios que pertenezcan a un dominio de confianza pueden tener los mismos grupos locales, que no serán visibles entra ellos.
  • Grupo global
    Tienes las mismas propiedades que un grupo local, pero éste se distribuye entre el resto de miembros de un dominio de confianza. Los grupos globales están disponibles para todos los miembros del dominio y las personas o grupos que pertenezcan a él pueden ser aceptados y tener los permisos que se establezcan en todos los equipos miembro.
  • Grupo universal
    Un grupo universal es lo mismo que un grupo global pero a nivel de bosques miembros. Permiten asignar permisos a grupos y usuarios en cualquier equipo del bosque.
    Estos grupos son los menos empleados y solo se verían en grandes dominios con integraciones globales a dominios miembro.
Mi recomendación, siempre usar grupos locales para un dominio propio y dejar la posibilidad de usar grupos globales por si un día se forma parte de un dominio de confianza. El uso de grupos locales asegura que los permisos nunca se pierda aunque el sistema con posterioridad escale.

Leer más

Instalar smbldap-tools en SLES

smbldap-tools es un conjunto de utilidades que en la mayoría de los casos resulta muy útil para manejar y montar PCD's en GNU/Linux. En sistemas debian/ubuntu existe un paquete que permite su instalación de forma simple e inmediata.


shell> apt-cache search smbldap-tools
 smbldap-tools - Scripts to manage Unix and Samba accounts
shell> apt-get install smbldap-tools
Sin embargo en otras distribuciones contar con este paquete también simplificaría mucho las tareas de montaje y administración, especialmente las primeras, pero no está disponible... o sí.
Suse SLES es una de esas distribuciones que si preguntas por el paquete no está disponible, pero sin embargo, éste sí está disponible dentro del paquete samba-doc. Tras instalarlo con yast, ya tenemos disponible este conjunto de herramientas.
Su localización, /usr/share/doc/packages/samba/examples/LDAP/smbldap-tools-X.X.X y dentro de esta carpeta están los script perl más comunes.
shell> ls
smbldap.conf       smbldap-groupmod   smbldap-populate
smbldap-useradd    smbldap-usermod    smbldap-groupadd
smbldap-groupshow  smbldap_tools.pm   smbldap-userdel
smbldap-usershow   smbldap_bind.conf  smbldap-groupdel
smbldap-passwd     smbldap-userinfo   smb.conf  

Aunque en distribuciones como SLES no resultan demasiado necesarios, especialmente lo de manejo de usuarios, ya que yast lo hace muy bien, el script smbldap-populate sí puede resultar en ocasiones muy útil.
Para usarlo, simplemente hay que copiar los ficheros smb.confsmbldap_bind.conf a /etc, tras lo cual funcionarán igual que en una distro cualquiera.
Leer más

PDC Linux + Windows 7

samba ldap
Desde ya hace unos años Windows 7 está entre nosotros y cada vez con más fuerza, ya que el extinto Windows XP es prácticamente imposible conseguirlo en un equipo nuevo.
El gran posible que trajo consigo la implantación de Windows 7 en las redes de empresas era agregar estos nuevos equipos al dominio ya existente. Sobre todo, si este dominio era un PDC con Linux (samba + ldap).
Me tuve que pelear en su momento con ello, así que os dejo aquí una breve guía de cómo agregar un Windows 7 a un dominio Linux. Si os hace falta, seguirla.

Cambios necesarios en el registro de Windows

  • HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\LanmanWorkstation\Parameters
    ; Enable NT-Domain compatibility mode
    ; Default:
    ; [value not present]
    ; "DomainCompatibilityMode"=-
    "DomainCompatibilityMode"=dword:00000001
    
    ; Disable required DNS name resolution
    ; Default:
    ; [value not present]
    ; "DNSNameResolutionRequired"=-
    "DNSNameResolutionRequired"=dword:00000000
    
  • HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\Netlogon\Parameters
    ; Disable requirement of signed communication
    ; My Samba (3.0.33) works with signed communication enabled, so...
    ; Default:
    "RequireSignOrSeal"=dword:00000001
    ; Disable the usage of strong keys
    ; Default:
    ; "RequireStrongKey"=dword:00000001
    "RequireStrongKey"=dword:00000000
    
    
  • HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\System\DNSClient
    ; Enforce DNS suffix
    ; It seems this is not necessary - see below
    "NV PrimaryDnsSuffix"="Name_PDC"
    
  • HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\Tcpip\Parameters
    ; Overwrite DNS domain. Usually the domain is supposed to be...
    ;when joining the domain. But with Samba this does not work (yet)
    "NV Domain"="Name_PDC"
    

Cambios en el sistema operativo

Desde el panel de control/opciones de seguridad/directivas locales/opciones de seguridad, hay que modificar las siguiente directivas.
  • Seguridad de RedNivel de autentificacion de LAN MANAGER
  • Seguridad de RedSeguridad de sesion minima para clientes NTLM basados en SSP
  • Miembro de dominioRequerir clave de sesion segura (Windows 2000 o posterior)
Nota: Los Windows 7 home edition no sirven para entrar a formar parte de un dominio.
Leer más

Formulario de contacto

Nombre

Correo electrónico *

Mensaje *

Últimos comentarios