• No se han encontrado resultados

de usuarios, grupos y privilegios

In document Certificado Linux. Manual del participante (página 153-173)

Introducción.

Aún cuando se tenga un sistema con un único usuario, es importante recordar que es poco conveniente realizar el trabajo diario utilizando la cuenta del usuario root. Ésta sólo debe utilizarse para realizar las tareas de administración del sistema.

Una cuenta de usuario regular tiene las restricciones necesarias para impedir que se ejecute algo pueda dañar al sistema, se altere accidentalmente la configuración de éste, los servicios que trabajan en segundo plano o bien los permisos y ubicación de los archivos y directorios de sistema, etc. Sólo el usuario root tiene privilegios, sin restricciones, sobre el sistema.

Procedimiento.

La gestión de cuentas usuarios se realiza a través de useradd, passwd, usermod, groupadd y groupmod.

Gestión de cuentas de usuario. Creación de cuentas de usuario.

Ejecute useradd con la opción -m (crear automáticamente directorio de inicio) y el nombre del usuario como argumento para crear una nueva cuenta de usuario. Ejemplo:

useradd -m nuevo

Asignación o cambio de contraseñas.

Ejecute passwd con el nombre del usuario como argumento para establecer o cambiar una contraseña. Ejemplo:

passwd nuevo

El sistema solicitará ingrese la nueva contraseña para el usuario y que repita ésta para confirmar. Jamás se mostrarán los caracteres ingresados en pantalla. Si se sospecha se cometieron errores de tecleado, puede presionarse la tecla de retroceso las veces que sean necesarias y repetir todo lo que sea necesario antes de pulsar la tecla ENTER. El sistema siempre le informará si falla la confirmación de la contraseña: devuelve una salida code 0 si el procedimiento fue exitoso y devuelve una salida code 1 si el procedimiento falló.

Sólo se permite al usuario root asignar contraseñas débiles y mostrará siempre una advertencia en estos casos. Los usuarios regulares realizan un cambio de contraseña, están obligados a definir siempre una que sea segura y que excluya palabras incluidas en los diccionarios del sistema.

Eliminación de cuentas de usuario.

Ejecute userdel con un nombre de usuario como argumento para eliminar éste. Ejemplo: userdel nuevo

Ejecute userdel con la opción -r y el nombre del usuario como argumento para eliminar también el directorio de inicio —junto con su contenido— y el buzón de correo

correspondiente. Ejemplo: userdel -r nuevo

Gestión de Grupos. Creación de grupos.

Ejecute groupadd con el nombre del grupo como argumento para crear éste. Ejemplo: groupadd grupo-nuevo

Creación de grupos de sistema.

Un grupo de sistema es aquel que tiene un número de identidad de grupo —GID— por debajo del 500 —CentOS y Red Hat™ Enterprise Linux— o bien 1000 —Fedora™,

openSUSE™ y SUSE™ Linux Enterprise— dependiendo del sistema operativo utilizado. El número de identidad de grupo siempre se asigna automáticamente, utilizando el valor consecutivo más bajo que esté disponible en el sistema.

Ejecute groupadd con la opción -r y el nombre del grupo como argumento para crear éste. Ejemplo:

groupadd -r grupo-nuevo

Eliminación de grupos

groupdel grupo-nuevo

Asignación de usuario existentes a grupos existentes.

Ejecute usermod con la opción -G con el nombre del grupo y el nombre del usuario como argumentos —en ese orden. Ejemplo:

usermod -G grupo-nuevo usuario-nuevo

Opciones avanzadas.

Pueden utilizarse las siguientes opciones de useradd: -c, --comment comentario

Permite establecer detalles de la cuenta de usuario. En la actualidad se utiliza para definir el nombre completo del usuario.

-d, --home directorio de inicio

Establece el directorio de inicio del usuario. -e, --expiredate fecha de expiración

Establece la fecha de expiración de una cuenta de usuario en el formato AAAA- MM-DD.

-f, --inactive días para desactivar

Establece el número de días para desactivar una cuenta de usuario tras la expiración de una contraseña.

-g, --gid grupo principal

Establece el grupo predeterminado al cual pertenecerá el usuario. Nota: el grupo definido debe de existir previamente.

-G, --groups grupos adicionales,[...]

Establece los grupos adicionales a los que pertenecerá el usuario. Estos deben separarse utilizando una coma y sin espacios. Esto es muy conveniente cuando se desea que el usuario tenga acceso a determinados recursos del sistema, como acceso a la unidad de disquetes, administración de cuentas PPP y POP. Nota: los grupos definidos deben de existir.

-m, --create-home

Establece que el directorio de inicio del usuario debe ser creado si acaso este fuese inexistente y se copiaran dentro de este los archivos especificados en

/etc/skel. Esta opción viene implícita en CentOS, Fedora™ y Red Hat™ Enterprise Linux, es decir es innecesaria, pues el archivo /etc/login.defs define la variable CREATE_HOME con el valor yes. Ejemplo:

useradd alguien

En Debian, openSUSE™, SUSE™ Linux Enterprise y Ubuntu™, es necesario utilizarla de manera explícita, siendo que de lo contrario se omitiría la creación de los directorios de inicio de los usuarios, pues el archivo /etc/login.defs define la variable CREATE_HOME con el valor no. Ejemplo:

useradd -m alguien -M

Establece se omita crear el directorio de inicio del usuario, aún si el archivo /etc/login.defs define la variable CREATE_HOME con el valor yes. Es lo contrario de la opción -m.

-r, --system

Crea cuentas de sistema. Los usuarios de sistema serán creados sin caducidad en el archivo /etc/shadow y sus números de identidad serán asignados entre el rango de valores de la variable SYS_UID_MIN y la variable SYS_UID_MAX (100 a 499 en CentOS y Red Hat™ Enterprise Linux, 100 y 999 en Fedora™, openSUSE™ y SUSE™ Linux Enterprise) o bien como esté definido en el archivo /etc/login.defs.

-s, --shell intérprete de mandatos

Establece el intérprete de mandatos (shell) que podrá utilizar el usuario. CentOS, Red Hat™ Enterprise Linux, Fedora™, openSUSE™ y SUSE™ Linux Enterprise establecen /bin/bash como intérprete de mandatos predeterminado.

-u, --uid número de identidad de usuario

Establece el UID del usuario. Cuando se crea una cuenta de usuario por primera vez, como ocurre en CentOS y Red Hat™ Enterprise Linux, los UID se asignarán a partir del 500. Los UID entre 0 y 99 están reservados para las cuentas y grupos de los servicios del sistema. En el caso de openSUSE™ y SUSE™ Linux Enterprise, éstos asignan los UID a partir del 1000. El rango de valores de SYS_UID_MIN- SYS_UID_MAX puede consultarse en el archivo /etc/login.defs.

Ejemplo:

useradd -c "Fulano de tal" \ -u 1000 -m -d /home/pruebas \ -G tape,lp \

Lo anterior creará una cuenta de usuario llamada pruebas, que se encuentra incluido en los grupos tape y lp, que tendrá un UID=1000, utilizará /bin/bash como intérprete de

mandatos y utilizará /home/pruebas directorio de inicio.

La descripción completa de opciones para useradd puede consultarse en la página de manual correspondiente.

man 8 useradd

Para modificar una cuenta de usuario existente, se utiliza usermod, el cual tiene las siguientes opciones que son similares a las de useradd:

-c, --comment comentario

Cambia la descripción de la cuenta de usuario. -d, --home directorio de inicio

Cambia el directorio de inicio del usuario. -e, --expiredate fecha de expiración

Cambia las fechas de expiración de una cuenta de usuario en el formato AAAA- MM-DD.

-f, --inactive días para desactivar

Cambia el número de días para desactivar una cuenta de usuario tras la expiración de una contraseña.

-g, --gid grupo principal

Cambia el grupo predeterminado al cual pertenecerá el usuario. Nota: el grupo definido debe de existir previamente.

-G, --groups grupos adicionales,[...]

Cambia los grupos adicionales a los que pertenecerá el usuario. Estos deben separarse utilizando una coma y sin espacios. Nota: los grupos definidos deben de existir.

-l, --login nuevo nombre del usuario Cambia el nombre del usuario.

-m, --move-home

Mueve el contenido del directorio de inicio del usuario cuando se ha establecido uno distinto con la opción -d.

Cambia el intérprete de mandatos (shell) que podrá utilizar el usuario. -u, --uid número de identidad de usuario

Cambia el UID del usuario. Ejemplo: usermod -c "Alguien" \ -s /bin/zsh \ -u 1001 -m -d /home/alguien \ -l alguien \ pruebas

Lo anterior cambiará la cuenta del usuario llamada pruebas para que adelante tenga como descripción «Alguien», tenga el UID=1001, utilice /bin/zsh como intérprete de mandatos y cambie su directorio de inicio con todo su contenido a /home/alguien.

La descripción completa de opciones para usermod puede consultarse en la página de manual correspondiente.

man 8 usermod

Pueden utilizarse las siguientes opciones de passwd: -k

Se utiliza para indicar que la actualización de una contraseña sólo se aplique para las sesiones expiradas, sin afectar a las sesiones activas del usuario modificado.

-l

Sólo puede ser utilizada por root. Se utiliza para bloquear cuentas de usuario. El bloqueo se realiza añadiendo el símbolo ! al inicio del criptograma de la contraseña en el archivo /etc/shadow.

--stdin

Establece que passwd deberá leer el valor de la contraseña desde la entrada estándar (STDIN).

-u

Sólo puede ser utilizada por root. Revierte lo que se haya hecho con la opción -l. Es decir, desbloquea cuentas de usuario. Es decir, elimina el símbolo ! al inicio del criptograma de la contraseña en el archivo /etc/shadow

-d

Sólo puede ser utilizada por root. Elimina la contraseña de un usuario en particular, permitiendo ingresar al sistema sin contraseña.

-e

Sólo puede ser utilizada por root. Expira la contraseña del usuario, obligando a éste a asignar una nueva durante el siguiente ingreso al sistema. Esta opción fue descartada en versiones recientes de passwd en favor del uso de chage con la opción -d con el número cero como valor y el nombre del usuario como argumento. Ejemplo: chage -d 0 zutano.

-n tiempo mínimo de vida en días

Sólo puede ser utilizada por root. Establece el tiempo mínimo de vida, en días, de una contraseña.

-x tiempo máximo de vida en días

Sólo puede ser utilizada por root. Establece el tiempo máximo de vida, en días, de una contraseña.

-w número de días previos a expiración

Sólo puede ser utilizada por root. Establece el número de días, antes de que expire una contraseña, para que el usuario comience a recibir advertencias sobre la próxima expiración de su contraseña.

-i número de días tras la expiración de contraseña

Sólo puede ser utilizada por root. Establece el número de días para desactivar una cuenta de usuario tras la expiración de su contraseña.

-S

Sólo puede ser utilizada por root. Mostrará información breve acerca del estado de una contraseña para un usuario determinado.

Ejemplo:

passwd -n 60 -x 90 -w 10 -i 5 pruebas

Lo anterior establece que la contraseña del usuario pruebas tendrá un tiempo de vida

mínimo de 60 días, un tiempo máximo de vida de 90 días, comenzando a recibir advertencias 10 días antes de que expire su contraseña y se desactivando la cuenta 5 días después de que caduque la contraseña en el caso de que el usuario hubiese omitido cambiarla.

La descripción completa de opciones para passwd puede consultarse en la página de manual correspondiente.

man 1 passwd

Herramientas gráficas.

Si utiliza CentOS o Red Hat™ Enterprise Linux, puede gestionar las cuentas de usuarios, grupos y cambios de contraseñas utilizando la herramienta gráfica system-config-users. Puede econtrarla en el meú deSistema → Administración → Usuarios y grupos.

Herramienta system-config-users. Comentarios finales acerca de la seguridad.

Cuando un intruso consigue infiltrarse en un sistema es generalmente es gracias a que se realizó una conexión a través de SSH o Telnet y se pudo "adivinar" alguna de las contraseñas de las cuentas de usuario existentes o bien la contraseña del administrador. Si se específico una mala contraseña de root durante el proceso de instalación del sistema operativo, algo muy común entre usuarios novicios, es muy probable que ésta sea vulnerada en pocas horas (e incluso minutos) después de conectarse a Internet.

• Evite especificar contraseñas fáciles de adivinar. Particularmente, evite utilizar contraseñas que utilicen palabras incluidas en cualquier diccionario de cualquier idioma, datos relacionados con el usuario o empresa, como son registro federal de contribuyentes (R.F.C.), fechas de nacimiento, números telefónicos, seguro social, números de cuentas de académicos o alumnos, nombres de mascotas, nombres de personajes de ciencia ficción, etc.

• Evite escribir las contraseñas sobre medios físicos, prefiera siempre limitarse a memorizar éstas.

• Si se le dificulta memorizar contraseñas complejas, utilice entonces contraseñas fáciles de recordar, pero cámbielas periódicamente.

• Jamás proporcione una contraseña a terceros. Evite proporcionarla en especial a personas que se identifiquen como miembros de algún servicio de soporte o ventas. Este último caso se menciona con énfasis en la página de manual de passwd.

Se considera como una buena contraseña aquella se compone de una combinación de números y letras mayúsculas y minúsculas y que contiene como mínimo 8 caracteres, al menos tres caracteres en mayúscula, al menos tres números y al menos tres caracteres especiales. También es posible utilizar pares de palabras con puntuación insertada y frases o secuencias de palabras o bien acrónimos de estas.

Observar estas recomendaciones, principalmente en sistemas con acceso a redes locales y/o públicas, como Internet, hará que el sistema sea más seguro.

Configuración y uso de sudo.

Introducción. Historia.

Sudo fue inicialmente concebido en 1980 por Bob Coggeshall y Cliff Spencer del Departamento de Ciencia Computacional en SUNY (State University of New York o Universidad Estatal de Nueva York), en Buffalo.

En 1985 se publicó una versión mejorada acreditada a Phil Betchel, Cliff Spencer, Gretchen Phillips, John LoVerso y Don Gworek en el grupo de noticiasnet.sources. Garth Snyder publicó otra versión mejorada en el verano de 1986 y durante los siguientes cinco años fue mantenido con la colaboración de muchas personas, incluyendo Bob Coggeshall, Bob Manchek y Trent Hein.

Dave Hieb y Jeff Nieusma escribieron en 1991 una versión mejorada del formato para el archivo /etc/sudoers, bajo contrato con la firma consultora The Root Group, versión que posteriormente fue publicada bajo los términos de la Licencia Pública General de GNU (GNU/GPL).

Desde 1996 el proyecto es mantenido activamente por Todd Miller, con la colaboración de Chris Jepeway y Aaron Spangler y actualmente se distribuye bajo los términos de una licencia tipo BSD.

Acerca de sudo.

Sudo (Superuser Do) es una herramienta de sistema que permite a los usuarios realizar la ejecución como super-usuario u otro usuario de acuerdo a como se especifique en el archivo /etc/sudoers, donde se determina quien está autorizado. Los números de identidad de

usuario y de grupo (UID y GID) reales y efectivas se establecen para igualar a aquellas del usuario objetivo como esté especificado en el archivo /etc/passwd.

Por seguridad de modo predeterminado sudo requiere que los usuarios regulares

autorizados se autentiquen usando su propia contraseña nunca con la de root. También es obligatorio el acceso desde una terminal (TTY) para poder ejecutar sudo y si un usuario sin autorización lo ejecuta, se registrará la actividad en la bitácora de sistema (a través de syslogd) y se enviará un mensaje de correo electrónico al administrador del sistema (root). El manual de información del formato del archivo /etc/sudoers se puede consultar

ejecutando lo siguiente: man 5 sudoers

El manual de información de sudo se puede consultar ejecutando lo siguiente: man 8 sudo

El manual de información de visudo se puede consultar ejecutando lo siguiente: man 8 visudo

Equipamiento lógico necesario.

Instalación en CentOS, Fedora™ y Red Hat™ Enterprise Linux. Ejecute lo siguiente para instalar el paquete sudo:

yum -y install sudo Archivo /etc/sudoers

El archivo /etc/sudoers se edita con visudo, herramienta que a través de vi permite realizar cambios y verificar sintaxis y errores. Si se intenta modificar directamente /etc/sudoers, éste tendrá permisos de sólo lectura.

La sintaxis básica de una lista de control de acceso sería:

XXXX_Alias NOMBRELISTA = elemento1, elemento2, elemento3 La sintaxis básica de una regla de control de acceso sería:

Se pueden definir Aliases y reglas. Los aliases permiten definir listas de programas, listas de usuarios, listas de anfitriones o bien listas de identidades de usuarios para ejecutar

programas. Cmnd_Alias.

Se utiliza para definir listas de programas a utilizar con sudo y/o excluir su ejecución con sudo. Ejemplo:

Cmnd_Alias PROGRAMAS4 = /sbin/service httpd reload, \ /usr/bin/vim /etc/httpd/conf.d/variables.conf, \

/usr/bin/vim /etc/php.ini

Lo anterior define una lista de programas que podrían utilizarse para hacer que el servicio httpd vuelva a leer su configuración, modificar los archivo

/etc/httpd/conf.d/variables.conf y /etc/php.ini. fulano ALL = PROGRAMAS4

Lo anterior define que el usuario fulano puede ejecutar los programas de la lista PROGRAMAS4 desde cualquier anfitrión.

También se pueden definir programas prohibidos junto con programas permitidos. Por ejemplo:

Cmnd_alias ALTACUENTAS = /usr/sbin/useradd, /usr/bin/passwd *, \ !/usr/bin/passwd root

fulano ALL = (ALL) ALTACUENTAS

Lo anterior define que fulano puede ejecutar useradd con cualquier opción y argumentos y ejecutar passwd con cualquier argumento, pero tendrá prohibido ejecutar éste utilizando root como argumento, es decir tendrá prohibido cambiar la contraseña de root.

En el siguiente ejemplo, el usuario fulano podría utilizar virtualmente cualquier programa del sistema, excepto passwd conroot como argumento y ejecutar bash, userdel,

usermod y su.

Cmnd_alias PROHIBIDOS = !/bin/su, !/bin/bash, !/usr/sbin/usermod, \ !/usr/sbin/userdel, !/usr/bin/passwd root

fulano ALL = (ALL) ALL, PROHIBIDOS User_Alias.

Se utiliza para definir listas de usuarios y/o grupos que podrán utilizar sudo y/o aquellos que tendrán prohibido utilizarlo. Ejemplo:

User_Alias WEBADMINS = fulano, mengano, zutano

Lo anterior define una lista denominada WEBADMINS, integrada por los usuarios fulano, mengano y zutano.

WEBADMINS ALL = /usr/bin/vim

La regla anterior define que los usuarios que conforman la lista WEBADMINS pueden ejecutar vim desde cualquier anfitrión.

También es posible definir grupos a los cuales pertenecen los usuarios del sistema. Ejemplo: User_Alias ADMINS = %wheel, !pepe

Lo anterior define una lista denominada ADMINS, integrada por los usuarios que

pertenezcan al grupo de sistema denominado wheel, excluyendo el usuario denominado pepe.

ADMINS ALL = /usr/bin/vim

La regla anterior define que los usuarios que conforman la lista ADMINS, es decir todos los miembros del grupo de sistena denominado wheel, excepto el usuario denominado pepe, pueden ejecutar vim desde cualquier anfitrión.

Host_Alias.

Se utiliza para definir listas de anfitriones desde los cuales se tendrá permitido utilizar sudo o bien desde los cuales se tendrá prohibido utilizarlo. Ejemplo:

Host_Alias WEBHOSTS = 192.168.70.25, \ 192.168.70.26, \

192.168.70.23

Lo anterior define que la lista WEBHOSTS está integrada por las 3 direcciones IP listadas anteriormente. Si además se añade la siguiente regla:

WEBADMINS WEBHOSTS = ADMINHTTPD

Lo anterior define que los usuarios de la lista WEBADMINS pueden utilizar los programas listados en ADMINHTTPD solamente si están conectados desde las direcciones IP listadas

Candados de seguridad.

Algunos programas, como el caso de less, vi, vim y more, permiten ejecutar otros programas desde el intérprete de mandatos —lo que se conoce como Shell Escape o escape al intérprete de mandatos. En estos casos se puede utilizar NOEXEC para impedir que algunos programas permitan la ejecución de otros programas con privilegios. Ejemplo:

fulano ALL = (ALL) ALL \

NOEXEC: /bin/vi, /usr/bin/less, /usr/bin/vim, /bin/more

Lo anterior permitiría al usuario fulano poder editar o visualizar con privilegios cualquier archivo del sistema ejecutando vim y more, pero deshabilita la posibilidad de poder ejecutar otros programas con privilegios desde el escape al intérprete de mandatos de vim. Es importante señalar que sudo incluye varios candados de seguridad (predeterminados) que impiden se puedan realizar tareas peligrosas, como redirigir la salida estándar de la

In document Certificado Linux. Manual del participante (página 153-173)

Documento similar