|
SEGURIDAD EN LINUX 1.- INTRODUCCIÓN Y ASPECTOS GENERALES SOBRE LA SEGURIDAD EN UN SISTEMA INFORMÁTICO 1.1 Seguridad Física - Uso del equipo por personal autorizado.
- Solo podrá tener acceso al equipo aquel personal que cuente con conocimientos mínimos sobre computación.
- Poder contar con mas de un servidor de base de datos lo cual asegure la integridad total de la información.
- Ubicación de las instalaciones que cumplan con normas internacionales de calidad (ISO 9000).
- Control de alarma la cual notifique en todo momento sobre la integridad física del sistema.
1.2 Seguridad Lógica - Construcción de contraseñas en diversos niveles del sistemas donde permita solo el acceso en base a niveles de seguridad de usuarios con permiso.
- En base al sistema operativo que use como plataforma, algoritmos que generen claves para poder encriptar los archivos de contraseñas dentro del sistema lo cual me permita mayor seguridad en un entorno de red.
- Generar un módulo del sistema para la emisión de reportes para el administrador del sistema en donde se muestre tablas de uso del sistema así como los usuarios y los niveles de acceso por parte de los tales para poder determinar el uso y acceso al sistema.
- También es necesario contar con el diseño de módulos que ejecuten un Control de alarma la cual notifique en todo momento sobre la integridad de la información del sistema.
1.3 Conducta del usuario - Establecer campañas constantes sobre la funcionalidad y logros que se alcanzaran con el sistema los cuales creen una conciencia en el usuario y logren forman en el un interés en el uso del sistema.
- Análisis del uso y trayecto del sistema por parte de los usuarios para poder detectar fugas de información y posibles problemas con los datos accesados del sistema.
2.- PASOS PARA DETERMINAR SI UNA RED HA SIDO HACKEADA - Examina los ficheros de log buscando conexiones desde lugares inusuales o cualquier actividad fuera de lo normal. Por ejemplo, mira el ultimo log, "process accounting", todos los logs creados por syslog, y otros logs de seguridad. Si tu firewall o tu router escriben logs en lugares distintos de donde los escribe el sistema estudiado, recuerda chequear también esos logs. Esta no es una garantía completa a no ser que "los logs se escriban en un append-only media"; muchos intrusos editan los ficheros de log para intentar ocultar su actividad.
- Busca los ficheros con los bits setid y setgid activados (especialmente los setuid de root) en todo el sistema. Los intrusos suelen dejar copias de programas como /bin/sh o /bin/time con el bit "setuid" activado para permitirles acceso a root mas tarde. Se puede usar el programa de UNIX find(1) para encontrar ficheros con setuid y/o setgid activados.
- Comprueba los binarios del sistema para asegurarte de que no han sido alterados. Hay intrusos que cambian programas en sistemas UNIX tales como login, su, telnet, netstat, ifconfig, ls, find, du, df, libc, sync, cualquier binario referenciado en /etc/inetd.conf, y otros programas de red y del sistema críticos así como librerías de objetos compartidas.
- Ten cuidado a la hora de confiar en los backups; tus backups pueden contener a su vez caballos de Troya.
- Comprueba que en tu sistema no existan programas no autorizados de monitorizacion de red, comúnmente llamados sniffer "packet sniffer". Un intruso puede usar un sniffer para capturar información de la cuenta y password de un usuario.
- Examina todos los ficheros que son ejecutados por cron y at. Hay intrusos que dejan puertas traseras en ficheros ejecutados por cron o enviados a at pues permiten al intruso volver al sistema.
- También, verifica que todos los ficheros/programas referenciados por los jobs de cron y at, y los ficheros del job en si mismos, no tienen permisos de escritura para todo el mundo.
- Comprueba que no haya servicios no autorizados. Inspecciona el /etc/inetd.conf buscando cambios no autorizados. Busca entradas que ejecuten un programa shell, y verifica todos los programas especificados en /etc/inetd.conf para comprobar que son correctos y que no han sido reemplazados por un caballo de Troya.
- También chequea servicios legítimos que hayas comentado en el /etc/inetd.conf. Algún intruso puede haber habilitado un servicio que previamente habías deshabilitado o sustituir el programa inetd por un caballo de Troya.
- Examina el fichero /etc/passwd y comprueba las modificaciones de dicho fichero. Verifica que no haya nuevas cuentas creadas sin autorización, cuentas sin password, o cambios en el UID (especialmente UID 0).
- Comprueba que no existan entradas no autorizadas en los ficheros de configuración de red y del sistema. En particular, busca entradas con '+' y nombres de hosts externos no apropiados en el fichero /etc/hosts.equiv, /etc/hosts.lpd, y en todos los ficheros .rhosts. Estos ficheros no deben tener permisos de escritura para todo el mundo. Además, confirma que estos ficheros existían previamente a ninguna intrusión y que no han sido creados por el intruso.
- Busca por todo el sistema ficheros raros u ocultos, pues estos ficheros pueden usarse para ocultar herramientas e información.
- Examina todas las maquinas de la red local cuando busques señales de una intrusión. Si la seguridad de un host se ha visto comprometida, la seguridad de otros en la red también.
3. CUOTAS Las cuotas permiten especificar limites en dos aspectos del almacenamientoen disco: El numero de inodos que puede poseer un usuario o un grupo; y el numero de bloques de disco que puede ocupar un usuario o un grupo. La idea que se esconde detrás de las cuotas es que se obliga a los usuariosa mantenerse debajo de su limite de consumo de disco, quitándoles su habilidad de consumir espacio ilimitado de disco en un sistema. Las cuotas se manejan en base al usuario y al sistema de ficheros. Si elusuario espera crear ficheros en mas de un sistema de ficheros, las cuotas deben activarse en cada sistema de ficheros por separado. 4.- DETECCION DE INTRUSOS MEDIANTE ANALISIS DE HUELLAS 4.1 Ficheros que guardan registros: utmp: Guarda un registro (log) de los usuarios que estan tilizando el sistema mientras estan conectados al sistema. Directorios: /var/adm/utmp y /etc/utmp wtmp: Guarda un log cada vez que un usuario se introduce en el sistema o sale del sistema. Directorios: /var/adm/wtmp y /etc/wtmp lastlog: Guarda un log del momento exacto en que un usuario entro por ultima vez. Directorio: /var/adm/lastlog acct o pacct: Registra todos los comandos ejecutados por cada usuario (aunque no registra los argumentos con que dichos comandos fueron ejecutados). Directorio: /var/adm/acct 4.2 Comandos que permiten ver el estado del sistema: who y users: Permite saber quien esta conectado al sistema en el momento en que ejecutamos el comando. finger: Lo mismo que el comando who, con el añadido de que podemos saber que usuarios estan conectados a una determinada maquina en el momento en que ejecutamos el comando. last: Muestra la ultima vez que se conecto un usuario. Last toma la informacion que saca en pantalla del fichero wtmp. ps: Permite saber que procesos estan siendo ejecutados por el sistema y que usuarios los ejecutan. accton: Activa un proceso llamado accounting, que es el que proporciona informacion al fichero acct. lastcomm: Permite saber que comandos han ejecutado los usuarios.Lastcomm toman la informacion que sacan por pantalla del fichero acct. Por lo tanto, si queremos borrar nuestras huellas del sistema, bastar con borrar cualquier log relativo a nuestro usuario de los ficheros utmp, wtmp y acct. Esto se puede hacer de dos formas: 4.3 Eliminar huellas de utmp y wtmp - No borramos los ficheros pero los dejamos con cero bytes.
- Editar los ficheros con un ‘zapper’ que pueden borrar los datos relativos a un usuario en particular de estos ficheros dejando el resto de los datos intacto.
4.4 Eliminar huellas de acct Es bastante complicado borrar nuestras huellas de este fichero, de hecho no se pueden borrar del todo, aunque se pueden reducir a una minima parte nuestra presencia en el sistema. 4.5 Mas sistemas de log: - Syslog: Mediante el syslog se puede configurar de tal forma que determinados programas, procesos o aplicaciones generen mensajes que son enviados a determinados ficheros donde quedan registrados dichos mensajes.Este fichero si puede ser editado en modo texto y puede ser analizado para ver dónde hemos ido dejando rastros y posteriormente borrar esas huellas, aunque por supuesto, necesitamos ser root para poder hacerlo.
- TCP-Wrapper: Se trata de una aplicacion que proporciona una serie de mecanismos para el registro y filtro de aquellos servicios invocados o llamados a traves del inetd (internet daemon). Con esta herramienta el administrador posee un control absoluto de las conexiones hacia y desde su maquina y es informado en todo momento de las conexiones que se han hecho desde su maquina y hacia su maquina.
5.- SISTEMAS DE CONTRASEÑAS EN LINUX 5.1 Sistema de cifrado de passwords El estandar DES transforma la informacion de texto llano en datos encriptados llamado texto cifrado mediante el uso de un algoritmo especial y valor semilla llamado clave. En el sistema crypt(3) el texto llano se encripta en un grupo de ceros, posteriormente el texto cifrado resultante es encriptado de nuevo con el password del usuario como clave, repitiendose este proceso 25 veces. Una vez finalizado, los 64 bits se dividen en 11 caracteres y se guardan en el archivo /etc/passwd.
Para "animar" un poco mas la cosa se utiliza lo que se denomina en criptologia como un "grano de sal". Se trata de un valor de 12 bits que se utiliza para modificar el resultado de la funcion DES, esto es, un valor que puede variar de 0 a 4095. Asi que para cada contraseña posible existen 4096 formas de encriptacion y almacenamiento.
Cuando utilizamos el programa /bin/passwd para introducir una nueva contraseña, dicho programa utiliza un "grano de sal" basado en la hora del sistema, la cual es utilizada para la funcion de calculo de la contraseña encriptada. Esta sal es guardada junto a la contraseña en el archivo /etc/passwd. Asi que los dos primeros caracteres de una contraseña encriptada son en realidad el "grano de sal". Asi pues, un password una vez encriptado no se puede desencriptar. Pero esto no quiere decir que el password este seguro y no se pueda averiguar. 5.2 ¿ Donde va la clave que tecleo cuando el sistema me pide "password" ? Va al fichero /etc/passwd, salvo que tengamos Shadow Password en esta forma: rcano : xkHrjur : 501 : 1000 : Roberto Cano,,, : /home/rcano : /usr/bin/zsh Cada línea de este fichero representa a un usuario del sistema y contiene informacion sobre el, repartida en 7 campos separados por ":", a saber: - login del usuario rcano
- password encriptada xkHrjur
- Clave cifrada UID del usuario 501
- GID del grupo del usuario 1000
- Nombre Completo Roberto Cano
- Home directory /home/rcano
- SHELL por defecto /usr/bin/zsh
Si en tu sistema tienes "Shadow Password", en vez de una clave cifrada verás una "x". Si no tienes nada es que ese usario no tiene clave asignada. Si hay un "*" esa cuenta esta deshabilitada. 5.3 ¿Como puedo adivinar la clave de un usuario? El fichero /etc/passwd tiene permisos de lectura para todo el mundo, con lo cual todo el mundo puede leer la clave encriptada de todo el mundo. Podemos ver la clave, pero esta cifrada según un método ( estándar de encriptación DES ) con lo que es practicamente imposible averiguar la clave original. El problema es que es tremendamente fácil dedicarse a encriptar palabras de un fichero y ver si coinciden con la clave encriptada. Tambien podemos usar programas de adivinacion de claves. Estos programas usan diccionarios de claves, que son simplemente archivos con miles y miles de logins y passwords diferentes. Diccionarios en Internet hay de todos los idiomas conocidos y algunos por conocer, asi como ficheros con nombres famosos, grupos de musica, actores, etc. Es posible que tengas incluso un fichero-diccionario en tu sistema busca en /usr/dict/spanish ó /etc/dictionary. Los programas buscadores de contraseñas son facilmente diseñables, en realidad uno sencillo puede crearse en menos de 30 lineas de codigo. Esta forma de buscar claves válidas se conoce como el método de la fuerza bruta y si no tomamos precauciones puede ser muy efectivo. Para mantener una seguridad decente en tu sistema Linux, en lo concerniente a la entrada al sistema, dos son las medidas basicas a adoptar: - Elegir passwords "resistentes"
- Usar un sistema con "Shadow Password"
5.4 Como elegir una clave segura. - Nunca elegir como clave la misma palabra que el "login" ( es lo primero que prueban los programas de crackeo).
- Nada de elegir una "palabra clave" recuerda que hay diccionarios de todos los idiomas, asi como de nombres propios o apellidos, de personas y cosas famosas etc. La clave no debe ser una palabra!
- Tampoco vale una palabra modificada fácilmente, los programas de crackeo descritos permiten incluso atacar combinaciones de palabras con prefijos y sufijos, Mayusculas-minúsculas, orden inverso... etc.
- Elige pues, una combinación de letras ( a ser posible mayúsculas y minúsculas, recuerda que son diferentes ) y números o signos de puntuación ( comas, puntos guiones ... )
- No elijas cosas obvias como tu fecha de cumpleaños, el nombre de tu perro/novia/mujer/hijo la matrícula de tu coche, tu número de teléfono.. Ah! y no la apuntes en un POST-IT en tu monitor!! ;)
5.5 ¿Como cuanto de segura? Un programa de "cracking" puede ensayar y comparar 10.000 combinaciones por segundo. El tiempo máximo que tardaría un cracker en encontrar una clave de 8 caracteres que use minusculas, mayusculas, numeros y simbolos seria de ¡¡19.329 AÑOS!! Por el contrario, si un usuario elige una clave de 6 caracteres, todas letras minúsculas. A 10.000 combinaciones por segundo, su clave sería encontrada en ¡¡8 horas y media!! 5.6 Shadow Password. Claves en la sombra. Los sistemas modernos ya no depositan la clave encriptada en /etc/passwd, sino en otro llamado /etc/shadow al que solo tiene acceso el root. En el lugar de la clave encriptada, en el fichero /etc/passwd se coloca una "x" : rcano : x : 501 : 1000 : Roberto Cano,,, : /home/rcano : /usr/bin/zsh El paquete Shadow proporciona más características adicionales de seguridad, como por ejemplo: - Fichero de configuración para establecer opciones para el "login" ( /etc/login.defs )
- Utilidades para añadir, modificar y borrar cuentas de usuarios y grupos
- Claves con fecha de "caducidad"
- Expiración de claves y bloqueo de cuentas
- Mejor control sobre la elección de las claves de los usuarios ( no nos dejará elegir cualquier clave sencilla de adivinar )
Al administrador del sistema le queda la tarea de comprobar que todo el mundo tiene una clave mínimamente resistente, para lo cual tendrá que probar alguno de los programas de crackeo de claves descritos sobre su mismo sistema. 6.- INTRODUCCIÓN A PGP 6.1 ¿Qué es PGP? PGP es "Pretty Good Privacy" o en castellano "Intimidad Bastante Buena", y es un programa para cifrado del correo electrónico (y para todo tipo de información) que reune tres características: Es rápido, seguro y gratis. 6.2 ¿Para qué me puede servir? - Nadie leerá el correo electrónico (e-mail) salvo su destinatario. Es decir tendrá "intimidad" mediante cifrado o encriptado de su mensaje.
- Nadie podrá suplantar su identidad en Internet y enviar mensajes trucados, así como retocar o alterar los suyos originales (Autentificación mediante firma digital).
Esto se consigue a través de un potente mecanismo conocido como "Criptografía de clave pública" del que hablaremos más adelante y que ha provocado no pocos problemas legales a su autor. 7.- EMAIL BOMBING Y SPAMMING 7.1 Descripción El email bombing es consecuencia de mandar repetidamente mensajes a una dirección particular. El email spamming es una variante del bombing; envía email a cientos o miles de usuarios. Puede dañar aún más si los destinatarios contestan ese email, causando que todas las direcciones originales reciban esa contestación. El email bombing y el spamming puede combinarse con el spoofing, el cual altera la identidad de la cuenta que manda el email, haciendo más difícil saber de dónde viene el mensaje. 7.2 Detección Si tu email es lento o no parece que sea enviado ni recibido, la razón puede ser que el sistema está intentando procesar un número alto de mensajes. 7.3 Reacción - Identifica el origen del email bombing o spamming y configura tu router para prevenir prevenir la llegada de paquetes de esa dirección.
- Revisa las cabeceras de los email para determinar el verdadero origen del email. Contacta con el sistema que has identificado para alertarle de la acción.
7.4 Prevención Desafortunadamente, en este momento, no hay ninguna forma de prevenir el email bombing y spamming (excepto desconectarte de Internet), y es imposible predecir el origen del próximo ataque. - Crea tus propias herramientas que te ayuden a reconocer y a responder el email bombing y spamming y, de esta forma, minimizar el impacto de esta actividad. Estas herramientas deberían incrementar las capacidades de entrada y chequear y alertar de los mensajes entrantes/salientes que salen de un mismo usuario o sitio en un corto espacio de tiempo.
- Si tu proveedor tiene pocos servidores de correo, puedes configurar tu firewall para asegurarte de que las conexiones SMTP desde fuera de tu firewall pueden ser hechas sólo a tu servidor central de correo y a ninguno de los otros sistemas.
- Aunque no prevenga el ataque, minimiza el número de máquinas desprotegidas frente a los intrusos ante un ataque basado en el SMTP controlando el SMTP de alguna manera. Con esto, sólo tienes un pequeño número de sistemas--el servidor principal de correo y algún otro de copia de seguridad--que configurar.
- No propagues el problema siguiendo con (o respondiendo) el masivo envío de correo.
8.- SPOOFED/FORGED EMAIL 8.1 Descripción El email spoofing puede ocurrir de distintas formas, pero todas tienen el mismo resultado: un usuario recibe un email que parece haber sido enviado de un cierto sitio, pero realmente ha sido remitido desde otro. Es a menudo un intento de engañar al usuario para que revele información sensible (por ejemplo, el password) o dañina. Ejemplos de email spoofing que pueden afectar la seguridad del sistema son: - mensajes remitidos por el administrador del sistema obligando a los usuarios a cambiar su password por otro que se les proporciona, suspendiendo su cuenta si no se hace.
- mensajes remitidos por una persona de la "autoridad" obligando a los usuarios a enviarle una copia del archivo de password o de otro tipo de información sensible.
8.2 Reacción - Revisa toda la información (cabeceras de los email y los archivos de estado del sistema) relacionados con el email spoofing, siguiendo las políticas y procedimientos de tu organización.
- Examina los archivos de estado del tcp_wrapper, ident y sendmail para averiguar el origen del email spoofing.
- La cabecera del email trae a menudo un completo registro de los saltos que ha dado hasta llegar al destino. La información en la cabecera (el Received: y el Message-ID), junto con los archivos de estado (logs), deberían ayudarte a determinar cómo el mensaje ha alcanzado tu sistema.
8.3 Prevención (Disuasión) - Usa firmas criptográficas (por ejemplo, PGP "Pretty Good Privacy" u otra tecnología para encriptar) para intercambiar mensajes autentificados. je.
- Configura tu demonio de correo para prevenir que nadie se conecte a tu puerto SMTP y haga email spoofing.
- Considera un único punto de entrada de email a tu sistema. Puedes hacer esto configurando tu firewall para que las conexiones SMTP desde el exterior deban ir a través de un servidor central de correo.
------------------------------
|