El sistema operativo GNU/Linux y sus herramientas libres en el mundo de la seguridad: estudio del estado del arte. | ||
---|---|---|
Anterior | Siguiente |
Una vez introducido el tema del documento y presentada la situación del software libre y de GNU/Linux en éste es el momento de entrar en materia.
En este apartado se presenta el primero de los escenarios planteados. Esto es, el caso en el que un sistema final, como puede ser un PC de sobremesa, accede a Internet para usar sus servicios. ¿Qué amenazas aparecen? ¿cómo puede defenderse uno ante ellas? ¿qué herramientas libres existen en GNU/Linux para ello? son algunas de las preguntas a las que se buscará una respuesta.
Existen amenazas desde el momento en que un sistema informático accede a Internet para navegar, enviar y recibir correo electrónico, chatear, descargar ficheros, etc. No se pretende enumerar aquí todas, ya que para ello habría que analizar el entorno concreto, pero si se quiere dar una visión general de las más importantes o comunes, como lo son las siguientes:
Modificación o borrado de información almacenada en el ordenador.
Acceso no deseado a información confidencial almacenada.
Instalación no intencionada de programas maliciosos (conocidos como troyanos) en el sistema que puedan vulnerarlo o lo conviertan en plataforma de ataque hacia otros ordenadores.
Lectura o modificación (no deseadas) de información transmitida.
Estas amenazas surgen a través de diferentes medios. Entre ellos podemos destacar los siguientes:
Viruses o troyanos que se difunden a través de una aplicación que manipule archivos o realice tareas sin intervención del usuario (esto incluye programas de correo electrónico, programas de descarga de archivos, algunas aplicaciones ofimáticas, etc).
Malversación de servicios de red ofrecidos por el ordenador (en ocasiones sin que el usuario sea consciente de su existencia) y que tienen fallos de seguridad o una configuración inadecuada. Un ejemplo de esto es el acceso remoto (no permitido) al sistema a través de aplicaciones como telnet, ssh o similares.
Páginas web dañinas. Generalmente el daño es causado empleando applets, código JavaScript o algún fallo de implementación del navegador empleado.
La información enviada no va protegida mediante técnicas de cifrado. Esto no debe hacerse siempre, pero si en los casos en los que no se desee que esa información sea leída o modificada por terceros. Es importante se consciente de que, no sólo el sistema final con el que nos comunicamos, sino todos los sistemas intermedios tienen la posibilidad de capturar la información tranmitida.
El primer paso para proteger el sistema es deshabilitar todas las posibles puertas de entrada para un intruso y limitando el impacto de una intrusión, el siguiente paso consistirá en usar una serie de herramientas que en conjunto introducen barreras de protección ante las amenazas descritas previamente.
Dentro de las herramientas de protección a priori se deben destacar las posibilidades de bastionado (o securización) del propio sistema operativo, este bastionado realizará una correcta configuración para reducir la exposición del sistema, por un lado, y limitar las posibilidades de afectar a éste en caso de que tenga lugar una intrusión.
Dentro de las herramientas de protección se van a analizar, por un lado, los denominados cortafuegos personales. Estas herramientas van a permitir el control de la información entrante y saliente de un sistema poniendo en manos del usuario la posibilidad de restringir el flujo en cualquiera de lo sentidos. Estas medidas de protección protegerán al usuario de algunos de los ataques realizados desde el exterior (derivados de intentos de comunicación no deseados) y de la comunicación del sistema con el exterior de forma incontrolado (motivado por la introducción de algún troyano). Por otro lado se comentarán las herramientas de protección contra código malicioso (viruses).
En esta sección se examinan distintas herramientas y aplicaciones que permiten garantizar en gran medida la seguridad de un sistema que accede a Internet. Se mostrarán herramientas libres y propietarias, dejando al lector que extraiga sus propias conclusiones en cuanto a funcionalidad y capacidades.
En el caso de GNU/Linux el bastionado del sistema implica, por un lado: deshabilitar todos los servicios de red que no se van a usar y que por defecto están habilitados y, por otro, asegurar la configuración interna del propio sistema para reducir el impacto de un troyano o un usuario malicioso que ha entrado en éste.
Existen herramientas para realizar estas tareas de bastionado de forma automática. En particular cabe destacar Bastille. A diferencia de otras que realizan, silenciosamente, las tareas de limitación de accesos a un servidor o arreglos sobre los sistemas de ficheros, Bastille intenta educar al administrador guiando el proceso de bastionado con una serie de preguntas sobe el uso que se le va a dar al sistema. Aunque también dispone de una serie de perfiles que se pueden implementar de forma inmediata sobre el sistema.
También es importante destacar la herramienta TITAN, una herramienta multi plataforma (soporta Linux, FreeBSD, así como distintas versiones de Solaris) para el bastionado de sistemas operativos UNIX. Se trata de una herramienta orientada más hacia el administrador avanzado y es menos educativa que Bastille a este respecto. Dispone, al igual que Bastille, de una serie de perfiles predefinidos.
Algunos sistemas operativos propietarios también distribuyen herramientas de bastionado para sus sistemas. En concreto:
Sun ofrece una herramienta para determinar la situación de parcheo de un sistema frente a los parches distribuidos y también ha hecho público el Solaris Security Toolkit (también conocido como JASS) para Solaris. Aunque Sun no ofrece oficialmente soporte para éste. Esta herramienta realiza, a través de más de setenta scripts, restricciones de usuarios y servicios ofrecidos en el sistema operativo.
AIX. IBM ofrece una herramienta para determinar la actualización de parcheo frente a los boletines de seguridad emitidos por la compañía. De igual forma distribuye, dentro del paquete para Service Providers, Spupsec de AIX, una herramienta de bastionado que se reduce a restringir servicios ofrecidos de red y a hacr algunas modificaciones (mínimas) sobre el sistema de ficheros y las restricciones de acceso de usuarios.
Microsoft ofrece para Windows 2000 y Windows NT una herramienta (hfnetchk) para determinar la actualización de parcheo de servidores frente a los Service Pack distribuidos por Microsoft. Igualmente, Windows 2000 ofrece una serie de perfiles dentro de la configuración de seguridad del propio sistema operativo que se pueden utilizar para restringir la disponibilidad de servicios.
Los autores no conocen herramientas de bastionado disponibles para otros sistemas operativos: Windows 95/98/ME/XP, HP-UX, etc.
No existe, prácticamente, antiviruses desarrollados como software libre ya que las plataformas de software libre tradicionales (Linux y las variantes de BSD) no sufren de los defectos de diseño que han hecho de los antiviruses tan populares entre otras plataformas. En particular:
Los controles de seguridad son parte inherente del sistema operativo, los usuarios no pueden escribir en cualquier zona de memoria ni modificar ficheros del sistema operativo.
Existe un desacomplamiento entre el sistema operativo y las aplicaciones. La filosofía de UNIX de construir elementos que se van uniendo entre sí hace que las aplicaciones tradicionales (lectores de correo, navegadores de web) que han venido siendo fuente de introducción de viruses no pueden afectar de forma directa al sistema operativo a través de funcionalidades mal implementadas o configuradas (aunque sí a través de fallos en el software).
Esto no quiere decir que los viruses en estos sistemas operativos no existan pero, en realidad, son un conjunto muy básico y que no han dado lugar, hasta el momento, a propagaciones virulentas. Otra características, además, que hace que la propagación de un virus sea más difícil en los sistemas Unix es la gran heterogeneidad de plataformas. Evidentemente, en cuanto a configuración, pero aún más en cuanto a compatibilidad de binarios. El ritmo de alto crecimiento y actualización de Linux hace que haya muy pocos sistemas (en global) que tengan una idéntica disposición de núcleo del sistema, binarios y librerías.
Los sistemas operativos libres sí se han visto afectados, en algún momento determinado, por otro tipo de ataques que no han de confundirse con los viruses: gusanos. Es decir, programas que, aprovechando una vulnerabilidad en el sistema se propagan por sistemas interconectados. Cabe destacar que la única protección frente a este tipo de propagaciones, similares a las víricas, es la actualización constante de los sistemas y la reducción de los servicios potencialmente accesibles desde el exterior, tarea ésta realizada por las herramientas de bastionado.
El papel relegado actualmente a el software antivirus en los sistemas libres ha sido el de análisis, desde el punto de vista de servidor, de los ficheros que se transmiten a través de distintos medios (correo electrónico, servidores de ficheros, transferencia de archivos por ftp/www...). Existen implementaciones propietarias de software antivirus para este propósito pero también existe implementaciones libres que, aunque carecen de la base de datos de definición de virus, delegan en otro software (utiliznando una API estandarizada) la comprobación de los virus en sí. Cabe destacar: AMaViS, exiscan,Wmailscanner y Scan4Virus. Que son distintas implementaciones para el tratamiento de virus en servidores de correo libres (Sendmail, exim, y qmail respectivamente).
Evidentemente, al igual que se ha hablado previamente que los sistemas operativos libres carecen de software de antivirus por no ser fruto de ataques de éstos, existen un número muy alto de plataformas de antivirus propietarias. En gran medida debido a que son éstas plataformas las más afectadas por los ataques de viruses. No parece preciso enumerar todas las herramientas, pero si cabe destacar las compañías: Mcafee, Norton (Symantec), Trend Micro, Sophos, F-Secure y Panda Software.
Como se ha comentado, en GNU/Linux y BSD el propio sistema operativo ofrece la funcionalidad de filtrar paquetes. Sobre esta capacidad se han creado diversas herramientas que facilitan su configuración y que adquieren la fiabilidad del sistema sobre el que se usan. Esto es una enorme ventaja respecto a los casos en los que cada herramienta tiene que implementar su filtro y en los que el usuario no puede estar seguro de su fiabilidad. Los distintos sistemas operativos propietarios han empezado a incorporar capacidades de filtrado de paquetes (aunque rudimentarias) en sus últimas versiones (este es el caso de Windows 2000 y Solaris 8).
Estas herramientas se caracterizan por la funcionalidad que ofrecen (en particular sus funcionalidades avanzadas) y por la facilidad de uso. En general su función central consiste en actuar de cortafuegos en el acceso hacia y desde la red. Esto implica que se establecen reglas de filtrado que especifican en que casos se permitirá que se establezcan conexiones desde el exterior hacia dentro y desde dentro hacial el exterior. Además de este filtrado algunas herramientas permiten realizar una configuración de los servicios de red, por ejemplo cerrando aquellos que no se usen. En GNU/Linux la gran ventaja de estas herramientas es que se basan en los servicios de filtrado que ofrece el sistema operativo, es decir, son una capa de abstracción de un servicio común. Esto evita la fragmentación y, al mismo tiempo, hace más fiable las funcionalidades del sistema operativo dado que son probadas de forma intensiva por todas las implementaciones.
A continuación se presentan las que se han considerado más interesantes para un usuario final.
Esta es una herramienta de configuración de cortafuegos pensada para usuarios finales que no tienen porqué tener grandes conocimientos de seguridad. Dispone de un asistente que permite crear configuraciones básicas. Posteriormente puede mejorarse añadiendo y creando reglas (a las que denominan reglas dinámicas). En las siguientes figuras pueden observarse el asistente y la posterior adición de reglas.
Además dispone de un monitor de red que con el que se pueden observar intentos de ataque cuando se estén produciendo.
FireStarter está traducido a un gran número de idiomas, incluyendo el español.
Esta herramienta funciona bajo entornos Linux 2.2 y 2.4 y se distribuye como parte del entorno GNOME bajo licencia GPL. Su página oficial es firestarter.sourceforge.net.
GuardDog es una herramienta de protección pensada para plataformas Linux (versión 2.2) y completamente orientada a usuarios no expertos. Por ello no es necesario disponer de conocimientos ni de seguridad ni, del funcionamiento de las redes TCP/IP o de los parámetros internos del sistema operativo.
Mediante una interfaz gráfica el usuario debe indicar que desea que el cortafuegos a nivel de cada aplicación, no de IP como ocurre en otras herramientas. Gracias a este mayor nivel de abstracción se reduce la posibilidad de cometer errores. Esta garantía se ve incrementada por el hecho de que sigue una filosofía de que todo lo que no se permite explícitamente está prohibido.
Figura 3. Configuración de los permisos de cada aplicación para los ordenadores de la zona "Internet" en GuardDog
Por su puesto Guarddog, igual que FireStarter, permite gestionar y modificar el cortafuegos una vez creado.
En nuestra opinión, la calidad de su interfaz y un diseño bastante bien pensado hacen que esta sea una de las herramientas de cortafuegos más apropiadas para usuarios finales de todas las existentes entre el software libre y propietario. Esto lo ha conseguido gracias a su orientación completa a satisfacer a este tipo de usuarios a cambio de renunciar a ser útil en entornos más complejos, como los que se discutirán en el apartado de "Aspectos de seguridad para ofrecer acceso a Internet".
De nuevo esta es una herramienta diseñada explícitamente para usuario finales. Para usarla no es necesario comprender las reglas de filtrado subyacentes, simplemente va realizando una serie de preguntas y a partir de las respuestas crea un conjunto de reglas personalizadas.
Lokkit ha sido pensado para ordenadores que acceden a Internet a través de un módem telefónico o de cable. Eso permite que sea fácil de usar sin embargo no es la mejor herramienta para entornos más complejos.
Otros detalles que se pueden comentar sobre Lokkit son que aunque está preparada para ser adaptada a múltiples idiomas aún no tiene soporte para español y que las últimas versiones está avanzando en su integración con el entorno GNOME.
Puede obtenerse el software y más información sobre Lokkit en la página oficial de la herramienta.
Esta herramienta destaca por que accede a ella a través de una interfaz web. Está disponible a través de la página: http://www.linux-firewall-tools.com/linux/firewall/
Tras comenzar la configuración del cortafuegos un asistente va realizando preguntas para conocer nuestras necesidades. Estas preguntas son más o menos sencillas, aunque es necesario tener ciertos conocimientos de redes y seguridad para poder contestarlas.
Con Linux Firewall se permite configurar un cortafuegos a través de un formulario on-line. Incluye soporte para Linux 2.2, Linux 2.4 y FreeBSD.
A continuación se incluye una captura de esta herramienta en pleno funcionamiento.
Los cortafuegos personales propietarios siguen un enfoque similar al ya presentado para los cortafuegos personales de GNU/Linux. Las más importantes están dirigidas a entornos Windows personales (95/98/Me) que carecen de servicios de seguridad avanzados a nivel de sistema operativo. En los entornos Windows profesionales (NT y 2000) ya no se habla de cortafuegos personales. Aunque es posible instalar éstos en dichos entornos, e incluso Windows 2000 incorpora una rudimentaria definición de cortafuegos en la configuración (avanzada) de interfaces de red. Sin embargo, si se desean utilizar estos sistemas como cortafuegos se utilizan cortafuegos de gama alta (entre ellos Checkpoint Firewall-1).
Adicionalmete a las funciones de filtrado, algunos cortafuegos personales suelen incorporar capacidades de establecimiento de comunicaciones a través de redes privadas virtuales (con IPsec) y limitaciones en el envío y recepción de cookies (aún cuando ésta deba ser una tarea gestionada por el propio navegador de web).
Algunos de los cortafuegos personales propietarios más conocidos son:
zone-alarm
tiny-personal-firewall
PGPnet
AtGuard
Norton Personal Firewall
Black Ice Defender
Una fuente de vulnerabilidades en estos cortafuegos dirigidos al entorno doméstico surge de la intención de limitar al máximo las posibilidades ofrecidas a la persona que lo utiliza, dado que puede no estar versado en temas de seguridad (ni que saber que el puerto 80 es el de www). Estas presuposiciones pueden suponer la posibilidades de amenazas en el sistema aún cuando esté "supuestamente" protegido por un cortafuegos . Es interesante consultar el apartado "Personal Firewalls and IRC Zombie/Bot Intrusions" del artículo disponible en http://grc.com/dos/grcdos.htm se describe vulnerabilidades graves encontradas en uno de los cortafuegos personales más conocidos.