18
Jan
2011

Listar servicios en Linux

Los servicios se inician en Linux mediante scripts que se encuentran en la carpeta /etc/rc.d/init.d/. En las carpetas /etc/rc.d/rcX.d/ tenemos enlaces simbólicos a estos scripts, según el runlevel en que se deben ejecutar.

El siguiente comando muestra los servicios que están actualmente ejecutándose:

service --status-all

La forma de consulta es preguntarle el status al script pero no todos están preparados para dar esta información.

El siguiente comando muestra en qué runlevel ejecuta cada servicio manejado por chkconfig:

chkconfig --list


Leer el resto del artículo »

16
Jan
2011

Open Directory en OS X Server con clientes FreeBSD y Ubuntu

Estuve haciendo algunas pruebas con máquinas virtuales VMware Workstation 7. El objetivo fue levantar un Open Directory (OpenLDAP) en OS X 10.5 Server, crear un usuario en el dominio compartido y utilizarlo para autenticarse en estaciones de trabajo de la red. Las estaciones de trabajo correrían sistemas OS X, Ubuntu y FreeBSD.

La infraestructura de la red 192.168.42.0/24 fue:

  • OS X 10.5 Server
  • OS X 10.5 Client
  • FreeBSD 8.1
  • Ubuntu 10.10 Server


Leer el resto del artículo »

11
Jan
2011

Autenticación vs Autorización

¿Cuál es la diferencia entre autenticación y autorización?

Authentication proves a user’s identity, and authorization determines what the authenticated user is permitted to do. A user typically authenticates by providing a valid name and password. A service can then authorize the authenticated user to access specific resources. For example, file service authorizes full access to folders and files that an authenticated user owns.

You experience authentication and authorization when you use a credit card. The merchant authenticates you by comparing your signature on the sales slip to the signature on your credit card. Then the merchant submits your authorized credit card account number to the bank, which authorizes payment based on your account balance and credit limit.

Open Directory Administration – Apple

La autenticación es el proceso que permite determinar que un individuo es quien dice ser. La autorización es el proceso de otorgar permisos de acceso a un individuo autenticado. Estos permisos pueden ser por ejemplo para utilizar un recurso o acceder a un sistema.

La autenticación puede ser en base a:

  • algo que el individuo sabe (contraseña, passphrase, PIN);
  • algo que el individuo tiene (token, certificado, Smart Card);
  • algo que el individuo es (huella digital, iris).

Se llama autenticación de dos factores al proceso de autenticación que requiere al menos dos de estos mecanismos.

9
Jan
2011

Eliminación segura de archivos en Linux / OS X

srm es una utilidad en la línea de comandos para sistemas Linux, OS X y otros UNIX-like que permite la eliminación segura de archivos en disco. En la eliminación normal, simplemente se rompe el enlace que permite localizar físicamente al archivo y se marca ese espacio como “reusable”. Con la eliminación segura, antes de romper estos enlaces, se realizan sobreescrituras, renombramientos y truncamientos. De esta manera es imposible recuperar la información.

srm -rf /home/usuario/directorio_a_borrar

-r: borrar recursivamente archivos y directorios
-f: no interrumpir si el archivo o directorio no existe

El modo por defecto utiliza el algoritmo de Gutmann con 35 pasadas. En teoría, una sola pasada no es suficiente para garantizar la irrecuperabilidad de la información porque las distintas frecuencias alcanzan distintas profundidades en el material magnético. A través del análisis de señales podría identificarse qué fue escrito anteriormente. Sin embargo, ninguna empresa privada de recuperación de información ni entidad gubernamental clama haber utilizado estas técnicas. Las 35 pasadas tienen que ver con sobreescribir mediante patrones de distintas codificaciones. Para un dispositivo de codificación conocida, solo sería necesario sobreescribir con sus patrones.


Leer el resto del artículo »

9
Jan
2011

Seguridad a nivel de hardware en OS X Server

Una de las recomendaciones de seguridad para proteger sistemas es deshabilitar todos aquellos servicios, subsistemas, protocolos, drivers u otros componentes innecesarios. Un sistema debería tener lo mínimo necesario para cumplir con la función requerida.

Veremos en este artículo como eliminar los drivers de componentes innecesarios para un sistema OS X Server. Esta medida por sí sola no es suficiente: cualquiera que obtuviera permisos suficientes o escapara los controles de acceso del sistema operativo podría reinstalarlos. Pero debemos recordar que la seguridad es en capas y esto, junto a otras configuraciones, agrega dificultad para comprometer el sistema. Es necesario tener cuidado al actualizar el sistema para que no sean reinstalados estos componentes.

Los drivers en OS X son directorios .kext o kernel extensions. Se encuentran en la carpeta /System/Library/Extensions.

Remover soporte Wi-Fi:

sudo srm -rf /System/Library/Extensions/IO80211Family.kext


Leer el resto del artículo »

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 »