9
Jan
2011

Controlando el acceso con TCP Wrappers

TCP Wrappers es una librería que provee funciones de control de acceso y registro de eventos entre un servicio de red y las conexiones TCP que lo requieren.

Para utilizar estas funciones, el software debe ser compilado con la librería /lib/libwrap.a o /lib64/libwrap.a (32 y 64 bits respectivamente). Un método de comprobar las librerías compartidas a las que tiene acceso un binario es ldd:

ldd /usr/sbin/vsftpd

TCP Wrappers funciona a través de reglas que se encuentran en los archivos /etc/hosts.allow y /etc/hosts.deny. Como sugieren sus nombres, en uno estarán aquellas que permitan la conexión y en el otro las que la denieguen. Al decidir sobre una conexión, se analizan los archivos secuencialmente y en la primer regla que sea aplicable, se deja de buscar y se ejecuta la acción. Por ello, es importante el órden de las reglas y tener en cuenta que hosts.allow se analiza antes que hosts.deny.


Leer el resto del artículo »

8
Jan
2011

Runlevels en Linux

Los runlevels en Linux son estados de ejecución en los que se puede encontrar el sistema operativo. Están basados en el modo de iniciación de los sistemas Unix System V.

El sistema es iniciado en uno de los niveles y luego, por órden del usuario, puede pasar a otro. No es posible estar en dos niveles al mismo tiempo y el pasaje entre niveles no tiene por qué ser secuencial -de hecho nunca lo es-. Cada uno de estos niveles tiene configuraciones y procesos asociados que se ejecutan al ingresar o al salir.

El significado de cada runlevel puede variar según la distribución, pero en líneas generales encontramos:

0 – Sistema en estado de halt o apagado;
1 – Sistema en modo Single-User (al ingresar como root sin password);
2 – Sistema en modo Múltiples Usuarios sin soporte de red;
3 – Sistema en modo Múltiples Usuarios;
4 – Definido por el usuario;
5 – Sistema en modo Múltiples Usuarios con interfaz gráfica;
6 – Sistema en modo reboot o reinicio.

Así, en una distribución típica de escritorio tenemos un pasaje del estado N (no determinado) a 5 al iniciar el sistema. Al reiniciar el sistema pasamos del estado 5 en que nos encontramos al estado 6 y del estado 6 al estado 5 nuevamente. Al apagar pasamos del estado 5 al estado 0.


Leer el resto del artículo »

7
Jan
2011

¿Qué servicios tenés habilitados en tu servidor Linux o OS X?

Una de las medidas de seguridad necesarias para asegurar un  sistema es reducir al mínimo los servicios habilitados a la red. Cada servicio puede exponer vulnerabilidades a intrusos que terminen por comprometer a todo el sistema.

Maintaining security on your system is extremely important, and one approach for this task is to manage access to system services carefully. Your system may need to provide open access to particular services (for example, httpd if you are running a Web server). However, if you do not need to provide a service, you should turn it off to minimize your exposure to possible bug exploits.

Controlling Access to Services – RedHat, Inc.

Para analizar los servicios que tenemos actualmente habilitados y escuchando conexiones desde la red, voy a comentarles tres comando en Linux:


Leer el resto del artículo »

4
Jan
2011

Diferencias entre el kernel de Unix y Linux

Unix y Linux son sistemas operativos diferentes y no existe una derivación histórica entre ambos. Dicho de otro modo: no es trazable código de los laboratorios de AT&T en el código de Linux. Existe de todas formas una relación conceptual, funcional y de implementación del estándar POSIX. Para muchos, la historia entre el primer Unix de 1969 y el primer Linux en 1991 ya es conocida.

Voy a reseñar a continuación algunas diferencias de alto nivel entre ambos kernels:

  • si bien los dos son monolíticos, Linux soporta la carga y descarga de módulos dinámicamente (mientras está en ejecución);
  • Linux tiene soporte para multiprocesamiento simétrico (SMP), múltiples procesadores pueden acceder a una única memoria;
  • el kernel de Linux es preemtive, puede sacar a un proceso del procesador para realizar planificación -algunas versiones de Unix tienen esta característica-;
  • Linux no diferencia entre procesos y threads, los threads son tipos de procesos que comparten memoria;
  • Linux provee un modelo orientado a objetos para las clases de dispositivos, eventos hot-pluggable y dispositivos de sistemas de archivos a nivel de espacio de usuario;
  • Linux ignora algunas características de Unix que sus desarrolladores consideran pobremente diseñadas, como los STREAMS, o que no pueden ser implementadas de forma limpia;
  • Linux es libre, con una política en la que cada agregado debe solucionar un problema real, de forma clara y con una sólida implementación.

Basado en Linux Kernel Development 3ra edición (Robert Love).

2
Jan
2011

Autenticación en sistemas Linux: contraseñas

Para validar el ingreso de un usuario a un sistema Linux se compara el usuario y la contraseña ingresados con la información de una base de datos. De haber una coincidencia, el ingreso es válido.

La base de datos en la que se almacena esta información es un archivo de texto plano -con permisos de lectura restringidos al superusuario- ubicado en /etc/shadow. En lugar de almacenarse la contraseña en texto claro, se guarda el resultado de aplicarla a una función irreverisble (hash). La comparación al ingresar al sistema se da entre el hash guardado y la función de hashing aplicada a la contraseña ingresada por el usuario.

El hecho de que una función de hashing sea irreversible permite que, aún viendo el producto final, no se pueda deducir la contraseña que lo generó y que permitiría ingresar al sistema. Existen de todas formas posibles ataques a esta solución como el método de las colisiones -en algoritmos de hashing inseguros- o de diccionarios.


Leer el resto del artículo »

2
Jan
2011

Manejo de grupos en UNIX – 3a parte

Administración de grupos

El comando groupadd permite agregar grupos en el sistema.

Definir grupo con contraseña:

groupadd -p contraseña-encriptada grupo_de_prueba

El comando groupmod permite modificar grupos en el sistema.

Modificar ID de grupo (los valores entre 0 y 999 son típicamente para grupos del sistema):

groupmod -g nueva-id grupo_de_prueba

Modificar nombre de grupo:

groupmod -n nuevo-nombre grupo_de_prueba

Modificar contraseña de grupo:

groupmod -p nueva-contraseña-encriptada grupo_de_prueba


Leer el resto del artículo »

2
Jan
2011

Manejo de grupos en UNIX – 2a parte

¿Cómo funcionan los grupos?

Cuando un usuario ingresa al sistema, tiene un grupo primario al que pertenece (definido en /etc/passwd). Si desea ingresar a otro grupos, utiliza el comando newgrp:

newgrp grupo

El usuario puede ingresar a un grupo al que no pertenece escribiendo su contraseña -siempre que este habilitada-.

Un usuario puede desloguearse del grupo al que entró con el comando exit. Si quiere desloguearse sucesivamente de distintos grupos a los que se fue logueando, con exit pasa al grupo anterior. Cuando llega al último, sale del sistema.

Una aplicación directa del manejo de grupos es a nivel de archivos. Cada archivo tiene un usuario propietario (owner) y un grupo al que pertenece (group). Estos datos corresponden con el usuario que lo creó y el grupo al que estaba logueado el usuario.

Para modificar el grupo al que pertenece un archivo, se puede ejecutar el siguiente comando:

chown usuario:grupo archivo

o

chgrp grupo archivo

El usuario debe pertenecer o estar logueado en el grupo que le asignará al archivo.


Leer el resto del artículo »

2
Jan
2011

Manejo de grupos en UNIX – 1a parte

Veremos en esta serie de artículos el manejo de grupos en sistemas UNIX. Los grupos definen conjuntos de usuarios del sistema. Tienen el objetivo de facilitar la gestión de permisos agrupandolos por clases de acceso similares. El acceso puede ser a archivos, discos, impresoras, periféricos, etc. Un mismo usuario puede pertenecer a grupos diferentes y cada uno le otorga los permisos que corresponden.

/etc/group

Este archivo contiene información de los grupos definidos en el sistema. Cada línea del archivo tiene la siguiente forma:

sambashare:x:122:martin
  • el primer elemento es el nombre del grupo;
  • el segundo elemento la contraseña -como sucede con la información de usuarios, la contraseña encriptada no se guarda allí sino en el archivo /etc/gshadow-;
  • el tercer elemento es el número de grupo (GID); y
  • el cuarto elemento es una lista de usuarios que son miembros del grupo.

Los elementos van separados por : y los usuarios del grupo por ,.


Leer el resto del artículo »

1
Jan
2011

BIOS Passwords

Establecer una contraseña para el BIOS es recomendable en ambientes donde el acceso físico de un atacante es factible.

El objetivo que persigue es doble:

  • prevenir que las configuraciones del BIOS sean alteradas; y
  • evitar que el sistema pueda ser inicializado.

Las configuraciones posibles dependen de cada fabricante. VMware habilita esta funcionalidad en su producto VMware Workstation como se visualiza a continuación:

Vmware bios password

Una característica a tener en cuenta es cómo resuelve el fabricante del BIOS la posibilidad de un reinicio del sistema. VMware Workstation exige ingresar nuevamente la contraseña de BIOS, logrando así un nivel adicional de seguridad.

Si combinamos una contraseña de BIOS, con un órden de dispositivos de arranque que comience por el disco principal y contraseñas para el gestor de arranque del sistema operativo, podríamos evitar el inicio no autorizado con un rescue CD y la manipulación de archivos sin permisos. En este escenario, la efectividad de los controles de seguridad dependerá de la gestión de contraseñas. Si el riesgo de que el disco sea físicamente removido del sistema es considerable, sería necesaria su encriptación.

En conclusión, debemos tomar medidas para evitar modificaciones o visualización de archivos con seguridad y control de acceso no gestionado por el sistema operativo del dispositivo.

1
Jan
2011

GRUB passwords en Linux

Existen tres razones principales por las que resulta conveniente proteger con contraseña el gestor de arranque (boot loader) GRUB en sistemas Linux:

  1. prevenir el ingreso en modo Single User Mode – Si los atacantes logran iniciar en este modo, obtendrán acceso a la estación de trabajo como usuario con permisos administrativos (root), sin necesidad de saber su contraseña;
  2. prevenir el acceso a la consola de GRUB – Los atacantes podrían usar esta consola para cambiar las opciones de arranque u obtener información del sistema; y
  3. prevenir el acceso a sistemas inseguros – Si en la estación de trabajo hay instalados múltiples sistemas operativos, el atacante podría preferir iniciar en uno inseguro como DOS y realizar operaciones no permitidas.

El primer paso consiste en generar un hash con la herramienta de GRUB:

/sbin/grub-md5-crypt


Leer el resto del artículo »