Seguridad del Host
Conceptos Claves
- Conocimiento de contraseñas shadow y su funcionamiento.
- Desactivar servicios de red que no estén en uso.
- Comprender el rol de los TCP wrappers.
Términos y utilidades
- /etc/nologin
- /etc/passwd
- /etc/shadow
- /etc/xinetd.d/*
- /etc/xinetd.conf
- /etc/inetd.d/*
- /etc/inetd.conf
- /etc/inittab
- /etc/init.d/*
- /etc/hosts.allow
- /etc/hosts.deny
Introducción
Para mantener segura nuestra computadora debemos tener en cuenta detalles como el uso apropiado de contraseñas, el monitoreo de puertos de red y el control sobre los servicios que se ejecutan con acceso a la red.
Gestión de Contraseñas
La mayoría de las distribuciones de Linux implementa el sistema de contraseñas Shadow. En el cual, las contraseñas no son almacenadas en el archivo /etc/passwd como se hacia en los comienzos sino que son almacenadas en un archivo separado, el /etc/shadow.
El /etc/shadow, además de contener las contraseñas de los usuarios, contiene la siguiente información, almacenada en 8 campos separados por dos puntos (:).
Una línea del archivo shadow se vería así.
…
adolfo:$6$OTVKm:15786:0:99999:7:::
…
Los campos son:
Campo | Descripción |
---|---|
1 | Nombre usuario |
2 | Contraseña |
3 | Ultimo Cambio de Contraseña |
4 | Mínimo de días que tienen que pasar desde el ultimo cambio de contraseña para poder volver a cambiar |
5 | Máximo de días que un usuario puede mantener una misma contraseña antes de cambiarla |
6 | La cantidad de días antes de que expire la contraseña que el usuario recibirá el mensaje de advertencia. |
7 | La cantidad de días después de que haya expirado la contraseña, después de los cuales se deshabilitara la cuenta. |
8 | Fecha de expiración de la cuenta |
Súper Servidores
Muchos programas que son servidores en una red, abren puertos y escuchan conexiones directamente. Algunos otros, usan un intermediario, llamado súper servidor.
Este programa escucha por conexiones en representación de otro programa y luego, una vez iniciada la conexión le pasa el control al programa indicado. Estos trae ventajas desde el punto de vista de performance y seguridad.
Históricamente el súper servidor estándar era inetd, pero actualmente es mas frecuente encontrarse con su sucesor, xinetd.
Archivo Inetd.conf
Este archivo contiene la siguiente información.
Línea Típica
…
ftp stream tcp nowait root /usr/sbin/tcpd /usr/sbin/in.ftpd -l
…
Nombre del Servicio: El nombre del servicio como aparece en el archivo /etc/services.
Tipo de Socket: Stream (flujo), dgram(datagrama) o raw (conexión de bajo nivel).
protocol: Si se utiliza tcp o udp como protocolo de capa de transporte.
wait/no wait: Si se conecta y libera el socket o si procesa todos los paquetes y luego realiza un timeout (wait).
Usuario: El usuario que corre el servicio. root y nobody son opciones comunes.
Servidor: El servidor que corre el servicio.
Parámetros: Aquí se indica quien es quien realmente corre el servicio.
TCP Wrappers
Estos proveen un programa llamado tcpd. En lugar de que inetd invoque al servicio directamente, inetd llama a tcpd, que chequea si el programa esta autorizado a correr; si es así, lo invoca.
TCP wrappers se configura por medio de 2 archivos, /etc/hosts.allow y /etc/hosts.deny . El primero especifica computadoras que tienen permitido acceder al sistema de determinada manera, los sistemas no listados, no tienen acceso.
El archivo hosts.deny, en contraste, define todos los hosts con acceso denegado, si un host no figura en la lista, tiene acceso permitido. Si existen los 2 archivos, hosts.allow tiene precedencia.
Xinetd
Xinetd es el sucesor tanto de inetd como de los wrappers tcp, ya que incorpora las funciones de filtrado de los wrappers.
Se configura a través de el archivo /etc/xinetd.conf. Este contiene las opciones globales por defecto y una directiva para incluir los archivos dentro de el directorio /etc/xinetd.d.
Cada servicio que corre por medio de xinted instala un archivo dentro de xinetd.d con sus propias opciones de configuración.
El formato es distinto al inetd.conf, pero las opciones son similares, agrega un opción disable, para habilitar y deshabilitar el servicio.
Bloquear el acceso a usuarios con /etc/nologin
En el caso de que se necesite realizar tareas de mantenimiento durante las cuales sea necesario restringir el acceso a usuarios que no sean root. Lo que se puede hacer es crear un archivo, llamado /etc/nologin; el cual con su sola presencia, le indica a Linux que solo los usuarios normales no pueden iniciar sesión en el sistema. Si se ingresa algún texto en ese archivo, los usuarios que intenten iniciar sesión, recibirán el mensaje ingresado en el /etc/nologin.
Desactivar los servicios que no estén en uso
Es importante tener controlado la cantidad de servicios que tengo ejecutándose en el sistema. Una manera de revisar esto, es inspeccionar los directorios que contienen rutinas de inicio. Dependiendo si se trabaja con SysV, Upstart o . Estos directorios variaran.