Download Sistemas Operativos 3 Tema: Seguridad Del Sistema Y Usuarios Facil
Document related concepts
Transcript
Nombre: Wandirys Lappost Díaz Matrícula: 2013-1534 Materia: Sistemas Operativos 3 Tema: Seguridad Del Sistema Y Usuarios Facilitador: José Doñé Índice 1. Introducción 2. Seguridad Del Sistema Y Usuarios 3. Los Usuarios En Sistemas GNU/Linux Y En Ubuntu 3.1 Usuarios En Los Sistemas GNU/Linux 3.2 El Usuario Superadministrador 4. Malware En Linux 4.1 Malware En Linux 4.2 Virus Multiplataforma 5. Usuarios Y Seguridad Del Sistema 6. Tipos De Usuarios 6.1 Usuario root 6.2 Usuario daemon 6.3 Usuario bin 6.4 Usuario adm 6.5 Usuario uucp 6.6 Usuarios cron, mail, news, usenet, lp y lpd 6.7 Usuarios auth, auditor y audit 7. Control De Acceso Al Sistema 8. Control De Acceso Al Sistema 9. Conclusión 10. Bibliografía Introducción No existe ningún Sistema que pueda considerarse libre de riesgos, los Sistemas se pueden calificar de "fiables" pero nunca de "seguros". En este trabajo, hablaremos de algunas técnicas sencillas de seguridad para el sistema y los usuarios de Linux. Veremos que la seguridad es un estado que debe ser mantenido activamente a través de una interacción adecuada y responsable entre el usuario y el software y/o sistema operativo instalado. Seguridad Del Sistema Y Usuarios Los Usuarios En Sistemas GNU/Linux Y En Ubuntu Actualmente, la mayoría de los sistemas operativos existentes son multiusuario y multitarea. Y Ubuntu no podía ser menos. Es un sistema operativo multiusuario porque cuando un usuario va a usar el equipo lo primero que va a necesitar hacer es identificarse para ser autorizado a abrir una sesión de trabajo. Y es multitarea porque en el mismo instante varios procesos pueden estar funcionando y cada uno puede pertenecer a usuarios distintos. Es decir, todo esto implica que más de un usuario puede trabajar en el sistema de forma simultánea a otros, ejecutando una o más tareas a la vez. Y además, la información que se guarda en el equipo también puede pertenecer a distintos usuarios. Por este motivo, es muy importante que el propio Sistema operativo incorpore mecanismos que permitan manipular y controlar correctamente a los usuarios: un sistema de entrada o identificación (login), programas que puedan ser ejecutados por cada uno, mecanismos de seguridad que protejan el hardware del ordenador, mecanismos de seguridad que permitan la protección de los ficheros o archivos de cada usuario, etc. Todo ello para evitar conflictos entre los usuarios y entre la información relativa a cada uno de ellos. Así existirán ciertos atributos de usuario que se asociarán a los ficheros, a los directorios, a los procesos, etc. En función de esto habrá cosas que estarán permitidas a ciertos usuarios y a otros no. Veremos, a continuación, como Ubuntu responde a esta filosofía, como los usuarios del sistema podrán estar organizados en diferentes grupos a fin de poder manejar permisos no a nivel individual sino a nivel de grupo. Esto se hace para simplificar la administración del sistema, como comprobarás. Usuarios En Los Sistemas GNU/Linux Los Sistemas Operativos GNU/Linux como Ubuntu organizan toda esta información mediante un sistema de usuarios y grupos. Así al entrar en el sistema debemos identificarnos con un login y una contraseña (también haremos lo propio cuando cambiemos de usuario en el equipo). El login será un nombre que identificará de forma inequívoca al usuario. La contraseña será una combinación de letras, números y/o caracteres especiales. Y, en este último caso, es muy recomendable que sigan ciertas recomendaciones: mezclar caracteres alfanuméricos con caracteres escritos en mayúscula, no debe estar formada por ninguna palabra que se encuentre en el diccionario o similares, que no implique cuestiones personales como números de teléfono, números de carnet de identidad, nombres de familiares, etc. Una contraseña como y5zS39ra es una buena contraseña mientras que gatito no lo es. El sistema de contraseñas será siempre del tipo unidireccional. Ello significa que la contraseña no es almacenada como texto, sino que es cifrada y guardada tal como es (por eso, la utilización de asteriscos para visualizarlas, por ejemplo). Cuando el usuario entra en el sistema y escribe su contraseña, ésta es cifrada y comparada con la que está almacenada en el sistema. Si coinciden, la identificación será positiva, y si no coinciden, no habrá identificación y el sistema no permitirá la entrada el usuario. Lo importante de todo este sistema es que a partir del cifrado no es posible conseguir, de ninguna manera, la clave original. El Usuario Superadministrador En todo Sistema Operativo, y por tanto en cada sistema GNU/Linux, existe un usuario privilegiado que tiene acceso a todos los recursos del ordenador y a los datos de todos los demás usuarios. Este usuario se conoce como superusuario, superadministrador, administrador del sistema e incluso (coloquialmente) como “dios”. Su nombre en el sistema es root (superusuario). Éste será el usuario que tendrá todos los permisos, el que tendrá los privilegios máximos que le permitirán efectuar cualquier operación sobre el sistema. Es absolutamente necesario que este usuario superadministrador exista, ya que será quien se encargará de toda la administración y gestión de servidores, grupos, etc. Pero es también absolutamente necesario que esta cuenta no se utilice para trabajar normalmente en el sistema. Sólo deberíamos entrar como root cuando sea realmente necesario, utilizando, por tanto, otras cuentas para el trabajo normal de los usuarios. Así nunca podremos dañar el sistema con operaciones erróneas o con la prueba de programas maliciosos, por ejemplo. Como puedes suponer la misión de root es muy importante: es el que instala nuevos componentes de hardware, nuevos programas para todos los usuarios, decide qué pueden hacer los demás usuarios, da de alta a los nuevos, mantiene la política de la seguridad del sistema ante posibles ataques, etc. Y, por lo tanto, ya que puede acceder a los datos de cualquier otro usuario, debe ser responsable y no hacer mal uso de este poderoso poder. Evidentemente, para acceder a la cuenta de root hay que saber su contraseña. Ya que conocer esta contraseña da control absoluto sobre el sistema, es el secreto mejor guardado de un sistema UNIX. ¡Y esta contraseña de root es la que has definido cuando instalaste el sistema operativo, así que... ya sabes... úsala con precaución y mantenla a buen recaudo! Malware En Linux El sistema operativo GNU/Linux, Unix y otros derivados generalmente son calificados como bien protegidos contra los virus de ordenador. No se conoce la existencia de ninguna amenaza del denominado software malicioso, malware, en Linux que se haya expandido a un nivel siquiera similar a las amenazas existentes en el sistema operativo Microsoft Windows. Esto se atribuye en gran parte a que el malware carece usualmente de permisos para realizar actividades nocivas dentro del sistema y a las rápidas actualizaciones frente a Vulnerabilidades que se eliminan a diario en GNU/Linux, propias del modelo de software de código abierto. Algunos factores adicionales, para el refuerzo de la seguridad en GNU/Linux, son la mayor cultura informática difundida entre los usuarios de sistemas GNU/Linux y la falta de incentivos para un programador a la hora de escribir malware para GNU/Linux, debido a su relativamente baja cuota de mercado (~90% Windows vs ~1% Linux). Además, un sistema con GNU/Linux instalado, por lo general, no se parece a otro: Diferentes versiones de núcleo Linux, diferente software instalado, opciones de configuración y características de seguridad estrictas, etcétera. Lo cual dificulta en gran medida la labor de un atacante. La cantidad de software malicioso disponible en GNU/Linux, incluyendo virus, troyanos y otro software escrito específicamente para GNU/Linux, se ha incrementado en los últimos años, duplicándose durante 2005 debido a la explosión del sistema operativo en entornos de usuario final e ingreso al mercado de las computadoras de escritorio. Vulnerabilidades Al igual que otros sistemas Unix, GNU/Linux implementa un entorno multiusuario donde los usuarios reciben una serie de privilegios o permisos específicos y donde existe un control de acceso dedicado. Para obtener el control de un sistema GNU/Linux o provocar alguna consecuencia seria al propio sistema, el malware debería obtener acceso root en dicho sistema. Una de las vulnerabilidades de GNU/Linux es que multitud de usuarios piensan que no es vulnerable a los virus. Tom Ferris, un investigador de Security Protocols en Mission Viejo, California, dijo en 2006: "En la mente de la gente, si no es Windows, es seguro, y ese no es el caso. Piensan que nadie escribe malware para GNU/Linux o Mac OS X. Pero eso no es necesariamente cierto...". Shane Coursen, un consultor técnico senior de Kaspersky Lab señaló que "el crecimiento del malware en GNU/Linux se debe simplemente a su creciente popularidad, particularmente como sistema operativo de escritorio... La utilización de un sistema operativo es directamente relacionada con el interés de los programadores de malware a la hora de desarrollar software malicioso para ese sistema operativo". Los virus y ataques malintencionados presentan una amenaza real a los sistemas Linux. Si un binario infectado contiene uno de esos virus al ser ejecutado, el sistema se infectaría. El nivel de infección dependerá de los privilegios del usuario que ejecutó el programa. Si éste fuese una cuenta de superusuario podría llegar a infectar el sistema entero. En caso de un usuario normal, el sistema operativo estaría seguro aunque los datos del usuario no. El virus podría borrar e incluso enviar esos datos a otro equipo remoto. Por otro lado, las vulnerabilidades de escalada de privilegios pueden permitir que malware ejecutándose bajo una cuenta de acceso limitado también se propague por todo el sistema. El uso de repositorio de software reduce las amenazas de instalación de software malicioso, al ser comprobados por los administradores, los cuales intentan asegurar que no se cuele ningún malware en sus repositorios. Por ello, para asegurar la distribución segura de software, están disponibles sistemas como los checksum MD5. El uso adecuado de estas firmas digitales supone una línea adicional de defensa, que previene la violación de las comunicaciones a través de ataques man-in-the-middle o ataques de redirección como ARP Spoofing o DNS Poisoning. Todo esto limita el alcance de los ataques, reduciendo los potenciales usuarios malignos a los autores originales y a aquellos con acceso administrativo al propio repositorio. El número de programas maliciosos, incluidos virus, troyanos y otras amenazas, escritos específicamente para Linux ha ido en aumento en los últimos años y más que duplicado durante el año 2005 422 a 863. Virus Multiplataforma Existen varias aplicaciones antivirus disponibles para Linux, entre las cuales destacan: ClamAV (software libre) Avast! (versiones gratuita y comercial) AVG (versiones gratuita y comercial) Avira Antivir (propietario) BitDefender (propietario) F-PROT (propietario) ESET (versiones comerciales) Kaspersky Linux Security (versiones comerciales) Sophos (propietario) Usuarios Y Seguridad Del Sistema Tipos De Usuarios Desde el punto de vista del Sistema, un usuario es una entidad que hace uso de los recursos. La mayor parte de los sistemas UNIX poseen una serie de usuarios predefinidos, de los cuales los más típicos son los que se describen a continuación: Ø Usuario root: La cuenta root es la más privilegiada de un Sistema Unix. Esta cuenta permite llevar a cabo todas las facetas de la Administración de sistemas, como por ejemplo la creación de nuevas cuentas, cambiar "passwords" de usuario, examinar los ficheros de "log", instalar software, etc... Cuando se usa esta cuenta hay que ser extremadamente cuidadoso. La cuenta de root no suele tener restricciones de seguridad, lo cual facilita la posibilidad de ejecutar algún proceso por error. El Sistema supone que el Administrador del Sistema sabe lo que está haciendo, y hará exactamente lo que se le pida, sin preguntas. Esto te puede llevar a situaciones como por ejemplo la de borrar un Sistema de Ficheros crucial por culpa de un comando mal tecleado. La característica que define a la cuenta de superusuario es el UID 0(User IDentificator), no el nombre de usuario root, cualquier usuario cuyo UID sea 0 es una cuenta de superusuario. No es recomendable crear cuentas superfluas con el UID a 0, sin embargo en determinados escenarios puede resultar útil disponer de un segundo superusuario. Ø Usuario daemon: Se utiliza para ejecutar los procesos de servidor del Sistema. Este usuario sólo existe para ser propietario de estos procesos (y ficheros asociados), y para garantizar que se ejecutan con los permisos apropiados. Ø Usuario bin: Es el propietario de los ficheros ejecutables de la mayoría de los comandos de usuario. Ø Usuario adm: Es el propietario de los ficheros de contabilidad del Sistema; el directorio "home" del usuario adm también suele contener varios ficheros log y otros ficheros de datos. Ø Usuario uucp: Uucp quiere decir "Unix to Unix copy", que es un subsistema de la mayoría de los sistemas UNIX. Este usuario es el propietario de las herramientas y ficheros del subsistema UUCP. Pueden existir otras cuentas relacionadas con este subsistema, por convención todas ellas deben comenzar por "uu". Ø Usuarios cron, mail, news, usenet, lp y lpd: Son pseudo usuarios diseñados para ejecutar los procesos necesarios de cada uno de los subsistemas relacionados con cada uno de ellos. Ø Usuarios auth, auditor y audit: Son los pseudo usuarios asociados al subsistema de auditoría. A excepción de la cuenta de root, estos usuarios rara vez hacen login en el Sistema, es por ello que el fichero /etc/passwd normalmente tiene estas cuentas deshabilitadas. Sin embargo asegúrate de examinar este fichero en tu Sistema. Las cuentas estándar sin password son graves fallos de seguridad en un Sistema. Además de los usuarios descritos anteriormente, muchos sistemas Unix incluyen otros usuarios como "guest", "install", "demo", etc... Estas cuentas suelen venir sin password, incluso a veces se les asigna un password estándar conocido que es el mismo para todos los sistemas de esa distribución. En cualquier caso, lo mejor es deshabitar esas cuentas o asignarles un nuevo password. Control De Acceso Al Sistema Cuando encendemos el ordenador se ejecuta un software, llamado BIOS (Basic Input/Output System) cuya función es determinar la configuración de la máquina y proporcionar un sistema básico de control sobre los dispositivos. Este software se suele almacenar en memoria ROM (Read only Memory) o FLASH que permite la actualización de la BIOS sin cambiar el chip. En el momento del arranque se puede acceder a la BIOS de la máquina mediante la pulsación de una tecla o combinación de ellas. Desde la interfaz de dicho software es posible modificar parámetros del sistema, como la fecha y hora del sistema, secuencia de arranque, etc. Lógicamente el acceso a la BIOS puede estar protegida con contraseña, si se habilita. Por lo tanto, una primera medida de seguridad será habilitar la contraseña de la BIOS, y que no coincida con otras contraseñas utilizadas. Frente a esta medida de seguridad hay que decir que la contraseña BIOS se puede anular provocando un cortocircuito en la batería de la CMOS. Incluso hay fabricantes que, en la placa base, incluyen un jumper que permite borrar la BIOS. Además, existen también utilidades de captura de contraseñas BIOS como son: !BIOS de Bluefish(conjunto de herramientas de propósito general para atacar a la BIOS que incluye utilidades de captura y herramientas de descifrado y que normalmente tiene éxito con la mayoría de las BIOS), CMOS PASSWORDS RECOVERY TOOLS , KILLCMOS, etc. Una vez arrancada la máquina se ejecuta el gestor de arranque, que puede ser LILO (Linux Loader) o GRUB GNU (Grand Unified Boot Loader) y que es el responsable de la carga del sistema operativo seleccionado. LILO acepta una serie de opciones en línea cuando se ejecuta. En concreto, el argumento single es el más peligroso, ya que arranca Linux en modo monousuario y por defecto, la mayoría de las distribuciones vuelcan a un prompt de root en una shell de comandos sin pedir ningún tipo de contraseña. Es una puerta de entrada al sistema que se debe de cerrar. Contraseñas Y Encriptación Las contraseñas de Linux utilizan el algoritmo de cifrado de IBM Data Encryption Standard (DES). Estas contraseñas son de longitud fija de 8 caracteres. Pero, siempre que sea posible es preferible utilizar contraseñas MD5. MD5 es un algoritmo hash que mejora a DES en los siguientes aspectos: las contraseñas son de longitud infinita, permiten al inclusión de signos de puntuación y otros caracteres, y además, es exportable fuera de Estados Unidos, ya que no ha sido desarrollado por su gobierno. Se almacenan, en principio, en el archivo /etc/passwd que debe tener permisos 644. Por seguridad y, dado que es necesario mantener la lectura sobre este archivo, se utilizan las shadows passwords y, en este caso, las contraseñas se almacenan en el archivo /etc/shadow con permisos 600, es decir sin lectura para el grupo y los otros. De esta forma se impide que los usuarios normales puedan ver las contraseñas cifradas. El propietario de ambos archivos debe ser root. Es conveniente cambiar periódicamente las contraseñas, tanto los usuarios como el administrador root. La utilidad chage cambia la fecha de caducidad de las contraseñas. La orden: # chage -M 30 usuario obliga a usuario cambiar su contraseña cada 30 días. Y la orden: # chage -W 5 usuario avisa a usuario que su contraseña va a expirar en 5 días. También es conveniente periódicamente ejecutar la orden pwconv para asegurarnos de que todas las contraseñas tienen shadow. En ocasiones, y debido a manipulaciones anómalas, hay contraseñas que se quedan en /etc/passwd en vez de en /etc/shadow. Con pwconv sincronizamos ambos archivos. La integridad del archivo /etc/passwd se realiza con la orden pwck, que comprueba que el formato del archivo es correcto y los datos de cada uno de sus campos son válidos. Aunque más adelante se habla del sistema de logs, hay que indicar que las modificaciones o intentos de modificaciones de las contraseñas quedan registradas en el archivo /var/log/messages. Utilizando el comando less y los filtros adecuados se pueden controlar los mensajes correspondientes a estos cambios (intentos) de contraseña. Conclusión Al concluir este tema, aprendimos que En un Sistema multiusuario es muy difícil controlar si las contraseñas que están eligiendo los usuarios son fuertes o no. Para estar seguro de que los usuarios no están utilizando contraseñas débiles, lo mejor es utilizar herramientas parecidas a las que usan los "cracker" e intentar "reventar" las contraseñas de tu Sistema. La mejor herramienta para ello es una utilidad llamada "Crack". Bibliografía http://www.lasticenelaula.es/portal/index.php/seguridad/administraciondel-sistema/593-los-usuarios-en-sistemas-gnulinux-y-en-ubuntu http://es.wikipedia.org/wiki/Malware_en_Linux http://blog.desdelinux.net/por-que-linux-es-mas-seguro-que-windows/ http://labsopa.dis.ulpgc.es/adminso/material-didacticopractico/tutorial/CONTENIDOS/TEMA3/tema3.htm http://recursostic.educacion.es/observatorio/web/en/software/softwaregeneral/562-elvira-misfud-