El sistema operativo GNU/Linux y sus herramientas libres en el mundo de la seguridad: estudio del estado del arte. | ||
---|---|---|
Anterior | Siguiente |
El sistema operativo está formado por el software que permite acceder y realizar las operaciones básicas en un ordenador personal o sistema informático en general. Los sistemas operativos más conocidos son: AIX (de IBM), GNU/Linux, HP-UX (de HP), MacOS (Macintosh), Solaris (de SUN Microsystems), las distintas variantes del UNIX de BSD (FreeBSD, OpenBSD..), y Windows en sus distintas variantes (de la empresa Microsoft). En lo que a seguridad se refiere, un sistema operativo puede caracterizarse por:
Hay sistemas operativos que han sido creados con la seguridad como objetivo fundamental de diseño. Estos serán de entrada más seguros que los demás. En otros sistemas operativos aunque no fuera el objetivo fundamental sí ha podido ser un parámetro importante y por último en otros no se ha considerado más que a posteriori. Es de esperar que sean éstos últimos los que más problemas de seguridad tienen.
Los sistemas operativos modernos ofrecen grandes capacidades de comunicación. Desde el punto de vista de la seguridad estas capacidades pueden convertirse en puntos de acceso a posibles atacantes y será necesario protegerlos. El sistema operativo deberá proveer de los mecanismos y/o herramientas necesarias para llevar a cabo esta tarea de forma suficientemente fiable. Esto incluye ofrecer la capacidad de cerrar toda vía de comunicación que no se use y limitar la que sí se emplee a los casos y usuarios que realmente se deseen permitir.
Estas capacidades son las que van a permitir determinar qué elementos acceden a qué partes del sistema en sus distintos niveles (ficheros, dispositivos, elementos de comunicación), etc.
Dado que en general las aplicaciones no son portables entre sistemas operativos de distintos fabricantes (exceptuando algunos casos entre las distintas variantes de UNIX) otro elemento a considerar en la seguridad de cada sistema operativo se caracteriza por la cantidad y calidad de herramientas de seguridad que tiene disponibles.
En algunos sistemas operativos se accede al sistema por medio de un usuario único que tiene permiso para realizar cualquier operación. Este es el caso de los sistemas operativos más antiguos como MS-DOS y algunos más recientes como la serie Windows 95/98/Me de Microsoft o MacOS (antes de MacOS X) de Macintosh. En estos sistemas no existe una diferenciación clara entre las tareas que realiza un administrador del sistema y las tareas que realizan los usuarios habituales, no disponiendo del concepto de multiusuario, un usuario común tiene acceso a todas las capacidades del sistema, pudiendo borrar, incluso, información vital para su funcionamiento. Un usuario malicioso (remoto o no) que obtenga acceso al sistema podrá realizar todo lo que desee por no existir dichas limitaciones.
Otros sistemas operativos, sin embargo, han estado siempre preparados para soportar sistemas multiusuario, permitiendo agruparlos y asignar distintos privilegios a cada uno de ellos o a sus grupos. Este es el caso de todos los sistemas UNIX y de los sistemas Windows NT/2000. Esta característica es enormemente útil desde el punto de vista de seguridad. Por ejemplo en el caso de que un usuario se vea afectado por un virus, una intrusión, etc. el resto de los usuarios (si los hay) y, sobre todo, el sistema no tendrán por qué verse afectados a menos que vulnerabilidades en éstas puedan ser utilizadas por un atacante para elevar sus privilegios.
Cabe notar que los sistemas operativos libres (Linux y BSD) no soportan una asignación de grupos y usuarios tan versátil como NT y 2000. Los grupos en UNIX son mucho menos versátiles (y más difíciles de administrar) que aquellos aunque también más conocidos.
Queda claro que que en todo ordenador donde la seguridad es un factor que se considera importante debe optarse por un sistema operativo que soporte varios usuarios con distintos privilegios.
Generalmente los motivos por los que un individuo elije un sistema operativo u otro tienen más que ver con la facilidad de uso o la gama de aplicaciones disponibles que con la seguridad. Sin embargo, la elección del sistema operativo determinará en gran medida la garantía de seguridad que se podrá conseguir al acceder a servicios ofrecidos a través de Internet. Por tanto, cuando se necesite esta garantía deben conocerse bien las características en lo que a seguridad se refiere tienen los distintos sistemas operativos. Introducir estas características será el objetivo de este apartado.
Muchas veces se ha dicho que GNU/Linux es un sistema muy seguro (especialmente en comparación con Windows), pero esta afirmación hay que matizarla: la verdad exacta es que GNU/Linux tiene el potencial para convertirse en enormemente seguro. Pero de entrada no tiene porque serlo. En particular debemos ser conscientes de que se trata de un sistema operativo pensado para entornos de red y por ello tiene grandes capacidades de conexión con otros ordenadores y de ofrecerles servicios. En la mayoría de distribuciones tras realizar la instalación inicial se dejan activos una serie de servicios como puede ser un servidor web, un servidor de ficheros (FTP), servicios de bajo nivel (hora, caracteres aleatorios, etc). Desde el punto de vista de seguridad conviene desactivar todos los servicios que no se deseen ofrecer para reducir el número de oportunidades que se le dan a un posible atacante para encontrar una vulnerabilidad. Este sería el primer paso para configurar el sistema para que sea más seguro. Sólo mediante una configuración cuidadosa y exhaustiva del sistema operativo y sus aplicaciones se podrá decir que el ordenador es seguro. Y GNU/Linux ofrece las herramientas y la capacidad de configuración necesaria para hacer esto posible.
Otra opción, también libre, son los sistemas operativos de la serie BSD: NetBSD, OpenBSD y FreeBSD. Todos ellos son de tipo UNIX y al igual que GNU/Linux tienen una gran capacidad de configuración, lo que permite prepararlas para que sean enormemente seguros. Cabe destacar el proyecto OpenBSD, que tiene como principal objetivo construir un sistema operativo tan seguro como sea posible. Para ello auditan el código tanto del núcleo como de las herramientas y aplicaciones básicas del sistema. Si se necesita un sistema muy seguro esta es una gran opción. Simplemente debe tenerse en cuenta que habitualmente son las aplicaciones básicas las que son auditadas de forma habitual.
En general los sistemas operativos propietarios están en igualdad de condiciones frente a la seguridad que los sistemas operativos libres que acaban de presentarse. Una ventaja que sí han tenido hasta ahora es que el propio fabricante daba soporte técnico y garantías de seguridad de sus sistemas (especialmente en los UNIX propietarios). De igual forma, otra ventaja adicional ofrecida por estos sistemas operativos, inexistente actualmente en GNU/Linux, es que los fabricantes persiguen de forma activa la certificación del sistema operativo (o una parte de éste) frente a los estándares de seguridad del mercado. Por ejemplo, Solaris (de Sun) cuenta con una versión reducida (Trusted Solaris 7) que ha sido certificada B1 y que cumple el Common Criteria (CC, http://www.commoncriteria.org/) al nivel EAL4, AIX de IBM también tiene una versión que cumple EAL4 del CC.
Pero ahora también están apareciendo un número interesante de empresas de soporte que ofrecen este mismo servicio para todo tipo de software libre. La diferencia es que no hay una única opción, sino tantas como el mercado permita. Y con ello se está descubriendo también la ventaja que supone no estar atado a un proveedor del servicio. No sólo por la posibilidad de cambiar sino porque esta posibilidad obliga a las empresas que dan el servicio a esforzarse en hacerlo lo mejor posible.
Por completitud se tratarán a continuación ligeramente las características generales, en lo que a seguridad se refiere, de los principales sistemas operativos propietarios.
La serie de sistemas operativos Windows 95/98/Me no fue diseñada inicialmente para entornos de red como Internet. En particular no se tuvieron en cuenta aspectos fundamentales relacionados con seguridad. Por ello es conocido como uno de los sistemas menos seguros y con más vulnerabilidades. Por un lado debido a que es un sistema operativo limitado en cuanto a la capacidad para ofrecer servicios puede pensarse que se ofrecen menos puntos de ataque. Sin embargo esta ventaja es ficticia, ya que el motivo real de la no existencia de estos servicios no es la seguridad.
Para solventar este problema, Microsoft lanzó Windows NT/2000 rediseñado desde cero y con la seguridad en mente. Este sistema operativo tiene unas capacidades de red muy superiores al anteriormente mencionado y mejores características de seguridad. Como punto negativo podría citarse que durante su existencia se han conocido muchas vulnerabilidades debidos a errores de diseño o implementación. La no disponibilidad de forma pública de su código fuente hace imposible auditar sistemas basados en Windows NT/2000 para garantizar su seguridad. Un problema que en ocasiones es más grave aún y también está relacionado con el hecho de ser un producto propietario y cerrado es que existe la posibilidad de puertas traseras. Por esta razón algunas instituciones y gobiernos han desechado su uso en determinadas situaciones. Microsoft sí tiene una política de distribución de código fuente de sus sistemas operativos, pero dicha distribución se realiza a compañías a las que Microsoft determina "capacitadas" para recibirlo.
Por último, debe considerarse la opción de los sistemas UNIX propietarios: AIX de IBM, HP/UX de HP, etc. Estos sistemas tienen características parecidas a GNU/Linux o BSD, con la excepción de que no se puede auditar su código dado que no es público. El caso del sistema operativo Solaris de SUN es un caso a considerar aparte ya que sí ofrece el código fuente de su sistema operativo (aunque no de forma libre). Sin embargo, algunos de estos sistemas, como es el caso de AIX y de Solaris (con la definición de roles) pueden ofrecer capacidades de seguridad más avanzadas en el sistema operativo que GNU/Linux. Estas capacidades permiten implementar MAC ("Mandatory Access Control"). Actualmente, GNU/Linux dispone de un parche, aún no implementado dentro del núcleo distribuido oficialmente, que permite incorporar este mismo tipo de niveles de control de acceso de los usuarios (y aplicaciones) al sistema operativo.
Las auditorías de código son, por tanto, posibles o no en determinados sistemas operativos en función de la publicidad dada a su sistema operativo. Aún así, es necesario considerar los resultados de dichas auditorías. Si bien Microsoft y Sun ofrecen el código fuente de su sistema operativo (el primero con más restricciones que el segundo), ninguno de los dos incorporará, necesariamente, los resultados de una auditoría de código sobre la base del sistema operativo, los criterios para tomar dicha decisión no dependen de la auditoría en sí sino de la política de la propia compañía. Sin embargo, en la auditoría que se pueda realizar a sistemas operativos libres, como es el caso de GNU/Linux o BSD, la aplicación de los resultados o no se realiza mediante una discusión pública y es el propio resultado de la auditoría el que debe valer por si mismo para su introducción o no, no existen presiones comerciales de pérdida de imagen, ni el "time to market" ni ningún tipo de consideraciones que no sean las puramente técnicas. Este mismo hecho, la modificación inmediata del código y su distribución es el que puede dar lugar a que, aún cuando Sun distribuya de forma pública el código de Solaris, se audite de forma más intensiva el código de GNU/Linux o BSD, ya que son las propias personas que realizan la auditoría las que pueden implementar las modificaciones.
Nota de los autores: no disponemos información ni experiencia suficiente para hacer una valoración justa de MacOS.