next up previous contents
Next: Seguridad del entorno de Up: Índice de Tablas Previous: Notas del autor   Índice General

Subsecciones

Introducción y conceptos previos

Introducción

Hasta finales de 1988 muy poca gente tomaba en serio el tema de la seguridad en redes de computadores de propósito general. Mientras que por una parte Internet iba creciendo exponencialmente con redes importantes que se adherían a ella, como BITNET o HEPNET, por otra el auge de la informática de consumo (hasta la década de los ochenta muy poca gente se podía permitir un ordenador y un módem en casa) unido a factores menos técnicos (como la película Juegos de Guerra, de 1983) iba produciendo un aumento espectacular en el número de piratas informáticos.

Sin embargo, el 22 de noviembre de 1988 Robert T. Morris protagonizó el primer gran incidente de la seguridad informática: uno de sus programas se convirtió en el famoso worm o gusano de Internet. Miles de ordenadores conectados a la red se vieron inutilizados durante días, y las pérdidas se estiman en millones de dólares. Desde ese momento el tema de la seguridad en sistemas operativos y redes ha sido un factor a tener muy en cuenta por cualquier responsable o administrador de sistemas informáticos. Poco después de este incidente, y a la vista de los potenciales peligros que podía entrañar un fallo o un ataque a los sistemas informáticos estadounidenses (en general, a los sistemas de cualquier país) la agencia DARPA ( Defense Advanced Research Projects Agency) creó el CERT ( Computer Emergency Response Team), un grupo formado en su mayor parte por voluntarios cualificados de la comunidad informática, cuyo objetivo principal es facilitar una respuesta rápida a los problemas de seguridad que afecten a hosts de Internet ([Den90]).

Han pasado más de diez años desde la creación del primer CERT, y cada día se hace patente la preocupación por los temas relativos a la seguridad en la red y sus equipos, y también se hace patente la necesidad de esta seguridad. Los piratas de antaño casi han desaparecido, dando paso a nuevas generaciones de intrusos que forman grupos como Chaos Computer Club o Legion of Doom, organizan encuentros como el español Iberhack, y editan revistas o zines electrónicos ( 2600: The Hacker's Quartely o Phrack son quizás las más conocidas, pero no las únicas). Todo esto con un objetivo principal: compartir conocimientos. Si hace unos años cualquiera que quisiera adentrarse en el mundo underground casi no tenía más remedio que conectar a alguna BBS donde se tratara el tema, generalmente con una cantidad de información muy limitada, hoy en día tiene a su disposición gigabytes de información electrónica publicada en Internet; cualquier aprendiz de pirata puede conectarse a un servidor web, descargar un par de programas y ejecutarlos contra un servidor desprotegido... con un poco de (mala) suerte, esa misma persona puede conseguir un control total sobre un servidor Unix de varios millones de pesetas, probablemente desde su PC con Windows 98 y sin saber nada sobre Unix. De la misma forma que en su día Juegos de Guerra creó una nueva generación de piratas, en la segunda mitad de los noventa películas como The Net, Hackers o Los Corsarios del Chip han creado otra generación, en general mucho menos peligrosa que la anterior, pero cuanto menos, preocupante: aunque sin grandes conocimientos técnicos, tienen a su disposición multitud de programas y documentos sobre seguridad (algo que los piratas de los ochenta apenas podían imaginar), además de ordenadores potentes y conexiones a Internet baratas. Por si esto fuera poco, se ven envalentonados a través de sistemas de conversación como el IRC ( Internet Relay Chat), donde en canales como #hack o #hackers presumen de sus logros ante sus colegas.

Justificación y objetivos

A la vista de lo comentado en el primer punto, parece claro que la seguridad de los equipos Unix ha de ser algo a considerar en cualquier red. Diariamente por cualquiera de ellas circulan todo tipo de datos, entre ellos muchos que se podrían catalogar como confidenciales (nóminas, expedientes, presupuestos...) o al menos como privados (correo electrónico, proyectos de investigación, artículos a punto de ser publicados...). Independientemente de la etiqueta que cada usuario de la red quiera colgarle a sus datos, parece claro que un fallo de seguridad de un equipo Unix o de la propia red no beneficia a nadie, y mucho menos a la imagen de nuestra organización. Y ya no se trata simplemente de una cuestión de imagen: según el Computer Security Institute, en su encuesta de 1998, las pérdidas económicas ocasionadas por delitos relacionados con nuevas tecnologías (principalmente accesos internos no autorizados) sólo en Estados Unidos ascienden anualmente a más 20.000 millones de pesetas, cifra que cada año se incrementa en más del 35%; los delitos informáticos en general aumentan también de forma espectacular año tras año, alcanzando incluso cotas del 800% ([Caj82]).

A lo largo de este trabajo se va a intentar hacer un repaso de los puntos habituales referentes a seguridad en Unix y redes de computadores (problemas, ataques, defensas...), aplicando el estudio a entornos con requisitos de seguridad medios (universidades, empresas, proveedores de acceso a Internet...); de esta forma se ofrecerá una perspectiva general de la seguridad en entornos Unix, el funcionamiento de sus mecanismos, y su correcta utilización. También se hablará, en menor medida, sobre temas menos técnicos pero que también afectan directamente a la seguridad informática, como puedan ser el problema del personal o la legislación vigente.

El objetivo final de este proyecto sería marcar unas pautas para conseguir un nivel de seguridad aceptable en los sistemas Unix conectados en cualquier red, entendiendo por 'aceptable' un nivel de protección suficiente para que la mayoría de potenciales intrusos interesados en los equipos de nuestra organización fracasara ante un ataque contra los mismos. Obviamente, es imposible garantizar una plena seguridad ante cualquier atacante: seguramente un pirata experimentado, con el tiempo suficiente, pagado, o simplemente muy interesado en uno de nuestros equipos, no tendría muchos problemas en acceder a él. Este hecho, aunque preocupante, es casi inevitable; lo evitable es que cualquier persona sea capaz de atacar con éxito un equipo simplemente por haber visto una película, descargado un par de páginas web y ejecutado un programa que ni ha hecho ni entiende.

Por supuesto, este proyecto no pretende ser en ningún momento una ayuda para la gente que esté interesada en atacar máquinas Unix o subredes completas, ni tampoco una invitación a hacerlo. Aunque por su naturaleza la información aquí presentada puede ser utilizada para dañar sistemas informáticos (como cualquier información sobre seguridad informática), no es ese su propósito sino, como hemos dicho, incrementar la seguridad de los sistemas Unix y las redes en las que éstos se ubican. Por tanto va a intentar estar escrito de forma que no se pueda utilizar fácilmente como una 'receta de cocina' para crackers; si alguien quiere un documento sobre cómo atacar sistemas, puede dejar de leer este trabajo y buscar en Internet información sobre ese tema. Conseguir romper la seguridad de un sistema de forma no autorizada es, en la mayoría de los casos, un símbolo de inmadurez, y por supuesto ni denota inteligencia ni unos excesivos conocimientos: si alguien se considera superior por acceder ilegalmente a una máquina utilizando un programa que ni ha hecho ni es capaz de entender, que revise sus principios, y si tras hacerlo aún piensa lo mismo, que dedique su inteligencia y sus conocimientos a tareas que ayuden a incrementar la seguridad, como la construcción de sistemas de autenticación fiables y baratos o el diseño de nuevos criptosistemas seguros. Eso es seguridad informática, y no lo que habitualmente se nos quiere hacer creer: la seguridad informática no consiste en conocerse todos los bugs de un sistema operativo, con sus correspondientes exploits ni en jugar a superjakers en canales de IRC. Lamentablemente, este es el panorama de la seguridad más visible en España en la actualidad; esperemos que algún día cambie.

¿Qué es seguridad?

Podemos entender como seguridad una característica de cualquier sistema (informático o no) que nos indica que ese sistema está libre de todo peligro, daño o riesgo, y que es, en cierta manera, infalible. Como esta característica, particularizando para el caso de sistemas operativos o redes de computadores, es muy difícil de conseguir (según la mayoría de expertos, imposible), se suaviza la definición de seguridad y se pasa a hablar de fiabilidad (probabilidad de que un sistema se comporte tal y como se espera de él) más que de seguridad; por tanto, se habla de sistemas fiables en lugar de hacerlo de sistemas seguros.

A grandes rasgos se entiende que mantener un sistema seguro (o fiable) consiste básicamente en garantizar tres aspectos ([Pfl97]): confidencialidad, integridad y disponibilidad. Algunos estudios ([Lap91],[Olo92]...) integran la seguridad dentro de una propiedad más general de los sistemas, la confiabilidad, entendida como el nivel de calidad del servicio ofrecido. Consideran la disponibilidad como un aspecto al mismo nivel que la seguridad y no como parte de ella, por lo que dividen esta última en sólo las dos facetas restantes, confidencialidad e integridad. En este trabajo no seguiremos esa corriente por considerarla minoritaria.

¿Qué implica cada uno de los tres aspectos de los que hablamos? La confidencialidad nos dice que los objetos de un sistema han de ser accedidos únicamente por elementos autorizados a ello, y que esos elementos autorizados no van a convertir esa información en disponible para otras entidades; la integridad significa que los objetos sólo pueden ser modificados2.1 por elementos autorizados, y de una manera controlada, y la disponibilidad indica que los objetos del sistema tienen que permanecer accesibles a elementos autorizados; es el contrario de la negación de servicio. Generalmente tienen que existir los tres aspectos descritos para que haya seguridad: un sistema Unix puede conseguir confidencialidad para un determinado fichero haciendo que ningún usuario (ni siquiera el root) pueda leerlo, pero este mecanismo no proporciona disponibilidad alguna.

Dependiendo del entorno en que un sistema Unix trabaje, a sus responsables les interesará dar prioridad a un cierto aspecto de la seguridad. Por ejemplo, en un sistema militar se antepondrá la confidencialidad de los datos almacenados o transmitidos sobre su disponibilidad: seguramente, es preferible que alguien borre información confidencial (que se podría recuperar después desde una cinta de backup) a que ese mismo atacante pueda leerla, o a que esa información esté disponible en un instante dado para los usuarios autorizados. En cambio, en un servidor NFS de un departamento se premiará la disponibilidad frente a la confidencialidad: importa poco que un atacante lea una unidad, pero que esa misma unidad no sea leída por usuarios autorizados va a suponer una pérdida de tiempo y dinero. En un entorno bancario, la faceta que más ha de preocupar a los responsables del sistema es la integridad de los datos, frente a su disponibilidad o su confidencialidad: es menos grave2.2 que un usuario consiga leer el saldo de otro que el hecho de que ese usuario pueda modificarlo.

¿Qué queremos proteger?

Los tres elementos principales a proteger en cualquier sistema informático son el software, el hardware y los datos. Por hardware entendemos el conjunto formado por todos los elementos físicos de un sistema informático, como CPUs, terminales, cableado, medios de almacenamiento secundario (cintas, CD-ROMs, diskettes...) o tarjetas de red. Por software entendemos el conjunto de programas lógicos que hacen funcional al hardware, tanto sistemas operativos como aplicaciones, y por datos el conjunto de información lógica que manejan el software y el hardware, como por ejemplo paquetes que circulan por un cable de red o entradas de una base de datos. Aunque generalmente en las auditorías de seguridad se habla de un cuarto elemento a proteger, los fungibles (elementos que se gastan o desgastan con el uso contínuo, como papel de impresora, tóners, cintas magnéticas, diskettes...), aquí no consideraremos la seguridad de estos elementos por ser externos al sistema Unix.

Habitualmente los datos constituyen el principal elemento de los tres a proteger, ya que es el más amenazado y seguramente el más difícil de recuperar2.3: con toda seguridad una máquina Unix está ubicada en un lugar de acceso físico restringido, o al menos controlado, y además en caso de pérdida de una aplicación (o un programa de sistema, o el propio núcleo de Unix) este software se puede restaurar sin problemas desde su medio original (por ejemplo, el CD-ROM con el sistema operativo que se utilizó para su instalación). Sin embargo, en caso de pérdida de una base de datos o de un proyecto de un usuario, no tenemos un medio 'original' desde el que restaurar: hemos de pasar obligatoriamente por un sistema de copias de seguridad, y a menos que la política de copias sea muy estricta, es difícil devolver los datos al estado en que se encontraban antes de la pérdida.

Contra cualquiera de los tres elementos descritos anteriormente (pero principalmente sobre los datos) se pueden realizar multitud de ataques o, dicho de otra forma, están expuestos a diferentes amenazas. Generalmente, la taxonomía más elemental de estas amenazas las divide en cuatro grandes grupos: interrupción, interceptación, modificación y fabricación. Un ataque se clasifica como interrupción si hace que un objeto del sistema se pierda, quede inutilizable o no disponible. Se tratará de una interceptación si un elemento no autorizado consigue un acceso a un determinado objeto del sistema, y de una modificación si además de conseguir el acceso consigue modificar el objeto; algunos autores ([Olo92]) consideran un caso especial de la modificación: la destrucción, entendiéndola como una modificación que inutiliza al objeto afectado. Por último, se dice que un ataque es una fabricación si se trata de una modificación destinada a conseguir un objeto similar al atacado de forma que sea difícil distinguir entre el objeto original y el 'fabricado'. En la figura 1.1 se muestran estos tipos de ataque de una forma gráfica.
Figura: Flujo normal de información entre emisor y receptor y posibles amenazas: (a) interrupción, (b) interceptación, (c) modificación y (d) fabricación.
\includegraphics {ataques.eps}

¿De qué nos queremos proteger?

En la gran mayoría de publicaciones relativas a la seguridad informática en general, y especialmente en las relativas a seguridad en Unix, tarde o temprano se intenta clasificar en grupos a los posibles elementos que pueden atacar nuestro sistema. Con frecuencia, especialmente en las obras menos técnicas y más orientadas a otros aspectos de la seguridad ([ISV95], [Mey89]...), se suele identificar a los atacantes únicamente como personas; esto tiene sentido si hablamos por ejemplo de responsabilidades por un delito informático. Pero en este trabajo es preferible hablar de 'elementos' y no de personas: aunque a veces lo olvidemos, nuestro sistema puede verse perjudicado por múltiples entidades aparte de humanos, como por ejemplo programas, catástrofes naturales o, por qué no, fuerzas extraterrestres; si un usuario pierde un trabajo importante a causa de un ataque, poco le importará que haya sido un intruso, un gusano, un simple error del administrador, o un alien que haya abducido un disco duro...

A continuación se presenta una relación de los elementos que potencialmente pueden amenazar a nuestro sistema. No pretende ser exhaustiva, ni por supuesto una taxonomía formal (para este tipo de estudios, se recomienda consultar [LBMC94] o [AKS96]); simplemente trata de proporcionar una idea acerca de qué o quién amenaza un sistema Unix. A lo largo de este proyecto se ahondará en aspectos de algunos de los elementos presentados aquí.

Personas

No podernos engañarnos: la mayoría de ataques a nuestro sistema van a provenir en última instancia de personas que, intencionada o inintencionadamente, pueden causarnos enormes pérdidas. Generalmente se tratará de piratas que intentan conseguir el máximo nivel de privilegio posible aprovechando alguno (o algunos) de los riesgos lógicos de los que hablaremos a continuación, especialmente agujeros del software. Pero con demasiada frecuencia se suele olvidar que los piratas 'clásicos' no son los únicos que amenazan nuestros equipos: es especialmente preocupante que mientras que hoy en día cualquier administrador mínimamente preocupado por la seguridad va a conseguir un sistema relativamente fiable de una forma lógica (permaneciendo atento a vulnerabilidades de su software, restringiendo servicios, utilizando cifrado de datos...), pocos administradores tienen en cuenta factores como la ingeniería social o el basureo a la hora de diseñar una política de seguridad.

Aquí se describen brevemente los diferentes tipos de personas que de una u otra forma pueden constituir un riesgo para nuestros sistemas; generalmente se dividen en dos grandes grupos: los atacantes pasivos, aquellos que fisgonean por el sistema pero no lo modifican -o destruyen-, y los activos, aquellos que dañan el objetivo atacado, o lo modifican en su favor. Generalmente los curiosos y los crackers realizan ataques pasivos (que se pueden convertir en activos), mientras que los terroristas y ex-empleados realizan ataques activos puros; los intrusos remunerados suelen ser atacantes pasivos si nuestra red o equipo no es su objetivo, y activos en caso contrario, y el personal realiza ambos tipos indistintamente, dependiendo de la situación concreta.

Amenazas lógicas

Bajo la etiqueta de 'amenazas lógicas' encontramos todo tipo de programas que de una forma u otra pueden dañar a nuestro sistema, creados de forma intencionada para ello ( software malicioso, también conocido como malware) o simplemente por error ( bugs o agujeros). Una excelente lectura que estudia las definiciones de algunas de estas amenazas y su implicación en el sistema Unix se presenta en [GS96]; otra buena descripción, pero a un nivel más general, se puede encontrar en [Par81].

Catástrofes

Las catástrofes (naturales o artificiales) son la amenaza menos probable contra los entornos habituales: simplemente por su ubicación geográfica, a nadie se le escapa que la probabilidad de sufrir un terremoto o una inundación que afecte a los sistemas informáticos en una gran ciudad como Madrid, Valencia o Barcelona, es relativamente baja, al menos en comparación con el riesgo de sufrir un intento de acceso por parte de un pirata o una infección por virus. Sin embargo, el hecho de que las catástrofres sean amenazas poco probables no implica que contra ellas no se tomen unas medidas básicas, ya que si se produjeran generarían los mayores daños.

Un subgrupo de las catástrofes es el denominado de riesgos poco probables. Obviamente se denomina así al conjunto de riesgos que, aunque existen, la posibilidad de que se produzcan es tan baja (menor incluso que la del resto de catástrofes) que nadie toma, o nadie puede tomar, medidas contra ellos. Ejemplos habituales de riesgos poco probables son un ataque nuclear contra el sistema, el impacto de un satélite contra la sala de operaciones, o la abducción de un operador por una nave extraterrestre. Nada nos asegura que este tipo de catástrofes no vaya a ocurrir, pero la probabilidad es tan baja y los sistemas de prevención tan costosos que no vale la pena tomar medidas contra ellas.

Como ejemplos de catástrofes hablaremos de terremotos, inundaciones, incendios, humo o atentados de baja magnitud (más comunes de lo que podamos pensar); obviamente los riesgos poco probables los trataremos como algo anecdótico. De cualquier forma, vamos a hablar de estas amenazas sin extendernos mucho, ya que el objetivo de este proyecto no puede ser el proporcionar las directrices para una construcción de edificios a prueba de terremotos, o un plan formal de evacuación en caso de incendio.

¿Cómo nos podemos proteger?

Hasta ahora hemos hablado de los aspectos que engloba la seguridad informática, de los elementos a proteger, de los tipos de amenazas que contra ellos se presentan y del origen de tales amenazas; parece claro que, para completar nuestra visión de la seguridad, hemos de hablar de las formas de protección de nuestros sistemas. Cuando hayamos completado este punto, habremos presentado a grandes rasgos los diferentes puntos a tratar en este proyecto, tal y como se sintetiza en la figura 1.2.

Para proteger nuestro sistema hemos de realizar un análisis de las amenazas potenciales que puede sufrir, las pérdidas que podrían generar, y la probabilidad de su ocurrencia; a partir de este análisis hemos de diseñar una política de seguridad que defina responsabilidades y reglas a seguir para evitar tales amenazas o minimizar sus efectos en caso de que se produzcan. A los mecanismos utilizados para implementar esta política de seguridad se les denomina mecanismos de seguridad; son la parte más visible de nuestro sistema de seguridad, y se convierten en la herramienta básica para garantizar la protección de los sistemas o de la propia red.
Figura 1.2: Visión global de la seguridad informática
\begin{figure} \vspace{0.5in} \setlength {\unitlength}{0.00083300in}%\begingro... ...{12.0}{\familydefault}{\mddefault}{\updefault}Datos}}} \end{picture}\end{figure}

Los mecanismos de seguridad se dividen en tres grandes grupos: de prevención, de detección y de recuperación. Los mecanismos de prevención son aquellos que aumentan la seguridad de un sistema durante el funcionamiento normal de éste, previniendo la ocurrencia de violaciones a la seguridad; por ejemplo, el uso de cifrado en la transmisión de datos se puede considerar un mecanismo de este tipo, ya que evita que un posible atacante escuche las conexiones hacia o desde un sistema Unix en la red. Por mecanismos de detección se conoce a aquellos que se utilizan para detectar violaciones de la seguridad o intentos de violación; ejemplos de estos mecanismos son los programas de auditoría como Tripwire. Finalmente, los mecanismos de recuperación son aquellos que se aplican cuando una violación del sistema se ha detectado, para retornar a éste a su funcionamiento correcto; ejemplos de estos mecanismos son la utilización de copias de seguridad o el hardware adicional. Dentro de este último grupo de mecanismos de seguridad encontramos un subgrupo denominado mecanismos de análisis forense, cuyo objetivo no es simplemente retornar al sistema a su modo de trabajo normal, sino averiguar el alcance de la violación, las actividades de un intruso en el sistema, y la puerta utilizada para entrar2.6; de esta forma se previenen ataques posteriores y se detectan ataques a otros sistemas de nuestra red.

Parece claro que, aunque los tres tipos de mecanismos son importantes para la seguridad de nuestro sistema, hemos de enfatizar en el uso de mecanismos de prevención y de detección; la máxima popular 'más vale prevenir que curar' se puede aplicar a la seguridad informática: para nosotros, evitar un ataque, detectar un intento de violación, o detectar una violación exitosa inmediatamente después de que ocurra es mucho más productivo y menos comprometedor para el sistema que restaurar el estado tras una penetración de la máquina. Es más, si consiguiéramos un sistema sin vulnerabilidades y cuya política de seguridad se implementara mediante mecanismos de prevención de una forma completa, no necesitaríamos mecanismos de detección o recuperación. Aunque esto es imposible de conseguir en la práctica, será en los mecanismos de detección, y sobre todo en los de prevención, en los que centraremos nuestro trabajo.

Los mecanismos de prevención más habituales en Unix y en redes son los siguientes ([Olo92]): A lo largo de este trabajo intentaremos explicar el funcionamiento de algunos de estos mecanismos para conseguir sistemas Unix más fiables; pero mucho más importante que el funcionamiento de, por ejemplo, la Base Segura de Cómputo o las Listas de Control de Acceso, es la concienciación de usuarios y administradores de las ventajas en materias de seguridad que estos mecanismos, y muchos otros, ofrecen. Hemos de recordar que un sistema Unix instalado tal y como se distribuye suele representar una puerta abierta para cualquier pirata sin unos grandes conocimientos; si ese mismo sistema lo configuramos mínimamente antes de ponerlo a trabajar, un intruso necesitará unos conocimientos del sistema operativo y de la red más o menos amplios (o mucha suerte) si quiere violar su seguridad. Como ya dijimos, el objetivo de este proyecto no es conseguir unos sistemas con seguridad militar en un entorno de normal (algo imposible), sino conseguir un entorno de trabajo mínimamente fiable.

Redes 'normales'

En este trabajo, como ya hemos comentado, no se pretende ni mucho menos adentrarse en temas de seguridad que se podría considerar 'de alto nivel', como la necesaria en un entorno militar2.7, de inteligencia, o en una gran empresa que maneje datos muy apetecibles para sus competidores. Un fallo en la seguridad de los sistemas informáticos de una central nuclear puede ser catastrófico - en el más amplio sentido de la palabra -; un pequeño fallo en los sistemas encargados de lanzar un satélite nos costaría a todos miles de millones de dólares...si en lugar de ser un satélite es un misil, podemos imaginarnos las consecuencias. Por fortuna para todos nosotros, esos sistemas son altamente seguros y por supuesto no son simples ordenadores conectados a Internet...ni siquiera a redes de propósito general.

Pero lo más probable es que todas estas cosas nos queden demasiado lejos a la mayoría de mortales; para nosotros los problemas de seguridad diarios son intrusiones, virus (sin comentarios), negaciones de servicio contra una máquina que sirve páginas web...algo mucho más terrenal que todo lo anterior. Es en este tipo de entornos donde los mecanismos que estudiaremos se pueden aplicar más fácilmente, tanto por las características de los sistemas utilizados como por el - relativamente - bajo peligro de nuestros atacantes: imagino que la CIA o el KGB no estarán dispuestos a pagar a piratas profesionales para que entren y lean nuestro correo; los intrusos potencialmente interesados en nuestras máquinas serán chavales que sólo buscan un cierto status social en un grupo de aficionados a la piratería, o que acaban de ver una película - de cuyo nombre no quiero acordarme - y tratan de emular a los actores. Gente que ante la más mínima dificultad para acceder a nuestra red, la abandonará y se dedicará a objetivos más fáciles (como la red de nuestro vecino). Contra este tipo de personas es contra quien debemos esforzarnos: ya hemos dicho que es inútil intentar parar a un atacante profesional, pagado, o muy interesado en nuestras máquinas; el que su ataque tenga éxito es sólo cuestión de tiempo, y seguramente depende más de la suerte que tenga él frente a la que tengamos nosotros. Pero estos atacantes son minoría, y lo que debemos buscar es defendernos contra la mayoría.

Ejemplos de redes 'normales', de entornos con unos requerimientos de seguridad medios (pero requerimientos, al fin y al cabo), son las redes de I+D (universidades, centros de investigación...), las de empresas medianas y las de proveedores de acceso a Internet; vamos a hablar en este punto de las características de cada una de ellas.

Redes de I+D

En cualquier tipo de red, basada en Unix o no, la seguridad es siempre un factor a tener en cuenta a la hora de administrar la propia red y sus máquinas. Por supuesto las redes de I+D no son ninguna excepción, y aunque con demasiada frecuencia su seguridad es mínima - o ni siquiera existe - merece la pena invertir tiempo, y por qué no, dinero, para garantizar un mínimo nivel de seguridad que proporcione un entorno de trabajo aceptable.

Las redes de I+D tienen unas características propias que no poseen otras redes, por ejemplo las militares o las pertenecientes a empresas. El rasgo diferenciador de redes I+D más importante es su carácter extremadamente abierto: mientras que una empresa puede limitar el acceso exterior a través de un simple firewall, u ofrecer sólo determinados servicios al exterior de la empresa, como unas páginas web, una red de I+D no puede permitirse este carácter tan cerrado. Esto es debido a que el aspecto de la seguridad más importante en las redes de investigación es la disponibilidad: a todo el personal investigador le interesa que sus publicaciones sean lo más accesibles a través de la web, al alumnado le interesa poder consultar sus datos académicos desde casa, por Internet, etc. Y es muy difícil hacerles cambiar de opinión, o al menos concienciarlos de los problemas de seguridad que una excesiva apertura supone: si un profesor acude a una conferencia en cualquier lugar del mundo no se le puede obligar, por ejemplo, a kerberizar todas las aplicaciones de su ordenador portátil simplemente para poder leer el correo a distancia; simplemente desea ejecutar un telnet, igual que si estuviera en el campus, para hacerlo.

La característica que acabamos de comentar es algo muy negativo de cara a mantener la seguridad de los sistemas; no podemos limitarnos a establecer una férrea política de filtrado de paquetes o a restringir servicios, ya que los usuarios no van a aceptarlo. Sin embargo, no todas las características de las redes de I+D son un problema para su seguridad; por ejemplo, un importante punto a favor es el escaso interés para un pirata de los datos con los que se trabaja generalmente en institutos de investigación o centros universitarios. En entornos de estas características no se suele trabajar con datos que impliquen información valiosa para un espía industrial o militar, ni tampoco se mueven grandes cantidades de dinero a través del comercio electrónico; casi todo lo que un intruso va a encontrar en una máquina de I+D son programas, documentos, resultados de simulaciones...que a muy poca gente, aparte de sus autores, interesan.

Entonces, ¿contra quién nos enfrentamos? Muy pocos de los intrusos que podamos encontrar en redes de I+D son piratas expertos; la mayoría son gente poco experimentada, que incluso ataca nuestras máquinas desde sus PCs en casa corriendo MS-DOS (desde 6.2 hasta 2000) sin saber nada sobre Unix o redes. La mejor defensa contra estos individuos consiste simplemente en cerrar los servicios que no sean estrictamente necesarios y mantener actualizado el software de nuestras máquinas que se pueda considerar crítico (núcleo, demonios, ficheros setuidados...). Casi todos ellos suelen actuar movidos únicamente por el afán de conseguir un cierto status en comunidades virtuales de piratas; ni siquiera actúan por curiosidad o para ampliar sus conocimientos, con lo que tenemos una importante ventaja contra ellos: es muy raro - pero no imposible - que se obsesionen por nuestra red o sus máquinas, de forma que si conseguimos que sus primeros intentos por acceder no sean fructíferos directamente dejarán el ataque para dedicarse a objetivos más fáciles. En cuanto a los piratas con un mayor nivel de conocimientos, si los encontramos en una red de I+D seguramente será porque utilizan nuestros equipos como plataforma para atacar servidores 'más interesantes' para un intruso, como máquinas militares o de centros de investigación muy importantes, como la NASA; en estos casos es obligatorio poner sobre aviso al organismo de mayor nivel responsable de la seguridad en la red: este organismo es, en el caso de la red universitaria española, IrisCERT, cuya información de contacto se cita al final del proyecto junto a la de otros organismos relacionados con la seguridad informática a distintos niveles.

Empresas

Las redes y sistemas pertenecientes a empresas son, a priori, las que mayores ventajas presentan en lo relativo a su protección; en primer lugar, se trata de redes que suelen ser muy aislables: muchas empresas disponen de una LAN en el edificio donde están ubicadas, red que se puede aislar perfectamente del exterior mediante cortafuegos. Incluso si se han de ofrecer servicios hacia el exterior (típicamente, correo electrónico y web), se pueden situar los servidores en una zona desmilitarizada entre el router y la red interna. Además, en muchos casos la LAN de la empresa ni siquiera es realmente necesario que esté conectada a Internet, aunque esto cada día es menos habitual más por requisitos humanos que técnicos: aunque no haga falta para el trabajo la conexión a Internet, el clima de descontento entre nuestro personal que puede suponer bloquear el acceso hacia el exterior es una gran traba de cara al aislamiento - y por tanto, a la seguridad -.

Esta es la teoría; como siempre, casi perfecta: vamos a añadirle problemas reales para comprobar que las cosas no son tan bonitas como las acabamos de pintar. En primer lugar: imaginemos una empresa con varias sucursales - oficinas, almacenes...- separadas geográficamente. Si la distancia entre todas ellas es corta y la empresa solvente, quizás se puedan permitir una red propia, dedicada, y protegida por los técnicos de la propia compañía; pero esto rara vez es así: conforme aumenta la separación, la idea de la red dedicada se va difuminando (simplemente con una distancia de un par de kilómetros - o menos, dependiendo de la zona - ya resulta imposible esta aproximación). Ahora entra en juego una red de propósito general como base de comunicaciones, seguramente la red telefónica, o incluso Internet; la protección de la red ya no depende exclusivamente de nuestra organización, sino que entran en juego terceras compañías - posiblemente Telefónica, con todo lo que ello implica...-. Es casi indispensable recurrir a redes privadas virtuales ( Virtual Private Networks, VPN), canales de comunicación seguros dentro de esa red insegura. Al menos podemos mantener comunicaciones seguras entre las diferentes sucursales...pero no todas las compañías recurren a estos mecanismos: realmente, es más fácil utilizar la red de propósito general como si fuera segura, enviando por ella toda la información que queramos intercambiar entre oficinas, sin proteger. Además, la seguridad no suele ser tangible: seguramente nuestro jefe estará más contento si en un día tiene montada la red aunque sea insegura, sin esperar a la configuración de la red privada - evidentemente, más costosa -, aunque a la larga resulte una solución mucho peor.

Compliquemos aún más la seguridad de nuestra compañía: ahora entran en juego estaciones móviles, por ejemplo comerciales con portátiles que deben comunicarse con los equipos fijos, o ejecutivos que al salir de viaje de negocios quieren poder seguir leyendo su correo. Estas estaciones están dando muchos quebraderos de cabeza, tanto a nivel de conectividad como de seguridad...otro potencial problema para nuestra empresa; realmente, no tan potencial: seguramente esa persona que está de viaje acabará conectado su portatil a la línea telefónica de un hotel, y conectando con las máquinas fijas vía módem. Por supuesto, esa persona ni ha oído ni quiere oir hablar de conexiones cifradas: es más fácil un telnet o un rlogin contra el servidor para poder leer el correo; a fin de cuentas, los piratas son algo que sólo existe en las películas...

Hasta ahora todos los ataques contra la empresa eran - en principio - externos; pero imaginemos que uno de nuestros empleados no está contento con su sueldo y decide irse a la competencia. Y no sólo quiere irse, sino que decide llevarse varios documentos confidenciales, documentos a los que ha tenido un fácil acceso simplemente acercándose a una de las impresoras comunes, recogiendo los listados, y fotocopiándolos antes de entregarlos a su dueño. O incluso más fácil: en nuestra empresa los ordenadores de los empleados utilizan Windows 9x, y todos los puestos ofrecen los discos duros como recursos compartidos; a fin de cuentas, así es mucho más fácil el intercambio de información entre empleados. Esa persona, sin ni siquiera levantarse de su puesto de trabajo, tiene acceso a casi toda la información de nuestra empresa...Por cierto, esto no pretende ser un ataque a la seguridad de estos productos (aunque fácilmente podría serlo), sino una realidad que se puede ver en muchísimas empresas, sobre todo pequeñas y medianas.

Como acabamos de ver, ha sido suficiente con plantear un par de situaciones - de lo más normales - para romper toda la idea de seguridad fácil que teníamos al principio; y eso sin plantear problemas más rebuscados: ¿qué sucede si a una empresa de la competencia le da por sabotear nuestra imagen atacando nuestras páginas web? ¿y si le interesa leer nuestros e-mails? No hace falta que se trate de una multinacional poderosa dispuesta a contratar piratas profesionales: es suficiente con que el administrador de la red de nuestra competencia tenga unas nociones sobre seguridad...y bastantes ganas de fastidiarnos.

ISPs

Las empresas dedicadas a ofrecer acceso a Internet a través de la línea telefónica, así como otros servicios de red (principalmente, hospedaje de páginas web) son los conocidos ISPs ( Internet Service Providers); conocidos tanto por sus servicios como por su inseguridad. Y es que realmente no es fácil compaginar una amplia oferta de servicios con una buena seguridad: cualquier administrador de máquinas Unix sabe que cada puerto abierto en su sistema es una potencial fuente de problemas para el mismo, por lo que conviene reducir al mínimo su número. Si los ISPs viven justamente de permitir accesos - a Internet o a sus propios servidores - parece obvio que no podrán aplicar estrictas políticas de seguridad en las máquinas: mientras que por ejemplo en una empresa el administrador puede obligar - relativamente - a sus usuarios a utilizar protocolos cifrados, si un ISP no permite acceso ftp a los clientes que deseen colgar sus páginas web y les obliga a usar un protocolo de transferencia de archivos que aplique criptografía, es muy probable que muchos de esos clientes abandonen y se vayan a la competencia: es más fácil utilizar el ftp clásico que instalar software adicional para poder actualizar una página web.

Imaginemos un proveedor que ofrece conexión a Internet a sus clientes; sin duda esos clientes querrán conectar a páginas web, hacer IRC, transferir archivos o utilizar telnet. Nada problemático a primera vista: las conexiones se realizan hacia el exterior de nuestra red, no hacia el interior. Pero además esos clientes querrán utilizar ICQ o NetMeeting, querrán instalar servidores de todo tipo en sus máquinas para que sus amigos los utilicen - desde servicios web hasta NFS -, con lo que empiezan los primeros problemas. Y no nos quedamos aquí: seguramente quieren poder descargar su correo POP3 desde cualquier lugar, no sólo desde el rango de direcciones del proveedor (por supuesto, sin oir hablar de cifrado en la conexión) y también les hace gracia un espacio para publicar sus páginas web de forma permanente...y mucho mejor para ellos si se les permite programar e instalar sus propios CGIs en dichas páginas; aquí ya no hay opción: o simplemente se les niega esta última posibilidad, o si se les permite y deseamos un entorno medianamente seguro hemos de dedicar recursos - y no pocos - a verificar la seguridad de esos programas. Hagamos lo que hagamos, tenemos problemas: si no permitimos que los usuarios usen sus propios CGIs, y otro proveedor sí que lo permite, seguramente cambiarán de ISP...si revisamos la seguridad, tampoco les va a hacer gracia tener que modificar su programa una y otra vez hasta que lo consideremos seguro; a fin de cuentas, estarán modificándolo para conseguir algo que probablemente ni siquiera entiendan.

Sigamos añadiendo problemas: puestos a pedir, los usuarios también pueden pedir acceso a bases de datos en sus páginas, por ejemplo vía PHP3; ya nos afectan los problemas que pueda tener este tipo de software. Incluso pueden querer instalar sistemas completos de comercio electrónico, sistemas capaces de convertir nuestra red en un auténtico agujero. Es más, si permitimos hospedaje de máquinas es muy probable que el cliente que usa este servicio quiera acceder remotamente vía telnet - o peor, rlogin-, incluso para tareas de administración; ni oir hablar de cosas como SSH o SSL Telnet: a fin de cuentas, hacen lo mismo y son más complicados que un sencillo telnet...

La seguridad de los ISPs sufre además el problema clásico de la seguridad en cualquier entorno, pero quizás de una forma mucho más grave: estamos trabajando con algo intangible, con algo muy difícil de ver. Si se realiza una inversión de tiempo o dinero para adquirir equipos nuevos, la mejora se nota inmediatamente; si esa inversión se realiza para incrementar la seguridad, quizás las mejoras obtenidas nunca las pueda notar un usuario. Y si las nota, con toda probabilidad es peor: es porque han fallado. La mayor parte de los potenciales clientes de un ISP preferirá una conexión un poco más rápida frente a una conexión o unos servicios más seguros.

Con situaciones tan sencillas y comunes como las anteriores podemos hacernos una idea de la potencial inseguridad de los ISPs; se trata de problemas reales, no meramente teóricos: en ambientes underground no es raro encontrar piratas con casi todas - o con todas - las claves de los clientes de un proveedor (personalmente he conocido varios casos). Sólo tenemos un punto a nuestro favor, si se puede considerar así: hace un par de años esas claves eran algo más o menos valioso para un pirata, ya que con ellas conseguía un acceso a Internet gratuito y - más importante - si dar ninguno de sus datos. Hoy en día, y debido a empresas que ofrecen ese tipo de acceso - por ejemplo como Alehop, con unas contraseñas genéricas y gratuitas para todo el mundo -, las claves de los clientes de un ISP no son algo tan codiciado.

¿Seguridad en Unix?

En la década de los ochenta para mucha gente el concepto de seguridad era algo inimaginable en el entorno Unix: la facilidad con que un experto podía acceder a un sistema, burlar todos sus mecanismos de protección y conseguir el máximo nivel de privilegio era algo de sobra conocido por todos, por lo que nadie podía pensar en un sistema Unix seguro.

Afortunadamente, los tiempos han cambiado mucho desde entonces. Aunque en un principio y según uno de sus creadores, Unix no se diseñó para ser seguro ([Rit86]), a finales de los 80 se convirtió en el primer sistema operativo en alcanzar niveles de seguridad quasi militares ([HJAW88], [Ser91]...). En la actualidad se puede considerar el sistema operativo de propósito general más fiable del mercado; desde los clones habituales (Solaris, HP-UX, IRIX...) hasta los 'Trusted Unix' (de los que hablaremos a continuación), pasando por los sistemas gratuitos (Linux, FreeBSD...), cualquier entorno Unix puede ofrecer los mecanismos de seguridad suficientes para satisfacer las necesidades de la mayoría de instituciones. Los Unices habituales, como Solaris o Linux, son bastante inseguros tal y como se instalan por defecto ( out-of-the-box), como veremos a la hora de hablar de la seguridad lógica; esto significa que requieren de una mínima puesta a punto, en cuanto a seguridad se refiere, antes de ponerlos a trabajar con unas mínimas garantías de fiabilidad. Una vez realizada esta puesta a punto suelen tener una seguridad aceptable en redes de propósito general. El problema es que en muchas ocasiones se pone a trabajar a Unix tal y como se instala por defecto, lo que convierte a cualquier sistema operativo, Unix o no, en un auténtico agujero en cuanto a seguridad se refiere: cuentas sin password o con passwords por defecto, servicios abiertos, sistemas de ficheros susceptibles de ser compartidos...

Dentro de la familia Unix existen una serie de sistemas denominados 'Unix seguros' o 'Unix fiables' (Trusted Unix); se trata de sistemas con excelentes sistemas de control, evaluados por la National Security Agency (NSA) estadounidense y clasificados en niveles seguros (B o A) según [B$^$85]. Entre estos Unix seguros podemos encontrar AT&T System V/MLS y OSF/1 (B1), Trusted Xenix2.8 (B2) y XTS-300 STOP 4.1 (B3), considerados los sistemas operativos más seguros del mundo (siempre según la NSA). La gran mayoría de Unices (Solaris, AIX...) están clasificados como C2, y algunos otros, como Linux, se consideran sistemas C2 de facto: al no tener una empresa que pague el proceso de evaluación de la NSA no están catalogados, aunque puedan implementar todos los mecanismos de los sistemas C2.

A la vista de lo comentado en este punto, parece claro que Unix ha dejado de ser ese sistema arcaico e inseguro de sus primeros tiempos para convertirse en el entorno de trabajo más fiable dentro de la gama de sistemas operativos de propósito general; sin embargo, por alguna extraña razón, mucha gente tiende a considerar todavía a los equipos Unix como amenazas en la red, especialmente a los clones gratuitos como Linux o FreeBSD que habitualmente se ejecutan en PCs; el hecho de que sean gratuitos no implica en ningún momento que sean inestables, y mucho menos, inseguros: empresas tan importantes como Yahoo! ( www.yahoo.com) o Citroën ( www.citroen.com), o el propio servicio postal de Estados Unidos utilizan estos entornos como servidores web o como firewall en sus redes. No obstante, las políticas de marketing de ciertas empresas desarrolladoras tienden a popularizar (y lamentablemente lo consiguen) ideas erróneas sobre la seguridad en Unix, lo que motiva que algunas organizaciones intenten buscar sistemas alternativos, casi siempre sustituyendo máquinas Unix por entornos Windows NT o Windows 9x. No creo que haga falta hacer comentarios sobre la seguridad de estos sistemas, por lo que no entraremos en detalles sobre ella; si alguien está interesado, o duda de la capacidad de Unix frente a estos entornos, puede consultar alguna de las comparativas o de los artículos publicados sobre el tema por universidades o por prestigiosos nombres dentro del mundo de la seguridad informática, o simplemente interesarse por el tipo de sistemas utilizados en centros de investigación como AT&T y la NASA, o en organismos de seguridad como el FBI y la NSA: Unix, por supuesto.

Notas al pie

... modificados2.1
Por modificar entendemos escribir, cambiar, cambiar el estado, borrar y crear.
... grave2.2
Aunque por supuesto no es en absoluto recomendable.
... recuperar2.3
Quizás no el más caro, pero sí el más difícil.
... desconocimiento2.4
O inexistencia.
... parte2.5
Si los pagara la organización propietaria de los equipos hablaríamos de grupos Tigre.
... entrar2.6
Si además los resultados se pretenden utilizar como pruebas ante un tribunal, se habla de Informatoscopia ([Gal96a]).
... militar2.7
Tampoco creo que fuera posible; a fin de cuentas, la seguridad de estos sistemas sólo la conocen los militares...
... Xenix2.8
Este sistema, de la compañía Trusted Information Systems, Inc, obviamente no tiene nada que ver con el antiguo Microsoft Xenix, de Microsoft Corporation

next up previous contents
Next: Seguridad del entorno de Up: Índice de Tablas Previous: Notas del autor   Índice General