Gestión de la seguridad

Conceptos Claves

  • Inspeccionar un sistema para encontrar archivos con el bit SUID/SGID.
  • Gestionar las contraseñas de usuarios y su política de expiración.
  • Saber utilizar nmap y netstat para descubrir puertos abiertos.
  • Establecer límites de inicios de sesión, uso de procesador y uso de memoria.
  • Configuración y uso básico de sudo.

Términos y utilidades

  • find
  • passwd
  • lsof
  • nmap
  • chage
  • netstat
  • sudo
  • /etc/sudoers
  • su
  • usermod
  • ulimit

Introducción

Una buena gestión de la seguridad nos permitirá mantener nuestro sistema funcionando sin interrupciones y mantener nuestros datos a salvo. Hay una serie de conceptos que hay que entender para poder utilizar las herramientas disponibles para gestionar la seguridad.

Peligros de los archivos SUID y GUID

Recordemos que estos archivos le otorgan al usuario los mismos permisos con los que cuenta el usuario que es dueño del archivo. Si bien este esquema de delegación de permisos es importante para administrar el sistema, tiene sus consecuencias en cuanto a los riegos que genera.

Es lógico que el programa passwd (/usr/bin/passwd) tenga estos permisos. Ya que para cambiar su propia contraseña, un usuario debe escribir en el archivo /etc/shadow; sobre el cual solo root debería tener permisos de escritura. Por lo que este es un caso de uso adecuado de SUID.

Para ver un caso potencialmente muy peligroso, podemos ver los peligros que se generarían si el programa Vi tuviera permisos de SUID. Recordemos que VI tiene la posibilidad de ejecutar comandos de Shell, los cuales toman los permisos que el proceso de Vi. Por lo tanto, si se ejecuta Vi con SUID de root, se obtienen todos los permisos para ejecutar comandos con los que cuenta root. Con la implicancia en materia de seguridad que esto trae.

Es entendible, entonces, que debamos inspeccionar regularmente nuestro sistema, en busca de archivos que utilicen este tipo de permisos especiales.

Como encontrar archivos SUID y GUID

Para localizar estos archivos se puede utilizar el comando find, aprovechando que este comando tiene la habilidad de buscar por modo (permisos de usuarios). Aquí se pueden ver algunos ejemplos de búsquedas con find.

Encontrar archivos con SUID

# sudo find / -perm +4000

Encontrar archivos con GUID

# sudo find / -perm +2000

Encontrar archivos con GUID o SUID

# sudo find / -perm +6000

Encontrar archivos con GUID y SUID

# sudo find / -perm -6000

Si se precede el modo con un signo más (+), find busca todos los archivos en los que alguno de los bits de permisos especificados este fijado. En cambio si se utiliza un signo menos (-), solo trae los archivos en los cuales los dos bits estén fijados.

Comando chage

Descripción

El comando chage modifica varios parámetros relacionados a la expiración de las contraseñas y las cuentas de usuario.

Sintaxis

chage [opciones] usuario

Opciones

-E fecha_expiración: Establece la fecha de expiración de la contraseña.

-d ultimo_día: Establece la fecha en el que la contraseña se cambio por ultima vez

-I días_inactivo: Luego de cuantos días de expirada la contraseña se deshabilita la cuenta

-m días: Establece mínimo de días que tienen que pasar desde el ultimo cambio de contraseña para poder volver a cambiar

-M días: Estable máximo de días que un usuario puede mantener una mismo contraseña antes de cambiarla.

-w días: La cantidad de días antes de que expire la contraseña que el usuario recibirá el mensaje de advertencia.

-l: Lista las opciones de contraseña de un usuario.

Comando usermod

Descripción

Modifica una cuenta de usuario existente. Como herramienta de seguridad, nos permitirá habilitar y deshabilitar cuentas de usuario.

Sintaxis

usermod [opciones] usuario

Opciones de uso más frecuente

-L: Bloquea la contraseña, deshabilitando la cuenta.

-U: Libera la contraseña, habilitando la cuenta.

-c Comentario: Establece el valor del comentario (campo 5 del passwd)

-d Directorio: Estable el directorio de inicio

Monitoreo de puertos de red

Hay tres herramientas que nos permiten monitorear puertos abiertos en la red. Dos de ellas vienen instaladas y la tercera hay que instalarla. Ellas son lsof, netstat y nmap.

Comando lsof

Descripción

Este programa nominalmente lista archivos abiertos, pero también se puede usar para identificar que servicios están en uso, usando la opción -i.

Ejemplo

lsof –i

Comando netstat

Se usa para listar conexiones de red, tablas de ruteo y otra información sobre la operaciones de red en general. Para ver las conexiones de red, podemos usar las opciones –a y –p.

sudo netstat –ap

Comando nmap

Nmap permite inspeccionar una red para encontrar puertos que estén abiertos, ya sea en la computadora local, en una computadora remota o en una red entera.

Sintaxis

nmap [ Tipo Sondeo ] [Opciones ] IP_objetivo

Nmap es una herramienta muy potente y compleja que permite diferentes tipos de sondeos de red. Diferentes escenarios requieren diferentes tipos de sondeos, esta en la experiencia del administrador saber cual es el adecuado.

Se usa tanto para examinar redes propias como redes ajenas, por lo que es una herramienta habitual entre las que suelen usar los crackers.

Ejemplo 1

Examinar la red para ver que hosts están activos

nmap 192.168.0.0/24

Ejemplo 2

Ver que puertos están abiertos y que servicios corren en ellos

nmap 192.169.0.20

Ejemplo 3

Intentar detectar sistema operativo

nmap -O 192.169.0.20

Ejemplo 4

Ver que programas corren en los puertos

nmap -sV 192.169.0.20

Restringir el uso de el usuario root con Sudo

Por el hecho de que el usuario root puede hacer cualquier cosa dentro de una computadora, es lógico restringir su acceso.

Sudo es un programa que se utiliza para que los administradores de sistema permitan que ciertos usuarios ejecuten ciertos comandos como root (u otro usuario).

La filosofía básica es dar la menor cantidad de privilegios, pero igualmente permitir que se realicen las tareas necesarias.

Sudo también permite llevar una auditoria de quien ejecuto que comando y cuando lo ejecuto.

Beneficios de usar Sudo

Registro de Comandos: Se puede tener un registro de comandos. Los cuales pueden ser trazados al usuario que los emitió. Permitiendo realizar auditorias.

Registro centralizado de comandos: Se puede usar en conjunto con el demonio de registros (syslog) para centralizar los registros en una sola computadora.

Restricción de comandos: Cada usuario o grupo puede ser limitado en cuanto a cuales comando podrá ejecutar

Sistema de Tickets: El sistema de tickets establece un limite de tiempo cuando un usuario ingresa en modo sudo

Administración centralizada de múltiples sistemas: Las configuraciones sudo son escritas al archivo /etc/sudoers. Este archivo puede ser usado en múltiples sistemas y permite la administración desde una computadora central.

Configuración de sudo con el archivo /etc/sudoers

El funcionamiento de sudo se configura a través del archivo /etc/sudoers, el cual no debe ser editado directamente, debe ser editado con el programa visudo. El contenido de este archivo consiste en dos tipos de entradas:

Aliases: Son básicamente variables, se pueden usar para definir grupos de comandos, grupos de usuarios, etc.

Especificaciones: Vinculan usuarios o aliases con computadoras y comandos.

Tipos de Aliases

Aliases de Usuario: Se utilizan para especificar grupos de usuarios. Se pueden especificar nombres de usuario y grupos del sistema (con el prefijo %).

Aliases de “ejecutar como” : Son muy similares a los Aliases de usuario, con la diferencia que se pueden indicar usuarios por UID.

Aliases de Host: Es una lista de nombres de hosts, direcciones IP y redes.

Alias de Comandos: Son listas de comandos y directorios.

Ejemplo

# Comandos para apagar el sistema

Cmnd_Alias SHUTDOWN_CMDS = /sbin/shutdown, /sbin/reboot, /sbin/halt

# Comandos de impresión

Cmnd_Alias PRINTING_CMDS = /usr/sbin/lpc, /usr/sbin/lprm

# Comandos administrativos

Cmnd_Alias ADMIN_CMDS = /usr/sbin/passwd, /usr/sbin/useradd, /usr/sbin/userdel, /usr/sbin/usermod, /usr/sbin/visudo

# Comandos Web

Cmnd_Alias WEB_CMDS = /etc/init.d/apache2

Comando su

El comando su se utiliza para cambiar de usuarios, su nombre viene de Switch User (Cambiar Usuario). En el caso de que se ingrese el comando si ningún parámetro, intentara iniciar sesión como root, por lo que se pedirá la contraseña de root.

Si se le pasa como argumento el nombre de otro usuario, se intentara pasar a ese usuario. Para ejecutar un solo comando como otro usuario, se puede usar la opción -c.

Ulimit

El comando ulimit limita el uso de recursos del sistema, es un comando interno de Bash, por lo que afecta solo a Bash y los programas que se lanzan desde Bash.

Sintaxis

ulimit [opción [limite]]

Opciones

Opción Descripción
-a Muestra los limites actuales
-u numero Numero máximo de procesos disponibles a un usuario.
-x numero Numero máximo de bloqueo de archivos
-v numero Máxima memoria disponible para el shell, en kilobytes.
-H El limite es rígido.
-S El limite es flexible.

results matching ""

    No results matching ""