viernes, 15 de enero de 2010

Como hacer nuestro Linux más seguro I: Administración de usuarios y grupos de usuarios.

fuente: http://www.axlinux.es/2009/12/como-hacer-nuestro-linux-mas-seguro-i.html
Todo sistema operativo tiene que tener un sistema de administración de usuarios y los grupos de usuarios para tener un sistema seguro. Y para hacer nuestro Linux sea mas robusto tenemos y/o debemos saber como funcionan estos sistemas. Para ello vamos a explicar este funcionamiento.

En Linux, independientemente de la distribución que usemos, los ficheros relacionados con la gestión de los usuarios y grupos estarán en:
  • /etc/passwd
  • /etc/shadow
  • /etc/group
  • /home/usuario (directorio)
  • /etc/skel
El fichero /etc/passwd
Este fichero contiene la lista de todos los usuarios definidos en el sistema. Contiene 7 campos separados por ":" :
  • Login name: Nombre corto del usuario, este debe ser único, no poseer mas de 32 caracteres, no debe empezar por números y puede contener letras, números y signos de puntuación exceptuando ":". Cabe recordar que son case sensitive, es decir diferencia entre mayúsculas y minúsculas.
  • Encryted password: El campo de contraseñas, si se encuentra vacío, no se requiere contraseña, si contiene una "x" es que se utiliza el concepto Shadow password, si contiene un "*" indica que la cuenta se encuentra deshabilitada.
  • User ID (UID) number: Identificador único de usuario, cada usuario posee un UID, el usuario root posee el UID 0, otras cuentas del sistemas poseen el UID < href="http://www.axlinux.es/search/label/Ubuntu">Ubuntu empiezan en 1000. Se recomienda conserva un mismo UID a través de toda la red para evitar problemas de seguridad. Es decir si dos equipos de una red tienen usuarios diferentes y estos tienen el mismo UID esto podría generar problemas de seguridad.
  • Default Group ID (GID) number: Identificador de grupo primario. Cada usuario pertenece a un grupo primario por defecto, de forma automática es miembro de ese grupo al iniciar la sesión. Los grupos se encuentran definidos en un fichero. Cada grupo posee su propio GID, el GID del root es el 0. Siempre hay que diferenciar los grupos de los usuarios aunque posean el mismo nombre.
  • Comment: Campo comentario. Este campo es utilizado para añadir información adicional sobre el usuario. Los usuarios pueden actualizarlo a través del comando chfn. Este campo es utilizado por algunos servicios como es el caso de finger, para mostrar información en la red.
  • Home Directory: La carpeta personal del usuario. Es la ubicación del usuario al iniciar la sesión. Utilizado para almacenar configuraciones y ficheros.
  • Default Shell: Interprete de comando por defecto al iniciar la sesión, este suele ser por defecto Bash: Los usuarios pueden cambiar el shell utilizando el comando chsh
El fichero /etc/shadow
El uso de shadow password permite eliminar el acceso publico a las contraseñas encriptadas de los usuarios eliminándolas del fichero /etc/passwd e incorporándolas en /etc/shadow que solo solo tiene acceso el usuario root.

La estructura de este fichero es:
  • username: identificación del usuario.
  • password: contraseña encriptada del usuario.
  • lastchg: el último día que se cambio la contraseña del usuario contados desde el el año 1970.
  • min: número mínimo de días que deben pasar antes que una contraseña se permita ser cambiada.
  • max: número máximo de días que pueden pasar antes que una contraseña deba ser cambiada.
  • warm: número de días previos de aviso a que la contraseña venza.
  • inactive: número máximo de días que pueden pasar entre dos accesos al sistema (periodo de inactividad).
  • expire: fecha de expiración de cuenta de usuario
  • flag: campo reservado por parte del sistema operativo.
El fichero /etc/group
Los grupos de usuarios se encuentran definidos en este fichero y contiene la siguiente información:
  • Group name: El nombre del grupo que no puede comenzar con: guiones "-", signo más "+", la arroba "@" y tildes "'". No se puede utilizar como nombre de grupo "ALL" o "default". Tampoco se puede utilizar los siguientes símbolos en la estructura del nombre: dos puntos ":", comilla doble ("), almohadilla "#", signo igual "=", contra barra "\", barra "/", signos de interrogación "¿?", comilla simple "'", comilla invertida, coma ",".
  • Password: contraseña del grupo.
  • Group ID numer (GID): Identificador del grupo.
  • Member User: usuarios que pertenecen al grupo.
El directorio /etc/skel y el directorio /Home/usuario.

El directorio /home : Es la carpeta donde se guardan los archivos personales de todos los usuarios, documentos, configuración específica de ciertos programas, etc. Dentro, existe una carpeta con el nombre de cada usuario. Generalmente, cada usuario tiene acceso sólo a su directorio home. Los usuarios normales tienen total control (lectura, escritura, ejecución) de los archivos de su “home” y en caso que un usuario común haga algo realmente desastroso con el sistema, sólo afectará su home, dejando el del resto de usuarios y el resto del SO intacto. El superusuario (root) tiene acceso total a todos los directorios de los demás usuarios (recuerden la frase: “cada user en su home y el root en el de todos”).


El directorio /etc/skel es bastante simple de configurar y usar. Proporciona una forma de estar seguro de que todos los nuevos usuarios de tu sistema LFS tienen la misma configuración inicial. El directorio /etc/skel es usado por el programa /usr/sbin/useradd.

Para empezar, crea un directorio /etc/skel. La mejor forma de hacerlo es como usuario root. Después copia en /etc/skel aquellos ficheros que quieras que cada nuevo usuario tenga en su directorio home. Por ejemplo, .bash_profile, .bashrc, .bash_logout, dircolors, .inputrc, y .vimrc.

Comandos para la administración de usuarios y grupos



Para administrar los usuarios tenemos los comandos:
  • useradd: añade usuarios
  • usermod: modifica y/o actualiza usuarios
  • userdel: elimina la cuenta de usuario del sistema
Estos comandos actúan sobre los ficheros /etc/passwd, /etc/shadow, /etc/group.
Estos comando solo pueden ser utilizados por los administradores del sistema o el usuario root.

Para administrar los grupos disponemos de los siguientes comandos:

  • groupadd: añadimos un grupo nuevo.
  • groupmod: modifica un grupo.
  • groupdel: borra un grupo.
  • newgrp: permite modificar el grupo primario del usuario.
Estos comandos actúan sobre el fichero /etc/group. Estos comando solo pueden ser utilizados por los administradores del sistema o el usuario root.

Para más información sobre el uso de estos comandos man comando, ejemplo; man useradd, para obtener información del uso del comando useradd

La cuenta root
Toda distribucion de Linux posee una cuenta de usuario con máximos privilegios conocida como superusuario y denominada como root.

Todos los ficheros y procesos del sistema poseen como propietario la cuenta root, esta cuenta actúa como el dueño de cualquier fichero o proceso por mas que no figura explícitamente. La cuenta de root posee privilegios de operación del sistema por lo que es la cuanta mas peligrosa del sistema, en términos de seguridad.Esta cuenta posee el UID=0.

La cuenta root puede ser renombrada, pueden crearse otras cuentas que posean UID=0 dando automáticamente el privilegio de root. Aunque ninguna de estas medidas es aconsejable.

Tampoco es aconsejable utilizar la cuenta root como cuenta de uso cotidiano. Ya que en Linux se permite a esta cuenta efectue operaaciones sobre ficheros y procesos. Por lo que podria dejar el sistema inhabilitado como puede ser el uso del comando rm -r/.

Antes de iniciar una sesion como root es aconsejable iniciar la sesion con otro usuario y convertirse en root cuando sea necesario.

El comando su permite convertise en root o cualquier usuario. Al utilizado sin argumentos se solicita automaticamente la contraseña del root.

Los privilegios de root no pueden ser eliminados.

El comando sudo

Una alternativa al comando su es el comando sudo. Este comando nos pertmite la ejecución de cualquier comando sin necesidad de convertirnos en root.

Colocaremos el comando sudo delante del comando que necesitemos ejecutar como root. Por ejemplo: sudo apt-get update.

Pero puede cualquier usuario utilizar sudo. Pues no, solo lo podrán usar aquellos usuarios que estén configurados en el fichero /etc/sudoers. De hecho el comando sudo consulta este fichero para saber si el usuario esta o no autorizado a usarlo. Si se encuentra habilitado sudo solicitada la contraseña del usuario para confirmar la realización de la tarea.

Una vez utilizado el comando sudo no se volverá a solitar la tarea hasta que pasen 5 minutos ( o el tiempo que se haya establecido). Sudo conserva un log de los comandos utilizados, quien lo hizo, cuando y desde que directorio.

Es por ello que se recomienda usar el comando sudo en lugar su, ya que dispone de las siguientes ventajas:
  • Logs. Por lo que podremos rastrear el uso del comando.
  • Limitación del conocimiento de la contraseña del usuario root
  • Mas rápido que utilizar su o iniciar la sesión como root.
  • Menos posibilidades de dejar la cuenta root desatendida.
Consejos de seguridad para la administración de usuarios y grupos de usuarios.
  • Todos los usuarios deberían tener una contraseña.
  • Deshabilitar las cuentas que no se utilicen.
  • Deshabilitar la cuenta del usuario invitado.
  • Usar sudo en lugar de root siempre que el se pueda y en caso de no poder hacerlo usar root siempre en una sesión nueva y en terminal, no es recomendable usar root en entorno gráficos.
  • No se recomienda el uso de inicios de automáticos.

No hay comentarios: