Sudo por medio de LDAP en Debian

De WikiSalud
Saltar a: navegación, buscar

Contenido

Resumen

Distribuir los esquemas de Sudo mediante una infraestructura LDAP existente.

Introducción

Sudo es una utilidad que permite a los usuarios sin privilegios en un sistema tipo Unix (Debian para nuestro caso), ejecutar comandos con los privilegios de otro usuario (Usualmente root). Se considera bastante granular con respecto a otros sistemas de permisos, y posibilita una amplia variedad de esquemas de seguridad.

LDAP es un viejo conocido de nuestro trabajo. Siempre que podemos definirlo, hablamos de él como un almacén de información. Pues bien, resulta que es posible almacenar (con algunas limitantes) las reglas que componen un esquema de seguridad para SUDO.

Esta configuración no es sólo algo interesante por hacer. Hay casos puntuales en los que es bastante deseable:

  • Una compañía externa se encarga de tareas tales como instalación de impresoras.
  • El grupo de soporte necesita algunos privilegios a la hora de dar asistencia a los usuarios, pero no tantos como para tener que compartirles la contraseña de root
  • Las contraseñas de root son demasiado complicadas, cambian demasiado con el tiempo, son diferentes para cada departamento, etc. Recordar contraseñas de root no es una opción.
  • Necesita un registro de quién es el técnico de soporte que trabaja en determinado equipo
  • Solucionar los anteriores poblemas con el sudo de toda la vida (Configurando con visudo) tomaría demasiadas molestias.

Configuración de Servidor

Agregue a su servidor LDAP, la unidad organizativa para Sudo y la entrada por defecto: Cree el fichero sudoers.ldif con el siguiente contenido:

sudoers.ldif
dn: ou=SUDOers,dc=dominio,dc=gob,dc=sv
objectClass: organizationalUnit
ou: SUDOers
 
dn: cn=defaults,ou=SUDOers,dc=dominio,dc=gob,dc=sv
objectClass: top
objectClass: sudoRole
cn: defaults
description: Opciones por defecto
sudoOption: env_keep+=SSH_AUTH_SOCK


Aplíquelo con el usuario administrador, (A menos que tenga otro con los suficientes permisos para realizar esta operación):

ldapadd -x -D cn=admin,dc=dominio,dc=gob,dc=sv -W -f sudoers.ldif

Esquema mínimo recomendado

La siguiente configuración ofrece un mínimo de permisos para administración común y corriente (Gestor de paquetes, editores en línea, instalación de impresoras, administración de servicios)

permisos.ldif
dn: cn=administradores noexec,ou=SUDOers,dc=dominio,dc=gob,dc=sv
objectClass: top
objectClass: sudoRole
cn: administradores noexec
sudoOption: noexec
sudoUser: %administradores
sudoHost: ALL
sudoCommand: /usr/bin/less
sudoCommand: /usr/bin/vi*
sudoCommand: /bin/more
sudoOrder: 0
 
dn: cn=administradores exec,ou=SUDOers,dc=dominio,dc=gob,dc=sv
objectClass: top
objectClass: sudoRole
cn: administradores exec
sudoOption: !authenticate
sudoUser: %administradores
sudoHost: ALL
sudoCommand: /usr/bin/system-config-printer*
sudoCommand: /usr/bin/aptitude
sudoCommand: /usr/sbin/service
sudoCommand: /usr/bin/getent
sudoCommand: /usr/bin/apt-*
sudoCommand: /usr/bin/find
sudoCommand: /usr/bin/tail
sudoCommand: /usr/bin/less
sudoCommand: /usr/bin/nano
sudoCommand: /usr/bin/scp
sudoCommand: /usr/bin/vi*
sudoCommand: /usr/bin/du
sudoCommand: /bin/more
sudoCommand: /bin/cat
sudoCommand: /bin/ls
sudoCommand: /sbin/ifconfig
sudoCommand: /etc/init.d/*
sudoOrder: 1


Aplíquelo con el usuario administrador:

ldapadd -x -D cn=admin,dc=dominio,dc=gob,dc=sv -W -f sudoers.ldif

Explicando el esquema mínimo recomendado

  • La entrada cn=administradores exec,ou=SUDOers,dc=dominio,dc=gob,dc=sv configura al grupo administrador (sudoUser: %administradores, con % para cuidar que no se confunda con algún usuario del mismo nombre) para usar los comandos especificados con cada atributo sudoCommand en todos los host (sudoHost: ALL).
  • Agregamos la opción NOPASSWD (sudoOption: !authenticate) para que no le pida la contraseña cada vez que usa sudo COMANDO
  • La entrada cn=administradores noexec,ou=SUDOers,dc=dominio,dc=gob,dc=sv es básicamente un auxiliar de la entrada anterior. Evita que aquellos programas desde los cuales es posible ejecutar comandos (Vim) sean usados de tal forma.
  • Ni sudo ni su han sido incluidos en la lista, y es una mala idea incluirlos. Esa recursividad permitiría saltarse el esquema propuesto

Configuración de Cliente

Instale los paquetes necesarios (Y desinstale el casi con toda seguridad instalado sudo)

aptitude install sudo- sudo-ldap

Es casi seguro que haya configurado el cliente LDAP
Por tanto, es posible que sólo tenga que agregar el último atributo (sudoers_base) en la configuración ubicada en /etc/sudo-ldap.conf:

/etc/sudo-ldap.conf
BASE            dc=dominio,dc=gob,dc=sv
URI             ldap://ldap.dominio.gob.sv:389
TLS_CACERT      /etc/ssl/certs/CA-sv.crt
 
sudoers_base    ou=SUDOers,dc=dominio,dc=gob,dc=sv


Probando la configuración de Cliente

Basta con entrar a cualquier usuario del que se sepa que tenga una definición y ejecutar:

sudo -l

Para revisar los permisos que le hayan sido asignados al usuario. Y claro, ejecutar cualquiera de los comandos expuestos con sudo para probar que realmente funcionan

Fuentes

Herramientas personales
Espacios de nombres

Variantes
Acciones
Navegación
Herramientas