Está en la página 1de 165

ESCUELA TCNICA SUPERIOR DE INGENIERA DE TELECOMUNICACIN UNIVERSIDAD POLITCNICA DE CARTAGENA

Proyecto Fin de Carrera

Implantacin de seguridad en entornos Web.

AUTOR: Juan Manuel Saura Martn. DIRECTOR: Pedro Snchez Palma. Julio / 2006

Autor E-mail del Autor Director(es) E-mail del Director Ttulo del PFC Resmen

Juan Manuel Saura Martn juanmanuelsaura@hotmail.com Pedro Snchez Palma pedro.sanchez@upct.es Implantacin de seguridad en entornos Web.

En el desarrollo Web existen numerosos problemas debido a la seguridad. Ante esta situacin, al disear pginas Web debemos tenerla en cuenta, tanto software como hardware, para ello es necesario instalar servidores seguros, o con mdulos de seguridad donde podamos modificar su configuracin para dotarlos de la misma. En este proyecto se ha hecho un estudio sobre la seguridad Web y hemos estudiado el caso prctico del servidor Apache con lenguaje de programacin php y base de datos MySQL. Para tal estudio hemos utilizado protocolos de seguridad como SSL y md5. Se ha hecho un estudio sobre autentificacin de usuarios, comprobando las diferentes maneras que hay de autentificarse. Adems en este proyecto hemos estudiado los certificados digitales, tanto desde la creacin de una autoridad que certifique nuestros certificados, hasta la creacin de nuestro propio certificado Web.

Titulacin Departamento Fecha de Presentacin

Ingeniero Tcnico de Telecomunicacin especialidad Telemtica Departamento De Tecnologas de la informacin y Las Comunicaciones (TIC). Julio - 2006

Me gustara agradecer gentilmente a todas las personas que contribuyeran con recomendaciones, ayuda y aliento mientras realizaba este proyecto. Deseo expresar al profesor Pedro Snchez Palma por su direccin y asesoramiento, gracias a los cuales ha sido posible la realizacin de la investigacin recogida en este proyecto. Asimismo quiero agradecer su apoyo y la estrecha colaboracin que hemos mantenido durante este tiempo. Primero quisiera agradecer a mi familia y mis Abuelos, en especial a mis padres y mi hermana. Sin su apoyo hubiera sido imposible terminar este proyecto. Dar las gracias a esa chica que tanto me ha apoyado desde el primer momento y que siempre ha estado en esos momentos difciles que a veces se presentan, muchas gracias Alicia. Tambin quisiera agradecer a todos mis colegas y amigos que me ayudaron en la elaboracin del mismo. Por ltimo agradecer a todas aquellas personas que directa o indirectamente me han ayudado o me han apoyado en este proyecto.

A todas estas personas Un milln de gracias!

NDICE DE CONTENIDOS
1 LA SEGURIDAD EN SISTEMAS SOFTWARE________________________ 1
1.1 1.2 1.3 1.4 Introduccin _____________________________________________________ 1 La seguridad en sistemas software ___________________________________ 1 Principios bsicos _________________________________________________ 4
Tipos de atacantes ms habituales: ______________________________________ 4

1.3.1

La seguridad en entornos Web ______________________________________ 7

POLTICAS GENERALES DE SEGURIDAD _________________________ 8


2.1 2.2 2.3 2.4 2.5 2.6 Introduccin _____________________________________________________ 8 Qu es una poltica de seguridad? __________________________________ 9 Aspectos fsicos de la poltica de seguridad.___________________________ 13 Aspectos lgicos de la poltica de seguridad. __________________________ 15 Aspectos humanos y organizativos de la poltica de seguridad.___________ 16 Aspectos legales de la poltica de seguridad. __________________________ 18

MTODOS DE ATAQUE Y SOLUCIONES __________________________ 22


3.1 3.2 3.3 Introduccin ____________________________________________________ 22 Elementos de la seguridad _________________________________________ 22 Amenazas ______________________________________________________ 22

3.3.1 Tipos de amenazas. _________________________________________________ 22 3.3.2 Origen de las amenazas. _____________________________________________ 23 3.3.2.1 Personas ________________________________________________________ 23 3.3.2.2 Amenazas lgicas_________________________________________________ 25

3.4 3.5

Mecanismos_____________________________________________________ 29 Taxonoma de los tipos de ataques. _________________________________ 30


Ataques remotos.___________________________________________________ Escaneo de puertos. _______________________________________________ Spoofing. _______________________________________________________ Negaciones de servicio. ____________________________________________ Interceptacin____________________________________________________ Ataques orientados a la obtencin de informacin sobre el objetivo. ___________ Ataques va Web. __________________________________________________ Ataques a los sistemas. ______________________________________________ Troyanos. _______________________________________________________ Hackers. ________________________________________________________ Virus. __________________________________________________________ Hoax. __________________________________________________________ Spam. __________________________________________________________ Dialers. _________________________________________________________ 31 31 34 35 39 40 41 43 43 44 44 44 45 45 48 48 49 50 50 52 52 54

3.5.1 3.5.1.1 3.5.1.2 3.5.1.3 3.5.1.4 3.5.2 3.5.3 3.5.4 3.5.4.1 3.5.4.2 3.5.4.3 3.5.4.4 3.5.4.5 3.5.4.6

3.6

Sistemas de deteccin de intrusos. __________________________________ 45

3.6.1 Clasificacin de los IDS. _____________________________________________ 3.6.1.1 Clasificacin por situacin. _________________________________________ 3.6.1.2 Clasificacin segn los modelos de detecciones. _________________________ 3.6.1.3 Clasificacin segn su naturaleza. ____________________________________ 3.6.2 Topologas de los IDS. ______________________________________________ 3.6.3 Arquitecturas basadas en IDS._________________________________________ 3.6.3.1 Arquitecturas basadas en agentes autnomos. ___________________________ 3.6.3.2 Arquitectura de exploracin de datos en tiempo real. _____________________

3.6.4 3.6.5 sistemas IDS. 3.6.6 3.6.7

Caractersticas deseables de un IDS. ____________________________________ 55 Metodologa para la deteccin de intrusos y para la seleccin e implantacin de 57 Deteccin de problemas. ___________________________________________ 60 Deteccin de usos indebidos. _________________________________________ 62

AUTENTIFICACIN Y CERTIFICADOS DIGITALES________________ 65


4.1 4.2 4.3 Introduccin ____________________________________________________ 65 Autentificacin. _________________________________________________ 65 Autentificacin HTTP basada en php. _______________________________ 67

4.3.1 Autentificacin HTTP Basic. _________________________________________ 68 4.3.1.1 Configuracin de httpd.conf_________________________________________ 68 4.3.1.2 Creacin de un usuario. ____________________________________________ 69 4.3.1.3 Creacin de un grupo. _____________________________________________ 69 4.3.2 Autentificacin HTTP Digest._________________________________________ 70 4.3.2.1 Configuracin de httpd.conf_________________________________________ 70 4.3.2.2 Creacin de un usuario. ____________________________________________ 70

4.4

Firma digital. ___________________________________________________ 71


Funcionamiento de la firma digital._____________________________________ 72 Autoridades de certificacin.__________________________________________ 72

4.4.1 4.4.2

4.5

Certificados digitales._____________________________________________ 74

INTRODUCCIN A LOS SERVIDORES Web: EL CASO APACHE. _____ 77


5.1 5.2 Servidores Web. _________________________________________________ 77 Servidor Web: caso Apache. _______________________________________ 79

5.2.1 Comprobacin del entorno. ___________________________________________ 80 5.2.2 Instalacin de apache en Linux. _______________________________________ 81 5.2.3 Configurar apache para seguridad ______________________________________ 83 5.2.3.1 El protocolo SSL. _________________________________________________ 84 5.2.3.2 Creacin de nuestra propia CA. ______________________________________ 85 5.2.3.3 Creacin de nuestro CSR. __________________________________________ 86 5.2.3.4 Creacin de un CRT. ______________________________________________ 87 5.2.3.5 Configuracin apache. _____________________________________________ 87 5.2.3.6 Limpieza de archivos. _____________________________________________ 88

LENGUAJE DE PROGRAMACIN Web Y BASES DE DATOS. ________ 89


6.1 6.2 Lenguaje de programacin Web php ________________________________ 89
Instalacin de php.__________________________________________________ 91 6.1.1

Sesiones vs Cookies ______________________________________________ 92

6.2.1 Sesiones__________________________________________________________ 92 6.2.1.1 Funcionamiento sesiones ___________________________________________ 92 6.2.2 Cookies __________________________________________________________ 93 6.2.3 Sesiones vs Cookies ________________________________________________ 93

6.3

Bases de datos ___________________________________________________ 93

6.3.1 Instalacin de MySQL. ______________________________________________ 94 6.3.2 phpMyAdmin _____________________________________________________ 95 6.3.2.1 Instalacin de phpMyAdmin ________________________________________ 95

APLICACIN DE SEGURIDAD: CASO PRCTICO __________________ 99


7.1 7.2 Introduccin. ___________________________________________________ 99 Funcionamiento de la pgina Web. _________________________________ 99

CONCLUSIONES Y LNEAS FUTURAS DE TRABAJO ______________ 105

Apndice A _______________________________________________________ 107

Apndice B _______________________________________________________ 108 Apndice C _______________________________________________________ 111 Apndice D _______________________________________________________ 115 Apndice E _______________________________________________________ 118 Apndice F _______________________________________________________ 123 Apndice G _______________________________________________________ 128 Apndice H _______________________________________________________ 131 Apndice I________________________________________________________ 135 Apndice J _______________________________________________________ 137 Apndice K _______________________________________________________ 142 Apndice L _______________________________________________________ 147 Apndice M_______________________________________________________ 149 BIBLIOGRAFA __________________________________________________ 151

NDICE DE FIGURAS
Figura 1: La seguridad como un proceso y la poltica como su gua............................................................. 11 Figura 2: Fase de puesta en marcha del proceso de seguridad. .................................................................... 11 Figura 3: Fase de monitorizacin del proceso de seguridad.......................................................................... 12 Figura 4: Fase de anlisis de vulnerabilidades.............................................................................................. 12 Figura 5: Consolidacin y continuacin del proceso de seguridad. .............................................................. 13 Figura 6: Flujo normal de informacin entre emisor y receptor y posibles amenazas: (a) interrupcin, (b) interceptacin, (c) modificacin y (d) fabricacin. ......................................................................................... 23 Figura 7: Origen de los ataques. .................................................................................................................... 30 Figura 8: Conexiones del PC.......................................................................................................................... 44 Figura 9: Red con IDS simple......................................................................................................................... 51 Figura 10: Red completa con IDS. ................................................................................................................. 51 Figura 11: Arquitectura de un sistema autnomo. ......................................................................................... 53 Figura 12: Arquitectura de un IDS basado en tiempo real............................................................................. 55 Figura 13: Pasos de un intruso....................................................................................................................... 57 Figura 14: Autentificacin y no repudio mediante clave privada .................................................................. 66 Figura 15: Autentificacin Basic. ................................................................................................................... 69 Figura 16: Fbrica nacional de moneda y timbre. ......................................................................................... 73 Figura 17: Certificados digitales.................................................................................................................... 76 Figura 18: Mensaje del funcionamiento de apache........................................................................................ 83 Figura 19: Estructura del directorio demoCA................................................................................................ 86 Figura 21: Pgina principal de PHP.............................................................................................................. 92 Figura 22: pgina principal de phpMyAdmin. ............................................................................................... 96 Figura 23: Bases de datos. ............................................................................................................................. 97 Figura 24: Tablas de la base de datos............................................................................................................ 97 Figura 25: Registros de la base de datos usuarios. ........................................................................................ 98 Imagen 26: Arranque del servidor Apache con soporte SSL. ......................................................................... 99 Figura 27: Arranque de la base de datos MySQL. ....................................................................................... 100 Figura 28: Pgina inicial ............................................................................................................................. 100 Figura 29: Advertencia de seguridad SSL .................................................................................................... 101 Figura 30: Certificado SSL........................................................................................................................... 101 Figura 31: Seccin: Iniciar Sesin. .............................................................................................................. 102 Figura 32: Usuario registrado. .................................................................................................................... 102 Figura 33: Usuario sin privilegios. .............................................................................................................. 103 Figura 34: Usuario con privilegios .............................................................................................................. 103 Figura 35: Carpeta del servidor apache autentificada................................................................................. 104 Figura 36: Autentificacin requerida. .......................................................................................................... 104

NDICE DE TABLAS
Tabla 1: Comparativa Seguridad.................................................................................................................... 79 Tabla 2: Paquetes del servidor seguro............................................................................................................ 84

1
1.1 Introduccin

LA SEGURIDAD EN SISTEMAS SOFTWARE

El objetivo de este proyecto fin de carrera es realizar un estudio exhaustivo de la implicacin de desarrollar sistemas Web seguros. En particular se tendr en cuenta los requisitos necesarios para adoptar un esquema de seguridad especfico y las consideraciones pertinentes para el caso del lenguaje de programacin PHP y un servidor de pginas Web como Apache. Para ello se comenzar con una base terica y se seguir con un desarrollo prctico de los conocimientos adquiridos a lo largo del proyecto. Los objetivos ms relevantes se pueden sintetizar en los siguientes: Realizar un estudio del alcance de la seguridad en sistemas software, estudiando la taxonoma de los ataques, estudiando sistemas de deteccin de intrusos (IDS) Implantacin de esquemas de seguridad Implicacin de la seguridad en el caso de aplicaciones Web. Estudio de autentificacin de usuarios mediante formularios, sesiones, criptografa, firmas digitales Estudiar las facilidades que ofrecen entornos de produccin de software ligados al Web como son el lenguaje de programacin PHP y el servidor de pginas Web Apache. Para ello se instalarn mdulos de seguridad al servidor Apache. Adoptar algunos esquemas de seguridad especficos para las plataformas mencionadas y recoger de manera esquemtica los patrones adoptados. Realizacin de una demostracin donde se explicar como instalar Apache y PHP para seguridad, con los mdulos mencionados para adoptar la misma. Se crear una base de datos para guardar los password de los usuarios, se llevar a la prctica la creacin y firma de certificados digitales bajo el protocolo de seguridad SSL La seguridad en sistemas software

1.2

Nuestro mundo est repleto de sistemas, compuestos por mquinas y por programas. Casi cada objeto que nos rodea es un sistema, compuesto por una o varias mquinas, controladas por una o varias piezas de componentes que se denominan software. Muchos de estos sistemas forman parte de redes, privadas o de empresa, pblicas, grandes o pequeas, interconectadas unas con otras y comunicndose entre s mediante otro gran sistema hardware gestionado por un conjunto de aplicaciones con distintos objetivos, a los que se denominan protocolos. La red Internet es, con una muy alta probabilidad, el sistema ms complejo que se haya desarrollado. Esta compuesto por millones de ordenadores interconectados mediante una red fsica de muy elevada complejidad. Adems cada ordenador contiene gran cantidad de programas que interactan entre s o con otros ordenadores de la red. Podemos decir que los sistemas son complejos y capaces de interactuar, adems muchos de ellos hacen cosas no pensadas ni diseadas (bugs) por sus creadores y usuarios,

Captulo 1 estas propiedades hacen que sea difcil conseguir que un sistema, como la red de una Universidad, o de una empresa o la red Internet, sea seguro. Hasta finales de 1988 muy poca gente tomaba en serio el tema de la seguridad. Mientras que por una parte Internet iba creciendo exponencialmente, por otra el auge de la informtica de consumo iba produciendo un aumento espectacular en el nmero de piratas informticos. Sin embargo, el 22 de noviembre de 1988 Robert T. Morris [1] protagonizo el primer gran incidente de la seguridad informtica: uno de sus programas se convirti en el famoso worm o gusano de Internet. Miles de computadoras conectados a la red se vieron inutilizados durante das, y las perdidas se estiman en millones de dlares. Desde ese momento el tema de la seguridad en sistemas operativos, redes, seguridad fsica y lgica ha sido un factor a tener muy en cuenta por cualquier organizacin. Uno de los temas que es inevitable comentar en la actualidad al hablar de Internet y de la posibilidad de realizar negocios en la red, es la seguridad. Cuando entra en Internet, est entrando en una gran sociedad en lnea. Y, como en toda sociedad humana, no todo es agradable. En el mundo en lnea existen amenazas a la seguridad, igual que en el resto del mundo. Si aprende a protegerse (a proteger su equipo y sus datos), se asegurar que el tiempo que pase en lnea ser productivo y divertido. Las computadoras e Internet son ahora una parte familiar de nuestras vidas. Quiz no las veamos a menudo, pero ah estn, involucradas de alguna manera en la mayora de nuestras actividades diarias, en los negocios de cualquier empresa, en las instituciones educativas, en las diferentes reas de gobierno, sin el apoyo de stas herramientas ninguna de ellas sera capaz de manejar la impresionante cantidad de informacin que parece caracterizar a nuestra sociedad. Pero tambin existe una problemtica en ellas, la seguridad. Cada vez ms personas necesitaran conocer el manejo de las computadoras as como las protecciones que da a da se van ofreciendo para garantizarnos la seguridad en el manejo de la informacin. Podemos entender como seguridad una caracterstica de cualquier sistema que nos indica que ese sistema esta libre de todo peligro, dao o riesgo, y que es, en cierta manera, infalible. Como esta caracterstica, particularizando para el caso de Web, sistemas operativos o redes de computadores, es sencillamente imposible, se suaviza la definicin de seguridad y hablaremos de fiabilidad [2] (probabilidad de que un sistema se comporte tal y como se espera de l). La popularizacin de Internet ha conseguido que la mayora de los hogares cuenten con ordenadores conectados a la red. En un principio, navegar por Internet era demasiado caro como para hacerlo por mero divertimento, pero la amplia oferta de conexiones de banda ancha y de tarifas planas ha conseguido que en los hogares donde existe un ordenador, casi todos los miembros de la familia tengan su propia cuenta de correo electrnico o busquen informacin en la red de forma sistemtica. Por supuesto, esto incluye a los nios y adolescentes, quienes han encontrado en Internet un entretenimiento de similar magnitud al que puede tener la televisin. Entre las principales razones de la popularizacin y el xito de Internet est el hecho de ser una red abierta. Como el protocolo utilizado por los ordenadores que se conectan a Internet, TCP-IP, es gratuito, cualquier red y cualquier ordenador pueden conectarse sin ms costes que los de la conexin. No hay ningn propietario de Internet, no hay ninguna autoridad central que pueda imponer un precio o unas condiciones diferentes de las estrictamente tcnicas.

La seguridad en sistemas software Hay cientos de millones de usuarios en Internet. El clculo estadstico de cuntos usuarios tienen acceso a Internet ha perdido ya sentido. Hay clubes, cafs-Internet y locutorios pblicos gestionados por instituciones privadas o pblicas en ciudades de todo el mundo, incluyendo los pases menos desarrollados, por lo que son miles de millones los usuarios que pueden en cualquier momento, por un coste inferior a un euro, conectarse a Internet durante un rato. Esta extraordinaria facilidad de acceso y popularidad es el principal atractivo desde el punto de vista comercial pero tambin es la causa de que Internet est abierto a todo tipo de indeseables. Internet se ha convertido en una parte esencial del trabajo, con el tiempo, el contenido Web se ha vuelto ms interesante, al evolucionar desde folletos en lnea estticos con texto y fotografas sencillos hasta archivos multimedia dinmicos e interactivos con grficos animados. A medida que Internet y sus contenidos son ms sofisticados y accesibles, tambin son ms variadas y frecuentes las amenazas a la seguridad de la red, a la productividad de los empleados, a la responsabilidad corporativa y al consumo del ancho de banda. En realidad, cualquier calle comercial de cualquier ciudad del mundo es tambin accesible a los malhechores. Cualquier transaccin econmica realizada por medios tradicionales es susceptible de ser aprovechada por ladrones. Las comunicaciones comerciales realizadas por medios tradicionales, cartas o telfono, son mucho ms fciles de interceptar que las comunicaciones a travs de Internet. Realizar actividades delictivas a travs de Internet requiere unos conocimientos tcnicos sofisticados que no estn al alcance de cualquiera. Por otra parte, las posibilidades de proteccin de las comunicaciones electrnicas son mucho mayores que las que permiten los medios tradicionales. Hay programas de ordenador gratuitos y muy fciles de usar que permiten a cualquier usuario la encriptacin de sus mensajes de forma que queda plenamente garantizado que slo el destinatario podr entenderlos. Los certificados y firmas electrnicas garantizan la identidad de los sujetos con mucha mayor garanta que cualquier fedatario tradicional. Los sistemas de almacenamiento de datos y su proteccin frente a accidentes fortuitos o ataques intencionados son ms fciles, baratos y seguros que las cajas fuertes o cmaras de seguridad. Lo que ocurre es que no hay una cultura de la seguridad en Internet. La sociedad en que vivimos nos ha enseado desde que ramos nios unas reglas bsicas de proteccin de nuestras propiedades. El gesto de cerrar la puerta de casa, los lmites que nos imponemos a la cantidad de efectivo que llevamos en el bolsillo, la forma en que reaccionamos cuando nos aborda un extrao por la calle, son comportamientos que hemos aprendido a lo largo de nuestra vida. En cambio nuestra experiencia con Internet es muy breve y ni nuestros padres ni nuestros profesores nos dijeron nunca cmo debamos comportarnos en el ciberespacio. La proteccin legal del comercio electrnico ha requerido tambin la elaboracin de nuevas normas. La proteccin frente a la publicidad indeseada cuyo coste de transmisin recae sobre el consumidor requiere ahora un tratamiento diferente que cuando el coste recaa exclusivamente sobre el anunciante. El reconocimiento jurdico de las firmas electrnicas y del arbitraje electrnico en los pases de la Unin Europea ha establecido un marco legal que garantiza la calidad de los certificados y agiliza los trmites judiciales. Los gobiernos de todo el mundo estn interesados en promover el desarrollo del comercio electrnico por lo que estn impulsando reformas legales y fiscales que permiten y agilicen las transacciones a travs de Internet. 3

Captulo 1 La seguridad en Internet y las leyes que la protegen, estn basadas principalmente en los sistemas de encriptacin. Esos sistemas son los que permiten que las informaciones que circulan por Internet sean indescifrables, ininteligibles, para cualquier persona que no sea aquella a la que va destinada. En general podemos hablar de dos grandes divisiones en la seguridad: seguridad fsica: se refiere a la proteccin del Hardware y de los soportes de datos, as como a la de los edificios e instalaciones que los albergan. Contempla las situaciones de incendios, sabotajes, robos, catstrofes naturales, etc. seguridad lgica: se refiere a la seguridad de uso del software, a la proteccin de los datos, procesos y programas, as como la del ordenador y autorizado acceso de los usuarios a la informacin. En este proyecto nos referiremos a seguridad lgica, ya que en lo que se refiere a seguridad fsica pertenece a otras instancias distintas de un programador Web. 1.3 Principios bsicos

A grandes rasgos se entiende que mantener un sistema fiable consiste bsicamente en garantizar tres aspectos: confidencialidad: nos dice que los objetos de un sistema han de ser accedidos nicamente por elementos autorizados a ello. Asegura el secreto de las comunicaciones contenidas en los mensajes. integridad: significa que los objetos slo pueden ser modificados por elementos autorizados, y de una manera controlada. Hace referencia al hecho de que la informacin no pueda ser manipulada en el proceso de envo. disponibilidad: indica que los objetos del sistema tienen que permanecer accesibles a elementos autorizados. Se ha de conseguir la seguridad ms completa para los sistemas, para ello se deber saber que se protege, contra quien se protege o en quien se puede confiar y en quien no. Se decidir que empleados tienen acceso a que activos y porqu, que tipo de acceso se va a dar a cada persona de la organizacin que colabore con la empresa, as mismo se debe pensar en que tipo de acceso van a tener los posible clientes de la organizacin. Se debe meditar lo ms posible sobre quin y por que querra atacar a la organizacin, pero el perfil del atacante no hay que buscarlo solo en un usuario de Internet sino tambin dentro de la organizacin, ya que diferentes encuestas sobre prdidas econmicas [3], [4] dicen que: 1. Alrededor del 65% de los encuestados reconocen haber sido atacados en el ltimo ao. 2. Alrededor del 60% de los encuestados reconocen que algunos de sus ataques fueron realizados desde el interior de sus organizaciones. 3. Alrededor del 60% de los encuestados reconocen que algunos de sus ataques fueron realizados mediante conexiones desde la red Internet. 1.3.1 Tipos de atacantes ms habituales: Hacker: los hackers eran personas muy expertas en un sistema operativo, protocolos, etc. En caso de encontrarse fallos de seguridad de un sistema, lo notificaban al fabricante, incluso, a veces, facilitando una posible solucin. Pero por distintas motivaciones

La seguridad en sistemas software (venganza, ira, reto intelectual,...) algunas de estas personas ataca las redes o sistemas de una organizacin. Estas motivaciones pueden ser: 1. Empleados que son despedidos injustamente, desde su punto de vista y destruyen datos de la organizacin. 2. Empleados que entienden que son injustamente pagados, y alteran los registros de personal. 3. Hackers que roban mensajes de correo electrnico de unos polticos para otros polticos. 4. Individuos que acceden a sitios Web muy conocidos para cambiar su contenido. Otro tipo de atacante es el amateur que juega cada vez ms extendido, el perfil es el de una persona joven sin experiencia de sistemas ni de redes que usa herramientas automatizadas contra sistemas por Internet, para ver qu pasa. Una persona puede crear una aplicacin que desconecte redes de Internet, valindose de las vulnerabilidades existentes en ellos, hacerla de fcil uso, crear un manual de usuario de la herramienta y publicarla en Internet, accesible a mucha gente a la vez, que la podrn usar de forma incontrolada para estas y otras muchas aplicaciones. Finalmente se hablar de un tercer tipo de atacante, el menos numeroso pero el ms peligroso, el profesional. Es el individuo que presta sus conocimientos y experiencia para atacar con un objetivo concreto, que puede ser el robo, la alteracin de informacin con fines delictivos o el sabotaje. El profesional obtiene gran cantidad de informacin para estar bien seguro de cuales son los puntos dbiles y por dnde puede empezar su trabajo. El siguiente paso suele ser el ataque de acceso a algn sistema, pero borrando sus huellas y sin alterar nada. Suele dejarse varios caminos de huida posibles, suele atacar mediante saltos y tener muy claro dnde, cundo y durante cunto tiempo estar seguro en su ataque. Para saber como protegernos o qu tecnologas, mecanismos, sistemas concretos, procesos vamos a utilizar, se debe conocer dos temas de bastante complejidad: 1. los distintos tipos de ataques posibles. 2. las distintas defensas posibles. Se sabe que nunca se van a conocer todos los distintos tipos de ataque posibles. Los tipos ms importantes son: 1. Ataques para obtener informacin: son ataques que tienen como objetivo obtener informacin como direcciones IP de redes y sistemas, sistemas operativos de cada equipo, nmeros de puertos abiertos, aplicaciones y sus versiones, contraseas, etc. 2. Ataques de acceso no autorizado: son ataques de personas no autorizadas a los sistemas. Suelen ser pruebas de mayor inters que demostrarse a s mismos que pueden llegar a ese sistema. Pueden ser peligrosos si el acceso se hace a travs de una cuenta privilegiada del sistema. 3. Ataques con revelacin de informacin: una vez se tiene el acceso anterior, se puede utilizar ese acceso para acceder a informacin secreta, con idea de aprovecharse de esa informacin, de borrarla o de modificarla con algn fin. 4. Ataques de denegacin de servicio: Buscan dejar no disponible un sistema, un servicio o una red, habitualmente agotando el recurso, sea este el ancho de banda, espacio en disco, conexiones TCP, etc. Desafortunadamente, este tipo de ataque no suele necesitar ningn acceso previo a ningn sistema.

Captulo 1 Estos son los ataques ms importantes, pero cada vez ms suelen ser combinaciones de varios de estos ataques. En cuanto a las defensas posibles se destacan las ms importantes: 1. Esquemas de seguridad de sistemas operativos: Especialmente para el caso de servidores son informacin muy relevante y de dispositivos de gestin de red, se deben mantener unos buenos esquemas de seguridad de ficheros, usuarios y aplicaciones, as como de servicios de red controlados desde tales sistemas. 2. Sistemas de identificacin o autentificacin seguros: hay muchos, desde las contraseas hasta los sistemas biomtricos, certificados digitales, tarjetas de identificacin o distintas combinaciones. Se pueden usar tanto para acceso local a dispositivos como para acceso remoto. 3. Sistemas de cortafuegos (o firewalls): Sistemas de control de la informacin en forma de mensajes que entran o salen de una red. Son muy populares hoy en da y los hay de muchos tipos distintos. 4. Sistemas criptogrficos: son sistemas que permiten, de varias formas distintas, mantener la integridad y la autentificacin de mensajes o datos, as como la privacidad o confidencialidad de los mismos. Se integran en protocolos y parte de distintos sistemas operativos y aplicaciones, que usan algoritmos criptogrficos. 5. Sistemas antivirus: son aplicaciones locales, o distribuidas, que permiten defenderse de los virus informticos, nombre que reciben algunas aplicaciones utilizadas para cualquiera de los ataques citados arriba. 6. Sistemas de anlisis de vulnerabilidades: son aplicaciones que permiten buscar en sistemas y aplicaciones instaladas distintos bugs o vulnerabilidades conocidas, para decidir si se corrigen, se cambian de versin o se dejan como estn. 7. Sistemas de deteccin de intrusiones: son sistemas o aplicaciones que permiten, en tiempo real, detectar determinados tipos de ataques y alertar sobre ellos, a la vez que, en algunos casos, pueden pararlos. Por ltimo, se debe saber cuanto dinero se puede emplear en implantar y mantener el sistema de seguridad, se tendr en cuenta el dinero que va a ser empleado en cada una de las siguientes tareas: 1. Adquisicin de herramientas hardware y software, que implementen algunas de las defensas citadas. 2. El tiempo empleado en configuraciones y educar a los usuarios en su uso. 3. El tiempo empleado en la administracin, mantenimiento y reconfiguracin para permitir nuevos servicios, auditar las herramientas, etc. 4. El tiempo empleado en volver a una situacin estable, despus de la inconveniencia para los usuarios de alguno de los nuevos sistemas. Finalmente se debera tratar de condensar todo este conocimiento en un anlisis de riesgos que tendra 4 puntos clave: 1. Valorar los activos. 2. Entender todas las posible amenazas 3. Monitorizar y conocer todas las debilidades y vulnerabilidades del sistema.

La seguridad en sistemas software 4. Tratar de poner en marcha todas las medidas posibles para disminuir la probabilidad de tener prdidas. 1.4 La seguridad en entornos Web

Las aplicaciones Web, por definicin, permiten el acceso de usuarios a recursos centrales, el servidor Web y, a travs de ste, a otros como los servidores de base de datos. Con los conocimientos y la implementacin correcta de medidas de seguridad, se pueden proteger los recursos as como proporcionar un entorno seguro donde los usuarios trabajen cmodos con su aplicacin. Una aplicacin Web, especialmente una que se despliega en Internet, es un objetivo mucho ms atractivo para un atacante que una aplicacin autnoma o cliente-servidor tpica. Hay varias razones para esto: Disponibilidad y accesibilidad: Muchas aplicaciones Web estn disponibles para los usuarios pblicos en cualquier momento del da o de la noche. Como los servidores Web tienen que permitir el acceso a usuarios pblicos y no tienen la proteccin completa de los cortafuegos tpicos de una empresa. Familiaridad: La mayora de los atacantes, incluso los menos sofisticados, conocen las interfaces Web. Un navegador Web es fcil de obtener y es uno de los programas de aplicacin ms comunes. El protocolo HTTP est bien definido, y existen muchas herramientas de hacking creados especficamente para ayudar a los atacantes a penetrar y comprometer aplicaciones Web. Facilidad: La configuracin de un servidor Web, contenedor Web y aplicacin Web para uso pblico es extremadamente compleja. Los atacantes, frecuentemente, pueden aprovechar esta complejidad y explotar deficiencias en la configuracin de la aplicacin o del sistema. Publicidad: El aliciente de algunos atacantes experimentados es la publicidad, la fama, el ego o un simple deseo de probar que pueden hacer algo que pocas otras personas pueden hacer. Desfigurar o comprometer un sito Web popular tiene mucho ms valor desde la perspectiva de las relaciones pblicas que comprometer una aplicacin interna que utilizan unos cuantos empleados corporativos.

2
2.1 Introduccin

POLTICAS GENERALES DE SEGURIDAD

El trmino poltica de seguridad se suele definir como el conjunto de requisitos definidos por los responsables directos o indirectos de un sistema que indica en trminos generales qu est y qu no est permitido en el rea de seguridad durante la operacin general de dicho sistema. Al tratarse de trminos generales, aplicables a situaciones o recursos muy diversos, suele ser necesario refinar los requisitos de la poltica para convertirlos en indicaciones precisas de qu es lo permitido y lo denegado en cierta parte de la operacin del sistema, lo que se denomina poltica de aplicacin especfica. La poltica de seguridad es la forma razonable de contestar, ordenadamente, a los distintos problemas de seguridad que pueden aparecer en las redes de las organizaciones. La poltica de seguridad de una organizacin es algo as como las normas, reglas o leyes (escritas, cuanto ms pblicas, mejor) que rigen la vida de la organizacin en cuanto a qu se puede hacer y que no se puede hacer. Algunas de sus caractersticas son: Define el comportamiento apropiado para cada caso. Establece qu herramientas son necesarias y qu procedimientos. Sirve para comunicar un consenso del uso de datos y aplicaciones dentro de la organizacin. Proporciona una base para la demostracin del uso inapropiado de recursos, por parte de empleados o de externos.

Una poltica de seguridad puede ser prohibitiva, si todo lo que no est expresamente permitido est denegado, o si todo lo que no est expresamente prohibido est permitido. Evidentemente la primera aproximacin es mucho mejor que la segunda de cara a mantener la seguridad de un sistema, en este caso la poltica contemplar todas las actividades que se pueden realizar en los sistemas, y el resto seran consideradas ilegales. Cualquier poltica ha de contemplar seis elementos claves en la seguridad de un sistema informtico: Disponibilidad: Es necesario garantizar que los recursos del sistema se encontrarn disponibles cuando se necesitan, especialmente la informacin crtica. Utilidad: Los recursos del sistema y la informacin manejada en el mismo ha de ser til para alguna funcin. Integridad: La informacin del sistema ha de estar disponible tal y como se almacen por un agente autorizado. Autenticidad: El sistema ha de ser capaz de verificar la identidad de sus usuarios, y los usuarios la del sistema. Confidencialidad: La informacin slo ha de estar disponible para agentes autorizados, especialmente su propietario.

Captulo 2 Posesin: Los propietarios de un sistema han de ser capaces de controlarlo en todo momento, perder este control en favor de un usuario malicioso compromete la seguridad del sistema hacia el resto de usuarios.

Para cubrir de forma adecuada los seis elementos anteriores, con el objetivo permanente de garantizar la seguridad corporativa, una poltica se suele dividir en puntos ms concretos a veces llamados normativas. El estndar ISO 17799 [5] define las siguientes lneas de actuacin: Seguridad organizacional: Aspectos relativos a la gestin de la seguridad dentro de la organizacin (cooperacin con elementos externos, outsourcing, estructura del rea de seguridad). Clasificacin y control de activos: Inventario de activos y definicin de sus mecanismos de control, as como etiquetado y clasificacin de la informacin corporativa. Seguridad del personal: Formacin en materias de seguridad, clusulas de confidencialidad, reporte de incidentes, monitorizacin de personal Seguridad fsica y del entorno: Bajo este punto se engloban aspectos relativos a la seguridad fsica de los recintos donde se encuentran los diferentes recursos de la organizacin y de los sistemas en s, as como la definicin de controles genricos de seguridad. Gestin de comunicaciones y operaciones: Este es uno de los puntos ms interesantes desde un punto de vista estrictamente tcnico, ya que engloba aspectos de la seguridad relativos a la operacin de los sistemas y telecomunicaciones, como los controles de red, la proteccin frente a malware, la gestin de copias de seguridad o el intercambio de software dentro de la organizacin. Controles de acceso: Definicin y gestin de puntos de control de acceso a los recursos informticos de la organizacin: contraseas, seguridad perimetral, monitorizacin de accesos Desarrollo y mantenimiento de sistemas: Seguridad en el desarrollo y las aplicaciones, cifrado de datos, control de software... Gestin de continuidad de negocio: Definicin de planes de continuidad, anlisis de impacto, simulacros de catstrofes Requisitos legales: Evidentemente, una poltica ha de cumplir con la normativa vigente en el pas donde se aplica, si una organizacin se extiende a lo largo de diferentes pases, su poltica tiene que ser coherente con la normativa del ms restrictivo de ellos. En este apartado de la poltica se establecen las relaciones con cada ley, derechos de propiedad intelectual, tratamiento de datos de carcter personal, exportacin de cifrado junto a todos los aspectos relacionados con registros de eventos en los recursos (logs) y su mantenimiento. Qu es una poltica de seguridad? El EITF(Emerging Issues task force) [6] define una poltica de seguridad como: Una serie de sentencias formales (normas) que deben cumplir todas las personas que tengan acceso a cualquier informacin y/o tecnologa de una organizacin

2.2

Polticas generales de seguridad El propsito general de una poltica de seguridad es informar a los usuarios, trabajadores y personal de direccin de los requisitos obligatorios para proteger los valores tecnolgicos e informacin de la organizacin. La poltica debera especificar los mecanismos a travs de los cuales estos requisitos puedan ser conocidos. Otro propsito es proporcionar una base para adquirir, configurar y auditar los sistemas de ordenadores y las redes. Por tanto, emplear un conjunto de herramientas de seguridad, sin una poltica de seguridad implcita, no tendra mucho sentido. El uso adecuado de estas herramientas debe ser parte de la poltica de seguridad. Los objetivos concretos que se buscan vendrn determinados, en buena parte, por la capacidad que se tenga de cumplir con una serie de aspectos como son: Debe poderse implantar. Debe entenderse. Debe hacerse cumplir. Debe definir responsabilidades. Debe permitir que siga realizndose el trabajo normal. Debe se exhaustiva. Debe incluir mecanismos de respuesta. Debe tener mecanismos de actualizacin. Debe cumplir la legislacin.

Se ha de contemplar siempre el principio de privilegio mnimo, que consiste en tratar de minimizar el nmero de usuarios con privilegios de administrador, el conjunto de equipos externos con acceso a sistemas locales y, en general, el nmero de situaciones en las que alguien o algo tienen privilegios de acceso, que no necesita, para que el trabajo salga adelante. Otro aspecto que debe tratar de conseguirse es el ilustrado por los principios de defensa en profundidad y de diversidad de defensa. Se debe intentar tener ms de un nivel de defensa y, a poder ser, de distinta naturaleza para, de esta forma, hacer ms difcil el trabajo del supuesto atacante que no slo debe vencer ms de una defensa, sino que cada una le obliga a tener distintos tipos de conocimiento. Si conseguimos tener un nivel de proteccin suficientemente seguro, debemos disponer de un punto central de gestin de la seguridad, en el que centralizar la gestin de la autenticacin, autorizacin, del trfico de seguridad, que soporte as mismo el registro de eventos centralizado y las alarmas. Otra tcnica es la de identificar el punto (o los puntos) ms dbil de la organizacin. Por ejemplo, cualquier configuracin avanzada del cortafuegos ms sofisticado del que se disponga es intil si tambin se puede acceder a la organizacin mediante modem y una contrasea esttica. Seguir el principio del cierre completo que consiste en garantizar que, en el caso de ataque con xito a un componente de seguridad, el sistema de seguridad no pasa a permitir el acceso completo a toda la red, sino a no permitir ya ningn acceso. El ms importante es el principio de simplicidad, que persigue que se cumplan todos los anteriores a la vez que se puede gestionar todo el sistema, de manera simple y

10

Captulo 2 entendible. Adems, es el principio que debe dirigir la propia construccin de cada norma, que no debera ser de un tamao mayor de 2 pginas. En la siguiente figura podemos ver como la poltica permite guiar el proceso de mantenimiento de seguridad:

Implementacin: medidas bsicas, cortafuegos, redes privadas virtuales, etc. Anlisis Poltica de seguridad Monitoriza cin: auditorias, sistemas de deteccin de intrusiones

de vulnerabilidades: analizadores y pruebas

Figura 1: La seguridad como un proceso y la poltica como su gua.

Como resultado de la primera versin de la poltica de seguridad, se implementarn todos los procesos de seguridad fsica y lgica, lo que incluye, configuracin de encaminadores, cortafuegos, redes privadas virtuales, etc. Esto se puede considerar como el primer paso del proceso, la fase de puesta en marcha del proceso de seguridad.

Implementacin: medidas bsicas, cortafuegos, redes privadas virtuales, etc. Anlisis Poltica de seguridad Monitoriza cin: auditorias, sistemas de deteccin de intrusiones

de vulnerabilidades: analizadores y pruebas

Figura 2: Fase de puesta en marcha del proceso de seguridad.

Si solo hiciramos esto estaramos incumpliendo normas bsicas de una poltica de seguridad. El siguiente paso es la fase de monitorizacin de la red, en busca de: Incumplimientos de la poltica de seguridad. 11

Polticas generales de seguridad Posibles nuevas amenazas no tenidas en cuenta. Implementacin: medidas bsicas, cortafuegos, redes privadas virtuales, etc. Anlisis Poltica de seguridad Monitoriza cin: auditorias, sistemas de deteccin de intrusiones

de vulnerabilidades: analizadores y pruebas

Figura 3: Fase de monitorizacin del proceso de seguridad.

Esta fase implica gestionar los registros de actividades y de auditoria y suele implicar la puesta en marcha, configuracin y mantenimiento de lo que se llama sistemas de deteccin de intrusiones. Si en esta fase se deduce que hay que hacer algn cambio en la poltica de seguridad, para evitar incumplimientos o para tener en cuenta nuevas amenazas posibles, se estar empezando a crear la versin 2 de la poltica. La siguiente fase sera la fase de anlisis de vulnerabilidades, que sirve para buscar, mediante scanners, o analizadores de vulnerabilidades problemas relacionados con bugs. Implementacin: medidas bsicas, cortafuegos, redes privadas virtuales, etc. Anlisis Poltica de seguridad Monitoriza cin: auditorias, sistemas de deteccin de intrusiones

de vulnerabilidades: analizadores y pruebas

Figura 4: Fase de anlisis de vulnerabilidades.

Finalmente, con todos los cambios consolidados, habr que aplicar la nueva versin de la poltica de seguridad a todos los dispositivos que se vean involucrados, as como a los procedimientos necesarios.

12

Captulo 2

Implementacin: medidas bsicas, cortafuegos, redes privadas virtuales, etc. Anlisis Poltica de seguridad Monitoriza cin: auditorias, sistemas de deteccin de intrusiones

de vulnerabilidades: analizadores y pruebas

Figura 5: Consolidacin y continuacin del proceso de seguridad.

A partir de aqu se repite la primera fase, y la rueda seguir girando. La periodicidad con la que cada una de las fases debe ponerse en marcha depende de la poltica que tendr en cuenta el tamao de la red y otros mltiples factores. No se pretende defender tanto una periodicidad concreta como sealar la importancia de ver la poltica de seguridad de una organizacin como algo en constante movimiento, que permite que el mantenimiento de la seguridad sea un proceso vivo y administrable de forma estructurada y organizada. 2.3 Aspectos fsicos de la poltica de seguridad.

Cualquier poltica de seguridad debe tener en cuenta una serie de procedimientos relacionados con la seguridad fsica, tanto en el aspecto del control de acceso fsico a equipos, como en el de tener planes de contingencia y emergencia, as como de recuperacin frente a desastres. Debe estar claramente estipulado quin tiene derecho a acceder, y en qu casos concretos, a cada una de los siguientes dispositivos: Encaminadores, especialmente los de permetro de seguridad. Conmutadores y concentradores. Servidores, concretamente aquellos que dispongan de la informacin ms sensible de la organizacin. Cualquier tipo de cortafuegos. Cualquier tipo de punto extremo de una red privada virtual, que suelen ser, realmente, encaminadores y cortafuegos. Cualquier manejador de medios de almacenamiento, que permita acceder a soportes magnticos con informacin sensible.

Tambin debe haber unas normas claras sobre el control de acceso a los edificios donde estn situados los ordenadores y redes de la organizacin, identificando: 13

Polticas generales de seguridad Quin puede entrar al edificio? Quin puede entrar a determinadas salas del edificio, donde residan las mquinas identificadas como especialmente sensibles? Cmo debe garantizarse tal tipo de acceso? Podra ser mediante algn tipo de token de acceso o mediante medidas biomtricas, etc. Quin puede acceder a determinados dispositivos especficos de Sali, como impresoras? Qu documentos no deben tener copias en papel sueltas y dnde destruirlas y cmo destruirlas? Qu acceso se le da a una persona que viene a colaborar, en trminos de ordenador, cuenta, nivel de acceso? Lo mismo hay que tener en cuenta para una visita, si es que se diera el caso de necesitar acceso. Es necesaria la implantacin de cmaras de seguridad? Si lo es, qu condiciones debe cumplir la empresa contratada a tal fin? Es necesaria la presencia de guardias de seguridad?

Otra serie de ideas entre las cuales se pueden resaltar son: Las actividades crticas deben de situarse lejos de las reas de acceso pblico. Los edificios deben ser discretos y se deben minimizar las indicaciones sobre su propsito, evitando signos obvios de las actividades realizadas en ellos. Los listines de los telfonos y de las salas de la organizacin no deben identificar localizaciones informticas (excepto las oficinas y reas de recepcin). Los materiales peligrosos y/o combustibles deben almacenarse a una distancia de seguridad del emplazamiento de los ordenadores. Un ejemplo muy simple es un vaso de agua, si es derramado en uno de los servidores podra causar graves daos a los servicios que realiza la empresa. El equipamiento de copias de seguridad y las propias copias de seguridad deben ubicarse en sitios diferentes y a una distancia conveniente de seguridad. Se debe instalar equipamiento apropiado de seguridad: detectores de calor y humos, salidas de emergencia y sistemas de extincin de incendios. Todo este equipamiento debe revisarse peridicamente de acuerdo con las instrucciones de los fabricantes. Los empleados deben estar entrenados en su uso adecuado. Los procedimientos de emergencia deben estar bien documentados y revisados regularmente.

Se debe sealar la importancia de disponer de los procedimientos para la copia peridica de la informacin, especialmente de la ms relevante, que incluya, adems, un cierto control de calidad, para asegurar que la copia de datos es inmediatamente utilizable. Se debe disponer de copias de: La informacin de ordenadores de los sistemas centrales.

14

Captulo 2 La informacin de ordenadores de la redes de rea local. La informacin de aplicaciones y de bases de datos.

Podra ser necesario plantearse la necesidad de tener un centro en otro lugar fsico, en el que residan todas estas copias, disponiendo as de una seguridad fsica adicional. 2.4 Aspectos lgicos de la poltica de seguridad.

Entre las normas y procedimientos relacionados con aspectos lgicos se puede separar lo que se denomina normas bsicas o fundamentales, como: Poltica de uso aceptable. Poltica de acceso remoto. Poltica de proteccin de la informacin. Poltica de seguridad perimetral, aunque sta implicar, tambin, procedimientos de configuracin de encaminadores y de cortafuegos y puntos finales de redes privadas virtuales. Poltica de proteccin anti-virus. Poltica de contraseas, de la que dependern los procedimientos de servidores, estaciones de trabajo y acceso remoto y a travs de redes privadas virtuales. Poltica de actuacin frente a incidentes.

Entre las que no seran normas bsicas, pero, an as, en una organizacin extensa seran importantes, se tendran: Poltica de uso de sistemas de deteccin de intrusiones, tanto de tipo red como de tipo host, de la que se hablar en extensin en el captulo. Poltica de gestin de los logs de sistemas y de auditorias, de las que se hablar, tambin, en el captulo. Poltica de administracin de los laboratorios de seguridad, en los que, entre otras cosas, se harn todos los test posibles fuera de la red real, en bsqueda de posibles bugs de seguridad en sistemas de todo tipo, con ayuda de analizadores de vulnerabilidades y de herramientas propias. Poltica de comunicaciones greles. Poltica de uso de redes privadas virtuales. Cualquier otra poltica aplicable a las caractersticas de la organizacin.

Toda poltica de seguridad debe tener normas sobre uso aceptable, que definan el uso apropiado de los recursos informticos de la organizacin. Los usuarios deberan leer y firmar tales normas, como parte del proceso de peticin de cuentas de trabajo. Debe establecer claramente la responsabilidad de los usuarios con respecto a la proteccin de la informacin almacenada en sus cuentas. Debe sealar que permisos pueden tener los usuarios sobre ficheros que tengan accesibles, pero no sean suyos. Debe estipular el uso aceptable del correo electrnico, del acceso Web y de todo tipo de acceso a Internet, as como discutir los usos aceptables, no relacionados con el objeto de la organizacin, de los recursos informticos.

15

Polticas generales de seguridad Otra poltica es la que hace explcitas las normas sobre acceso remoto a los recursos informticos de la organizacin. Debe cubrir todos los mtodos disponibles para acceder, remotamente, a los recursos de la red interna: Acceso mediante modem, va SLIP o PPP. Acceso mediante RDSI o ADSL. Acceso mediante ssh o telnet, desde Internet. Acceso mediante cualquier tipo de red privada virtual.

Otra poltica fundamental es la que trata de la proteccin de la informacin, que debe dar una gua sobre el procesado, almacenamiento y transmisin de la informacin, por parte de los usuarios. Su objetivo fundamental es garantizar que la informacin est protegida apropiadamente frente a la posible modificacin. Otro aspecto importante que debe cubrir es la definicin de los niveles de sensibilidad de la informacin de la organizacin, qu informacin es pblica, cul es semi-pblica y cul est restringida y a qu niveles. La siguiente poltica es la de proteccin frente a posibles ataques por virus informticos. Esta, debe proporcionar las lneas generales de los informes sobre infecciones por virus, as como los procedimientos de contencin de los mismos. Tambin debe contener las explicaciones de los distintos niveles de riesgo dependiendo del tipo de virus, as como la necesidad de seleccin del tipo de programa antivirus que se vaya a utilizar y debe discutirse la frecuencia de actualizacin de los datos del mismo software. Otra poltica tiene que ver con las contraseas. Debe contener las directrices de cmo gestionar las contraseas de usuario y de administrador, as como: Las reglas de creacin de las contraseas. Las reglas de cmo evitar la revelacin de contraseas. Las reglas para el desarrollo de aplicaciones en las que haga falta la contrasea. Las reglas de uso de todo tipo de contraseas de protocolos. 2.5 Aspectos humanos y organizativos de la poltica de seguridad.

Se puede hacer la siguiente divisin del personal que interactuar con los sistemas y mquinas de la organizacin: El administrador o responsable directo del sistema. Las personas que deben tener acceso al sistema como usuarios. Las personas relacionadas con el sistema peor que no necesitan usarlo. Las personas ajenas al sistema.

Los administradores deben ser personas correctamente cualificadas, sern los nicos con acceso completo al sistema que administran. Es fundamental asegurar a esta persona tan bien como se asegure al resto del sistema. No sirve de nada disponer del sistema ms sofisticado, desde el punto de vista de la seguridad, si esta persona puede fallar en cualquier momento. La nica forma de conseguirlo es buscando su fidelidad, tanto mediante recompensas como penalizaciones adecuadas y proporcionadas al valor de los bienes que custodia. No hacerlo as sera exponer a la organizacin a problemas realmente graves. Si tales personas reciben un salario insuficiente, o inapropiado, y una penalizacin 16

Captulo 2 insuficiente, esto les har ms susceptibles al chantaje o al soborno, mientras que unas penalizaciones excesivas pueden llevar a la desesperacin, y prdida del miedo a las consecuencias, o a un estado de nerviosismo permanente, que disminuya su capacidad. Es posible reducir la responsabilidad de los administradores, transfirindola a sus jefes, reduciendo as, aparentemente, la necesidad de cuidar de los administradores. En realidad, esto no es ms que una transferencia ficticia: todo el que tiene acceso fsico al ordenador tiene en ltima instancia control absoluto, y este traslado de responsabilidades slo refleja una falta de confianza notoria, que rompe la necesaria relacin de cordialidad y fidelidad, poniendo en peligro el sistema de seguridad. Los usuarios, tpicamente empleados fijos, personal temporal o clientes de un sistema no necesitan tener el control absoluto de los sistemas servidores de la organizacin. Por ello, la solucin generalmente usada es establecer sistemas de acceso parciales, con requisitos de seguridad menores, de tal forma que el usuario tenga control absoluto sobre su sistema particular, disminuyendo la repercusin de un eventual compromiso y la importancia de la responsabilidad, pero permitiendo slo el acceso necesario a los sistemas servidores. No todos los usuarios deben tener el mismo grado de acceso a los datos, ni tendrn, por tanto, la misma responsabilidad, por ello se debe establecer distintos niveles de usuarios. Cada usuario debe de ser consciente de sus responsabilidades. Entre las personas relacionadas con los sistemas, especialmente servidores de la organizacin, pero que no necesitan usarlos habitualmente, se puede hacer una divisin, personal ejecutivo y personal de mantenimiento. El personal ejecutivo, debido a su disposicin dentro de la empresa, no suele necesitar acceder a los sistemas servidores en el da a da, pero, en determinados momentos, pueden necesitar mostrar datos o informacin de los mismos. Esto, sin lugar a dudas, pone en peligro la seguridad del sistema y, por tanto ser necesario, tomar las medidas adecuadas y habilitar los mecanismos que lo permitan, manteniendo, a la vez, las normas de seguridad sobre el sistema y los datos de que se trate. El personal de mantenimiento suele tener acceso al permetro protegido. En ellos confluyen circunstancias especiales: por un lado suelen ser personas no tcnicas, ni relacionadas con los equipos y, por tanto, es ms probables que cometan errores comprensibles en su interaccin con ellos. Por otro lado, el que no se les exija conocimientos en tecnologa para desempear su trabajo no quiere decir que no los tengan. Por ello, si deben acceder al sistema, es recomendable que lo hagan bajo supervisin de una persona responsable. Para las personas ajenas a los sistemas, es muy fcil resumir la poltica: no deben acceder, en ninguna circunstancia. Una buena poltica de seguridad debe determinar el acceso, controlado correctamente, de las personas con derecho a tal acceso, pero debe garantizar, claramente, la imposibilidad para el resto de las personas. Hay una serie de procedimientos organizativos a tener en cuenta, en relacin con todas las personas de la organizacin, que deben ser tomados por la direccin de recursos humanos, o semejante, que se pueden resumir de la siguiente manera: Que las definiciones de puesto de trabajo contemplen todo lo necesario en cuanto a responsabilidades de seguridad y sus sistemas.

17

Polticas generales de seguridad Que los empleados que vayan a hacer uso de informacin sensible, hayan sido correctamente contratados, teniendo especial cuidado con el caso de los empleados temporales. Tanto los nuevos empleados, como los colaboradores externos o consultores o tcnicos debern firmar contratos, o acuerdos, de confidencialidad antes de su conexin y acceso a los recursos y sistemas de informacin de la organizacin. Es necesario que tales empleados se den cuenta de la importancia que tienen en el mantenimiento de la seguridad de sistemas y equipo y de los posibles procedimientos disciplinarios a los que se vern expuestos, en el caso de incumplir sus responsabilidades. La mejor manera de implementar este procedimiento es mediante un plan de formacin para todo el personal de la organizacin, adecundolo a las necesidades de cada puesto.

2.6

Aspectos legales de la poltica de seguridad.

Se deben sealar las normas legales que hay que tener en cuenta, hoy en da, en el desarrollo de cualquier poltica de seguridad, as como una serie de puntos clave, que deben aparecer en ella, como consecuencia de la aplicacin de tales normas. Las normas vigentes, que habr que tener en cuenta, son: Real decreto 994/1999, reglamento de medidas de seguridad de ficheros con datos personales. Ley orgnica de proteccin de datos 15/1999(LOPD). Ley de servicios de la sociedad de la informacin y de comercio electrnico, LSSICE, 34/2002.

Con respecto al real decreto 94/1999, hay que tener en cuenta, entre otras, una serie de normas de obligado cumplimiento: Segn su artculo 11. El responsable de Seguridad de la Direccin de Sistemas, los Responsables de Seguridad designados en otras Direcciones y los Encargados de tratamiento por terceros, sern los encargados de coordinar y controlar las medidas de seguridad definidas para los ficheros, incluyendo mediante la utilizacin de las herramientas necesarias, la administracin en la asignacin a los usuarios y ficheros en los niveles y categoras de seguridad requeridas por el Propietario de los datos para su aplicacin en cuanto al acceso y tratamiento de los datos se refiere. Tambin en el artculo 11. La Direccin de Sistemas, establecer un mecanismo que permita la identificacin de forma inequvoca y personalizada de todo aquel usuario que intente acceder al sistemas de informacin y la verificacin de que est autorizado.

18

Captulo 2 Segn sus artculos 2 y 18. Se limitar la posibilidad de intentar reiteradamente el acceso no autorizado al sistema de informacin. Segn el artculo 24. De cada acceso se guardarn, como mnimo la identificacin del usuario, la fecha y hora en que se realiz, el fichero accedido, el tipo de acceso y si ha sido autorizado o denegado. En caso de que el acceso haya sido autorizado, se debe guardar la informacin que permita identificar el registro accedido. Los mecanismos que permiten el registro de lo datos detallados, estarn bajo el control del Responsable de Seguridad. En ningn caso se permitir la desactivacin de los mismos. El perodo mnimo de conservacin es de 2 aos. El Responsable de Seguridad se encargar de revisar peridicamente la informacin de control registrada y elaborar un informe de revisiones realizadas y problemas detectados al menos 1 vez al mes. Segn el artculo 17. Los sistemas de informacin e instalaciones de tratamiento de datos se sometern a una auditoria interna o externa, que verifique el cumplimento del Reglamento, de los procedimientos e instrucciones vigentes en materia de seguridad de datos, al menos cada dos aos. Segn el artculo 5. En el acceso a datos a travs de redes de comunicaciones, el nivel de seguridad debe ser equivalente a los accesos en modo local. Por otro lado esta la LOPD, cuyo objetivo es garantizar y proteger, en lo que concierne al tratamiento de los datos personales, las libertades pblicas y los derechos fundamentales de las personas fsicas, y especialmente de su honor e intimidad personal y familiar. En cuanto a la LOPD, se debe destacar [7]: Artculo 4: o Los datos de carcter personal slo se podrn recoger para su tratamiento, as como someterlos a dicho tratamiento, cuando sean adecuados, pertinentes y no excesivos en relacin con el mbito y las finalidades determinadas, explcitas y legtimas para las que se hayan obtenido. o Los datos de carcter personal objeto de tratamiento no podrn usarse para finalidades incompatibles con aquellas para las que los datos hubieran sido recogidos. No se considerar incompatible el tratamiento posterior de stos con fines histricos, estadsticos o cientficos. o En el caso de que los datos sena inexactos, debern ser rectificados o cancelados, reconociendo en todo caso la posibilidad de acceso por parte del interesado. o Si los datos pierden su finalidad originaria debern ser cancelados.

19

Polticas generales de seguridad Artculo 5: En este artculo se trata la recogida de datos, siendo de especial importancia para las personas que han de confeccionar los cuestionarios de recogida de datos, dado que los interesados debern ser informados de lo siguiente: a) La existencia del fichero o tratamiento de datos, la finalidad de la recogida y los destinatarios de la informacin. b) El carcter optativo u obligatorio de las preguntas. c) Las consecuencias sobre la obtencin de los datos, as como la negativa a suministrarlos. d) La posibilidad de ejercer los derechos rectificacin, cancelacin y oposicin. de acceso,

e) La identidad y direccin del responsable del tratamiento o su representante. Artculo 6: En este artculo se trata el consentimiento del afectado a la hora de dar sus datos. No obstante, sin perjuicio de las normas ms rigurosas para los datos especialmente protegidos, existen algunas excepciones al principio general, dado que, siempre que no se vulneren los derechos y libertades fundamentales del interesado, no ser preciso el consentimiento en los siguientes supuestos: a) Cuando los datos se recojan para el ejercicio de las funciones propias de las Administraciones pblicas en el mbito de sus competencias. b) Cuando se refieran a las partes en una relacin comercial, laboral o administrativa, siempre que sea necesario para el cumplimiento de la relacin de que se trate. c) Cuando el tratamiento de los datos tenga por finalidad proteger un inters vital del interesado. d) Cuando los datos figuren en fuentes accesibles al pblico y su tratamiento sea necesario para la satisfaccin del inters legtimo perseguido. De todas formas, en los casos en que no es necesario el consentimiento del afectado, se reconoce a ste el derecho a quedar excluido del tratamiento de los datos, siempre que una ley no disponga lo contrario y existan motivos fundados y legtimos relativos a una concreta situacin personal. Artculo 7: En este artculo se trata los datos especialmente protegidos, como pueden ser los relacionados con ideologas, origen racial, salud, infracciones penales o administrativas, etc. Artculo 9: En este artculo se trata de la seguridad de los datos: 20

Captulo 2 a) El responsable del fichero, y en su caso, el encargado del tratamiento debern adoptar las medidas de ndole tcnica y organizativa necesarias que garanticen la seguridad de los datos y eviten su alteracin, perdida o acceso no autorizado. b) No se registrarn datos de carcter personal en ficheros que no renan las condiciones de integridad seguridad necesarias. Artculos 11 y 12: En estos artculos se trata la comunicacin de los datos y los accesos de terceras personas a esos datos. Resaltar lo ms importante de la LSSICE sera mucho ms extenso. Basta sealar su objetivo y mbito, lo que da una idea de lo importante que ser tenerla en cuenta para la elaboracin de cualquier poltica de seguridad. El objetivo de la ley es: Es objeto de la presente Ley la regulacin del rgimen jurdico de los servicios de la sociedad de la informacin y de la contratacin por va electrnica, en lo referente a las obligaciones de los prestadores de servicios, incluidos los que actan como intermediarios en la transmisin de contenidos por las redes de telecomunicaciones, las comunicaciones comerciales por va electrnica, la informacin previa y posterior a la celebracin de contratos electrnicos, las condiciones relativas a su validez y eficacia y el rgimen sancionador aplicable a los prestadores de servicios de la sociedad de la informacin. Es una ley joven y est en el periodo de puesta en macha. Habr mucho ms que decir cuando lleve un tiempo utilizndose y hayan aparecido realmente problemas.

21

3
3.1 Introduccin

MTODOS DE ATAQUE Y SOLUCIONES

En este captulo se va a tratar de clasificar los distintos tipos de ataques, atendiendo a criterios diversos, pero analizndolos en detalle, desde el punto de vista del atacante profesional. 3.2 Elementos de la seguridad Los tres elementos principales a proteger en cualquier sistema informtico son: El software. El hardware. Los datos.

Por hardware se entiende el conjunto formado por todos los elementos fsicos de un sistema informtico, como CPUs, terminales, cableado, medios de almacenamiento secundario (cintas, CD-ROMs, diskettes) o tarjetas de red. Por software se entiende el conjunto de programas lgicos que hacen funcionar al hardware, tanto sistemas operativos como aplicaciones, y por datos el conjunto de informacin lgica 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 auditorias de seguridad se habla de un cuarto elemento a proteger, los fungibles (elementos que se gastan o desgastan con el uso continuo, como papel de impresora, tners, cintas magnticas, diskettes), en este proyecto no se considera la seguridad de estos elementos por ser externos al sistema. Habitualmente los datos constituyen el principal elemento de los tres a proteger, ya que es el ms amenazado y seguramente el ms difcil de recuperar, con toda seguridad una mquina Unix est ubicada en un lugar de acceso fsico restringido, o al menos controlado, y adems en caso de prdida de una aplicacin (o un programa de sistema, o el propio ncleo de Unix) este software se puede restaurar sin problemas desde su medio original. Sin embargo, en caso de prdida de una base de datos o de un proyecto de un usuario, no tenemos un medio original desde el que restaurar, se ha de pasar obligatoriamente por un sistema de copias de seguridad, y a menos que la poltica de copias sea muy estricta, es difcil devolver los datos al estado en que se encontraban antes de la prdida. Contra cualquiera de los tres elementos descritos anteriormente (pero principalmente sobre los datos) se pueden realizar multitud de ataques o, dicho de otra forma, estn expuestos a diferentes amenazas. 3.3 Amenazas

3.3.1 Tipos de amenazas. Generalmente, la taxonoma ms elemental de estas amenazas se divide en cuatro grandes grupos: Interrupcin Interceptacin Modificacin

Captulo 3 Fabricacin.

Un ataque se clasifica como interrupcin si hace que un objeto del sistema se pierda, quede inutilizable o no disponible, ste es un ataque contra la disponibilidad. Se tratara de una interceptacin si un elemento no autorizado consigue un acceso a un determinado objeto del sistema, ste es un ataque contra la confidencialidad y de una modificacin si adems de conseguir el acceso consigue modificar el objeto, algunos autores consideran un caso especial de la modificacin: la destruccin, entendindola como una modificacin que inutiliza al objeto afectado. Por ltimo, se dice que un ataque es una fabricacin si se trata de una modificacin destinada a conseguir un objeto similar al atacado de forma que sea difcil distinguir entre el objeto original y el fabricado. En la figura 6 se muestran estos tipos de ataque de una forma grfica.

Figura 6: Flujo normal de informacin entre emisor y receptor y posibles amenazas: (a) interrupcin, (b) interceptacin, (c) modificacin y (d) fabricacin.

En la gran mayora de publicaciones relativas a la seguridad informtica 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, se suele identificar a los atacantes nicamente como personas, esto tiene sentido si hablamos por ejemplo de responsabilidades por un delito informtico. Pero en este proyecto es preferible hablar de elementos y no de personas, aunque a veces lo olvidemos, nuestro sistema puede verse perjudicado por mltiples entidades aparte de humanos, como por ejemplo programas, catstrofes naturales 3.3.2 Origen de las amenazas. A continuacin se presenta una relacin de los elementos que potencialmente pueden amenazar a nuestro sistema. 3.3.2.1 Personas La mayora de ataques al sistema van a provenir en ltima instancia de personas que, intencionada o inintencionadamente, pueden causar enormes prdidas. Generalmente se tratara de piratas que intentan conseguir el mximo nivel de privilegio posible aprovechando alguno (o algunos) de los riesgos lgicos de los que hablaremos a continuacin, especialmente agujeros del software. Pero con demasiada frecuencia se suele olvidar que los piratas clsicos no son los nicos que amenazan nuestros equipos, es especialmente preocupante que mientras que hoy en da cualquier administrador mnimamente preocupado por la seguridad va a conseguir un sistema relativamente fiable de una forma lgica (permaneciendo atento a vulnerabilidades de su software,

23

Mtodos de ataque y soluciones restringiendo servicios, utilizando cifrado de datos), pocos administradores tienen en cuenta factores como la ingeniera social a la hora de disear una poltica 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 se pasean por el sistema pero no lo modifican o destruyen, y los activos, aquellos que daan 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 situacin concreta. Personal: Las amenazas a la seguridad de un sistema provenientes del personal de la propia organizacin rara vez son tomadas en cuenta, se presupone un entorno de confianza donde a veces no existe, por lo que se pasa por alto el hecho de que casi cualquier persona de la organizacin, incluso el personal ajeno a la infraestructura informtica (secretariado, personal de seguridad, personal de limpieza y mantenimiento) puede comprometer la seguridad de los equipos. Aunque los ataques pueden ser intencionados (en cuyo caso sus efectos son extremadamente dainos, recordemos que nadie mejor que el propio personal de la organizacin conoce mejor los sistemas y sus debilidades), lo normal es que ms que de ataques se trate de accidentes causados por un error o por desconocimiento de las normas bsicas de seguridad, un empleado de mantenimiento que corta el suministro elctrico para hacer una reparacin puede llegar a ser tan peligroso como el ms experto de los administradores que se equivoca al teclear una orden y borra todos los sistemas de ficheros, y en el primer caso, el atacante ni siquiera ha de tener acceso lgico (ni fsico) a los equipos, ni conocer nada sobre seguridad en Unix. Ex-empleados: Otro gran grupo de personas potencialmente interesadas en atacar nuestro sistema son los antiguos empleados del mismo, especialmente los que no abandonaron el entorno por voluntad propia (y en el caso de redes de empresas, los que pasaron a la competencia). Generalmente, se trata de personas descontentas con la organizacin que pueden aprovechar debilidades de un sistema que conocen perfectamente para daarlo como venganza por algn hecho que no consideran justo, pueden insertar troyanos, bombas lgicas, virus o simplemente conectarse al sistema como si an trabajaran para la organizacin (muchas veces se mantienen las cuentas abiertas incluso meses despus de abandonar la universidad o empresa), conseguir el privilegio necesario, y daarlo de la forma que deseen, incluso chantajeando a sus ex-compaeros o ex-jefes. Curiosos: Junto con los crackers, los curiosos son los atacantes ms habituales de sistemas Unix en redes de I+D. Recordemos que los equipos estn trabajando en entornos donde se forma a futuros profesionales de la informtica y las telecomunicaciones (gente que a priori tiene inters por las nuevas tecnologas), y recordemos tambin que las personas suelen ser curiosas por naturaleza, esta combinacin produce una avalancha de estudiantes o personal intentando conseguir mayor privilegio del que tienen o intentando acceder a sistemas a los que oficialmente no tienen acceso. Y en la mayora de ocasiones esto se hace simplemente para leer el correo de un amigo, enterarse de cunto cobra un compaero, copiar un trabajo o comprobar que es posible romper la seguridad de 24

Captulo 3 un sistema concreto. Aunque en la mayora de situaciones se trata de ataques no destructivos (a excepcin del borrado de huellas para evitar la deteccin), parece claro que no benefician en absoluto al entorno de fiabilidad que podamos generar en un determinado sistema. Crackers: Los entornos de seguridad media son un objetivo tpico de los intrusos, ya sea para fisgonear, para utilizarlas como enlace hacia otras redes o simplemente por diversin. Por un lado, son redes generalmente abiertas, y la seguridad no es un factor tenido muy en cuenta en ellas, por otro, el gran nmero y variedad de sistemas Unix conectados a estas redes provoca, casi por simple probabilidad, que al menos algunos de sus equipos sean vulnerables a problemas conocidos de antemano. De esta forma un atacante slo ha de utilizar un escner de seguridad contra el dominio completo y luego atacar mediante un simple exploit los equipos que presentan vulnerabilidades, esto convierte a las redes de I+D, a las de empresas, o a las de ISPs en un objetivo fcil y apetecible para piratas con cualquier nivel de conocimientos, desde los ms novatos (y a veces ms peligrosos) hasta los expertos, que pueden utilizar toda la red para probar nuevos ataques o como nodo intermedio en un ataque a otros organismos, con el consiguiente deterioro de imagen (y a veces de presupuesto) que supone para una universidad ser, sin desearlo, un apoyo a los piratas que atacan sistemas tericamente ms protegidos, como los militares. Terroristas: Bajo esta definicin se engloba a cualquier persona que ataca al sistema simplemente por causar algn tipo de dao en l. Por ejemplo, alguien puede intentar borrar las bases de datos de un partido poltico enemigo o destruir los sistemas de ficheros de un servidor que alberga pginas Web de algn grupo religioso, en el caso de redes de I+D, tpicos ataques son la destruccin de sistemas de prcticas o la modificacin de pginas Web de algn departamento o de ciertos profesores, generalmente por parte de alumnos descontentos. Intrusos remunerados: Este es el grupo de atacantes de un sistema ms peligroso, aunque por fortuna el menos habitual en redes normales, suele afectar ms a las grandes empresas o a organismos de defensa. Se trata de piratas con gran experiencia en problemas de seguridad y un amplio conocimiento del sistema, que son pagados por una tercera parte generalmente para robar secretos (el nuevo diseo de un procesador, una base de datos de clientes, informacin confidencial sobre las posiciones de satlites espa) o simplemente para daar la imagen de la entidad afectada. Esta tercera parte suele ser una empresa de la competencia o un organismo de inteligencia, es decir, una organizacin que puede permitirse un gran gasto en el ataque, de ah su peligrosidad, se suele pagar bien a los mejores piratas, y por si esto fuera poco los atacantes van a tener todos los medios necesarios a su alcance. Aunque como hemos dicho los intrusos remunerados son los menos comunes en la mayora de situaciones, en ciertas circunstancias pueden aprovechar nuestras redes como plataforma para atacar otros organismos.

3.3.2.2 Amenazas lgicas Bajo la etiqueta de amenazas lgicas encontramos todo tipo de programas que de una forma u otra pueden daar a nuestro sistema, creados de forma intencionada para ello (software malicioso, tambin conocido como malware) o simplemente por error (bugs o agujeros) [8].

25

Mtodos de ataque y soluciones Software incorrecto: Las amenazas ms habituales a un sistema Unix provienen de errores cometidos de forma involuntaria por los programadores de sistemas o de aplicaciones. Una situacin no contemplada a la hora de disear el sistema de red del kernel o un error accediendo a memoria en un fichero pueden comprometer local o remotamente a Unix (o a cualquier otro sistema operativo). A estos errores de programacin se les denomina bugs, y a los programas utilizados para aprovechar uno de estos fallos y atacar al sistema, exploits. Como se ha dicho, representan la amenaza ms comn contra Unix, ya que cualquiera puede conseguir un exploit y utilizarlo contra nuestra mquina sin ni siquiera saber como funciona y sin unos conocimientos mnimos de Unix, incluso hay exploits que daan seriamente la integridad de un sistema (negaciones de servicio o incluso acceso root remoto) y estn preparados para ser utilizados desde MS-DOS, con lo que cualquier pirata novato (comnmente, se les denomina script kiddies) puede utilizarlos contra un servidor y conseguir un control total de una mquina de varios millones de pesetas desde su PC sin saber nada del sistema atacado, incluso hay situaciones en las que se analizan los logs de estos ataques y se descubre que el pirata incluso intenta ejecutar rdenes de MS-DOS. Herramientas de seguridad: Cualquier herramienta de seguridad representa un arma de doble filo, de la misma forma que un administrador las utiliza para detectar y solucionar fallos en sus sistemas o en la subred completa, un potencial intruso las puede utilizar para detectar esos mismos fallos y aprovecharlos para atacar los equipos. Herramientas como nessus, saintt o satan pasan de ser tiles a ser peligrosas cuando las utilizan crackers que buscan informacin sobre las vulnerabilidades de un host o de una red completa. Si como administradores no se utilizan herramientas de seguridad que muestren las debilidades de los sistemas (para corregirlas), hay que estar seguro que un atacante no va a dudar en utilizar tales herramientas (para explotar las debilidades encontradas), por tanto, hay que agradecer a los diseadores de tales programas el esfuerzo que han realizado (y nos han ahorrado) en pro de sistemas ms seguros. Puertas traseras: Durante el desarrollo de aplicaciones grandes o de sistemas operativos es habitual entre los programadores insertar atajos en los sistemas habituales de autenticacin del programa o del ncleo que se est diseando. A estos atajos se les denomina puertas traseras, y con ellos se consigue mayor velocidad a la hora de detectar y depurar fallos, por ejemplo, los diseadores de un software de gestin de bases de datos en el que para acceder a una tabla se necesiten cuatro claves diferentes de diez caracteres cada una pueden insertar una rutina para conseguir ese acceso mediante una nica clave especial, con el objetivo de perder menos tiempo al depurar el sistema. Algunos programadores pueden dejar estos atajos en las versiones definitivas de su software para facilitar un mantenimiento posterior, para garantizar su propio acceso, o simplemente por descuido, la cuestin es que si un atacante descubre una de estas puertas traseras (no nos importa el mtodo que utilice para hacerlo) va a tener un acceso global a datos que no debera poder leer, lo que obviamente supone un grave peligro para la integridad de nuestro sistema. Bombas lgicas: Las bombas lgicas son partes de cdigo de ciertos programas que permanecen sin realizar ninguna funcin hasta que son activadas, en ese punto, la funcin que realizan no es la original del programa, sino que generalmente se trata de una accin perjudicial. Los activadores ms comunes de estas bombas lgicas pueden ser la ausencia o presencia de ciertos ficheros, la ejecucin bajo un 26

Captulo 3 determinado UID o la llegada de una fecha concreta, cuando la bomba se activa va a poder realizar cualquier tarea que pueda realizar la persona que ejecuta el programa, si las activa el root, o el programa que contiene la bomba los efectos obviamente pueden ser fatales. Canales cubiertos: Los canales cubiertos son canales de comunicacin que permiten a un proceso transferir informacin de forma que viole la poltica de seguridad del sistema, es decir, un proceso transmite informacin a otros (locales o remotos) que no estn autorizados a leer dicha informacin. Los canales cubiertos no son una amenaza demasiado habitual en redes de I+D, ya que suele ser mucho ms fcil para un atacante aprovechar cualquier otro mecanismo de ataque lgico, sin embargo, es posible su existencia, y en este caso su deteccin suele ser difcil, algo tan simple como el puerto finger abierto en una mquina puede ser utilizado a modo de covert channel por un pirata con algo de experiencia. Virus: Un virus es una secuencia de cdigo que se inserta en un fichero ejecutable (denominado husped), de forma que cuando el archivo se ejecuta, el virus tambin lo hace, insertndose a s mismo en otros programas. Todo el mundo conoce los efectos de los virus en algunos sistemas operativos de sobremesa, sin embargo, en Unix los virus no suelen ser un problema de seguridad grave, ya que lo que pueda hacer un virus lo puede hacer ms fcilmente cualquier otro mecanismo lgico. Aunque los virus existentes para entornos Unix son ms una curiosidad que una amenaza real, en sistemas sobre plataformas IBM-PC o compatibles (hay muchos sistemas Unix que operan en estas plataformas, como Linux, FreeBSD, NetBSD, Minix, Solaris) ciertos virus, especialmente los de boot, pueden tener efectos nocivos, como daar el sector de arranque, aunque se trata de daos menores comparados con los efectos de otras amenazas. Gusanos: Un gusano es un programa capaz de ejecutarse y propagarse por s mismo a travs de redes, en ocasiones portando virus o aprovechando bugs de los sistemas a los que conecta para daarlos. Al ser difciles de programar su nmero no es muy elevado, pero el dao que pueden causar es muy grande, el mayor incidente de seguridad en Internet fue precisamente el gusano Word comentado en el capitulo 1. Hemos de pensar que un gusano puede automatizar y ejecutar en unos segundos todos los pasos que seguira un atacante humano para acceder a nuestro sistema, mientras que una persona, por muchos conocimientos y medios que posea, tardara como mnimo horas en controlar nuestra red completa (un tiempo ms que razonable para detectarlo), un gusano puede hacer eso mismo en pocos minutos, de ah su enorme peligro y sus devastadores efectos. Caballos de Troya: Los troyanos o caballos de Troya son instrucciones escondidas en un programa de forma que ste parezca realizar las tareas que un usuario espera de l, pero que realmente ejecute funciones ocultas (generalmente en detrimento de la seguridad) sin el conocimiento del usuario, como el Caballo de Troya de la mitologa griega, al que deben su nombre, ocultan su funcin real bajo la apariencia de un programa inofensivo que a primera vista funciona correctamente. En la prctica totalidad de los ataques a Unix, cuando un intruso consigue el privilegio necesario en el sistema instala troyanos para ocultar su presencia o para asegurarse la entrada en caso de ser descubierto. por ejemplo, es tpico utilizar lo que se denomina un rootkit, que no es ms que un conjunto de versiones troyanas de ciertas utilidades (netstat, ps, who), para conseguir que cuando el administrador las ejecute no vea la informacin relativa al atacante, como sus procesos o su 27

Mtodos de ataque y soluciones conexin al sistema, otro programa que se suele suplantar es login, por ejemplo para que al recibir un cierto nombre de usuario y contrasea proporcione acceso al sistema sin necesidad de consultar /etc/passwd. Programas conejo o bacterias: Bajo este nombre se conoce a los programas que no hacen nada til, sino que simplemente se dedican a reproducirse hasta que el nmero de copias acaba con los recursos del sistema (memoria, procesador, disco...), produciendo una negacin de servicio. Por s mismos no hacen ningn dao, sino que lo que realmente perjudica es el gran nmero de copias suyas en el sistema, que en algunas situaciones pueden llegar a provocar la parada total de la mquina. Hemos de pensar hay ciertos programas que pueden actuar como conejos sin proponrselo, ejemplos se suelen encontrar en los sistemas Unix destinados a prcticas en las que se ensea a programar al alumnado, es muy comn que un bucle que por error se convierte en infinito contenga entre sus instrucciones algunas de reserva de memoria, lo que implica que si el sistema no presenta una correcta poltica de cuotas para procesos de usuario pueda venirse abajo o degradar enormemente sus prestaciones. El hecho de que el autor suela ser fcilmente localizable no debe ser ninguna excusa para descuidar esta poltica, no podemos culpar a un usuario por un simple error, y adems el dao ya se ha producido. Tcnicas salami: Por tcnica salami se conoce al robo automatizado de pequeas cantidades de bienes (generalmente dinero) de una gran cantidad origen. El hecho de que la cantidad inicial sea grande y la robada pequea hace extremadamente difcil su deteccin, si de una cuenta con varios millones de euros se roban unos cntimos, nadie va a darse cuenta de ello, si esto se automatiza para, por ejemplo, descontar un cntimo de cada nmina pagada en la universidad o de cada beca concedida, tras un mes de actividad seguramente se habra robado una enorme cantidad de dinero sin que nadie se haya percatado de este hecho, ya que de cada origen se ha tomado una cantidad mnima. Las tcnicas salami no se suelen utilizar para atacar sistemas normales, sino que su uso ms habitual es en sistemas bancarios, sin embargo, como en una red con requerimientos de seguridad medios es posible que haya ordenadores dedicados a contabilidad, facturacin de un departamento o gestin de nminas del personal, se comenta esta potencial amenaza contra el software encargado de estas tareas.

Podemos destacar el parecido entre los ataques a redes y servidores y los ataques o amenazas a la seguridad del mundo real. Los ataques dirigidos a los dispositivos de red que se desea proteger estn, finalmente, realizados por personas. Se puede pensar en algunos: robos de bancos, malversaciones y fraudes, invasin de la confidencialidad, sabotaje, espionaje, etc. Todo este tipo de problemas existen en las redes de las organizaciones actuales. Se puede decir que donde hay dinero hay criminales, con lo que asuntos como el sabotaje remoto al control de cajeros automticos o la pornografa infantil, pasan a ser perfectamente factibles tambin en las redes. Pero, desde el punto de vista ms tcnico si hay diferencias, se podra decir que el ciberespacio cambia las formas de los ataques y, como consecuencia, se deben adecuar las formas de las defensas. La red Internet tiene varias caractersticas que hacen que los citados ataques puedan ser mucho peores, en cierto sentido. Esas caractersticas son: El aspecto automtico de los ataques. Si en algo son potentes los ordenadores, es en las tareas repetitivas. Se puede dejar una mquina tratando de descifrar contraseas

28

Captulo 3 de manera automtica, mientras el atacante se va a pasar el fin de semana a esquiar, con la tranquilidad de que su trabajador no se va a cansar, ni se va a quejar. El aspecto remoto de los ataques. Es casi tan fcil conectarse a un ordenador en Paris desde Madrid que desde Tokio. En ese sentido, se dice que Internet no tiene fronteras. Lo grave es que los aspectos legales de todo esto no estn, an, controlados. Como dijo John Gilmore: The Internet tretas censorship as a damage and routes around it(Internet trata a la censura como algo daino y lo rodea) La velocidad de propagacin de los ataques. Cualquier atacante puede conseguir, con mucha facilidad, y en un tiempo record, muchas de las herramientas de ataque que necesitar. Si es un amateur, le bastar con conseguir las aplicaciones y empezar a usarlas. Si se habla de un profesional, seleccionar entre las mejores aplicaciones, buscar, incluso, aquellas de las que se dispone del cdigo fuente, pero, unos y otros, podrn disfrutar de ellas en un tiempo incomparablemente menor del que necesitaran en el mundo no ciberntico. Mecanismos Los mecanismos de seguridad se dividen en tres grandes grupos: Prevencin Deteccin Recuperacin

3.4

Los mecanismos de prevencin 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 transmisin de datos se puede considerar un mecanismo de este tipo, ya que evita que un posible atacante escuche las conexiones. Por mecanismos de deteccin se conoce a aquellos que se utilizan para detectar violaciones de la seguridad o intentos de violacin, ejemplos de estos mecanismos son los programas de auditoria como Tripwire. Finalmente, los mecanismos de recuperacin son aquellos que se aplican cuando una violacin del sistema se ha detectado, para retornar a ste a su funcionamiento correcto, ejemplos de estos mecanismos son la utilizacin de copias de seguridad o el hardware adicional. Dentro de este ltimo grupo de mecanismos de seguridad encontramos un subgrupo denominado mecanismos de anlisis forense, cuyo objetivo no es simplemente retornar al sistema a su modo de trabajo normal, sino averiguar el alcance de la violacin, las actividades de un intruso en el sistema, y la puerta utilizada para entrar, 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 del sistema, se ha de enfatizar en el uso de mecanismos de prevencin y de deteccin, la mxima popular ms vale prevenir que curar se puede aplicar a la seguridad, para seguridad Web, evitar un ataque, detectar un intento de violacin, o detectar una violacin exitosa inmediatamente despus de que ocurra es mucho ms productivo y menos comprometedor para el sistema que restaurar el estado tras una penetracin de la mquina. Es ms, si se consigue un sistema sin vulnerabilidades y cuya poltica de seguridad se implementara mediante mecanismos de prevencin de una forma completa, no necesitaramos mecanismos de deteccin o recuperacin. Aunque esto es

29

Mtodos de ataque y soluciones imposible de conseguir en la prctica. Los mecanismos de prevencin ms habituales son los siguientes: 3.5 Mecanismos de autenticacin e identificacin Mecanismos de control de acceso Mecanismos de separacin Mecanismos de seguridad en las comunicaciones Taxonoma de los tipos de ataques.

Una buena clasificacin no se puede hacer sin un buen criterio. Desde el punto de vista del origen del ataque, se puede decir que los ataques son [9]: Externos. Cuando el atacante origina su ataque desde el exterior de una organizacin concreta, se dice que el ataque es externo. Esto puede ser desde un sitio desconocido de Internet o desde una direccin en la que se confa, pero que ha sido suplantada. Esta caracterstica es esencial para cierto tipo de ataques a una red, que realiza el control de acceso basado en direcciones IP. Internos. Es obvio que estar dentro de la organizacin facilita mucho el ataque. Tal ataque ha de ser visto, adems, desde un punto de vista amplio. Puede haber ataques profesionales internos, pero, tambin, por mala aplicacin de la poltica de seguridad, ataques no maliciosos de usuarios internos que prueban herramientas con toda su buena intencin.

Figura 7: Origen de los ataques.

Otro criterio que conviene utilizar, para una mejor caracterizacin de cada ataque, es la complejidad. En este sentido se puede hablar de ataques: No estructurados. Son ataques inocentes, ataques basados en herramientas bastante normales, que pueden tener distintos tipos de objetivos, y ser muy peligrosos, pero, en general, fcilmente reconocibles. Una caracterstica tpica de estos ataques es que o bien es una sola herramienta la puesta en marcha o son varias, pero sin ninguna estructuracin entre ellas. Estructurados. Aqu se est ante los ms peligrosos. Son ataques que se enfocan como un proyecto. Adems tratan de no dejar cabos sueltos, lo que se trata de borrar las huellas y se tienen en cuenta distintos puntos de ataque y de retirada. Aunque sean los ms peligrosos, son los menos habituales.

Otro criterio esta relacionado con la personalidad del atacante. Su formacin, experiencia y capacidad de comunicacin pueden ser fundamentales a la hora de 30

Captulo 3 desarrollar un ataque, especialmente si es uno estructurado y se usa en la fase de obtencin de informacin. Finalmente si se catalogan por el objetivo que persiguen, una necesidad de clasificacin ms granular, se puede hablar de los siguientes tipos de ataques: Ataques encaminados a la obtencin de informacin sobre los objetos a atacar. Ataques orientados a ver, cambiar o borrar informacin para la que no se est autorizado, aprovechndose de la mala administracin de las herramientas, mquinas y sistemas de la red. Ataques enfocados a ver, cambiar o borrar informacin para la que no se est autorizado, aprovechndose de las vulnerabilidades del software de los sistemas, aplicaciones y protocolos de la red. Ataque encauzados a sabotear un servicio, como un servidor Web, un servidor SMTP, el espacio libre en disco de un ordenador, el acceso a (o desde) una red. A todos ellos, se les denomina ataques de denegacin de servicio.

Si se utiliza este criterio, es muy fcil resaltar los otros criterios citados, con lo cual ser este el que usaremos. 3.5.1 Ataques remotos. 3.5.1.1 Escaneo de puertos. Una de las primeras actividades que un atacante realizar contra su objetivo sera sin duda un escaneo de puertos, un portscan, esto le permitir obtener en primer lugar informacin bsica acerca de qu servicios estamos ofreciendo en nuestras mquinas y, adicionalmente, otros detalles de nuestro entorno como qu sistema operativo tenemos instalados en cada host o ciertas caractersticas de la arquitectura de nuestra red. Analizando qu puertos estn abiertos en un sistema, el atacante puede buscar agujeros en cada uno de los servicios ofrecidos, cada puerto abierto en una mquina es una puerta de entrada a la misma [10]. Comprobar el estado de un determinado puerto es a priori una tarea muy sencilla, incluso es posible llevarla a cabo desde la lnea de rdenes, usando una herramienta tan genrica como telnet. Por ejemplo, para conocer el estado del puerto 5111 en la mquina cuya direccin es www.terra.es, si el telnet ha dicho puerto ofrece una respuesta, entonces est abierto y escuchando peticiones:
C:\Documents and Settings\Juanma>telnet www.terra.es 5111 Conectndose a www.terra.es... No se puede abrir la conexin al host, en puerto 5111: Error en la conexin C:\Documents and Settings\Juanma>

Si el puerto est protegido por un cortafuegos, lo ms probable es que no se obtenga respuesta alguna, el telnet lanzado se quedara intentando la conexin hasta que se produzca un timeout o hasta que se pare manualmente. Por lo general, nadie en su sano juicio usar telnet para realizar un escaneo de puertos masivo contra un sistema o contra toda una red, existen herramientas como strobe o nmap (la ms conocida) que pueden realizar esta tarea de una forma ms o menos cmoda y automatizable. Evidentemente, ninguno de estos programas se dedica a lanzar 31

Mtodos de ataque y soluciones telnet contra los puertos de un sistema, los escaneadores de puertos actuales implementan diferentes tcnicas que permiten detectar desde la versin del sistema operativo usado en la mquina atacada, hasta pasar inadvertidos ante diferentes sistemas de deteccin de intrusos. Existen diferentes aproximaciones para clasificar los escaneos de puertos, tanto en funcin de las tcnicas seguidas en el ataque como en funcin de a qu sistemas o puertos concretos va dirigido. Se habla de un escaneo horizontal cuando el atacante busca la disponibilidad de determinado servicio en diferentes mquinas de una red, por ejemplo, si el pirata dispone de un exploit que aprovecha un fallo en la implementacin de sendmail, es normal que trate de averiguar qu mquinas aceptan peticiones smtp en un determinado segmento para posteriormente atacar a dichos sistemas. Si por contra el pirata slo escanea puertos de una mquina, se denomina al ataque escaneo vertical, y suele denotar el inters del atacante en ese host concreto. Si comprueba todos los puertos del sistema al escaneo se le denomina vanilla, mientras que si slo lo hace contra determinados puertos o rangos, se le denomina strobe. Si nos basamos en las tcnicas utilizadas, podemos dividir los escaneos en tres grandes familias: Open. Half-open Stealth

Los escaneos open se basan en el establecimiento de una conexin TCP completa mediante el conocido como protocolo de acuerdo de tres vas o three-way handshake, por lo que son muy sencillos de detectar y detener. Utilizan la llamada connect(). La segunda tcnica half-open, el pirata finaliza la conexin antes de que se complete el protocolo de acuerdo de tres vas, lo que dificulta la deteccin del ataque por parte de algunos detectores de intrusos muy simples (casi todos los actuales son capaces de detectarlos). Dentro de esta tcnica se encuentra el SYN Scanning: cuando el origen atacante - recibe del destino - mquina escaneada - los bits SYN+ACK, enva un bit RST (no es necesaria una nueva trama, ya que este bit se enva automticamente a nivel de ncleo) en lugar del ACK correspondiente a un three-way handshake completo. Los escaneos SYN son fcilmente detectables y pueden ser bloqueados en cualquier cortafuegos. Existe una variable de esta tcnica denominada dumb scanning en la que entra en juego una tercera mquina denominada tonta (por el poco trfico que emite y recibe), algo que puede ayudar al pirata a camuflar su origen real. Sin embargo, el dumb scanning es ms complicado que el SYN scanning, por lo que se utiliza mucho menos en la vida real. En diciembre de 1995 Christopher Klaus proporcion las pautas de ciertas tcnicas de escaneo que permitan al atacante eludir la accin de los sistemas de deteccin de intrusos de la poca y a las que bautiz como stealth scanning, actualmente el significado del trmino ha cambiado, ya que lo que Klaus present se denomina hoy en da half-open scanning, y por stealth scanning se conoce a una familia de tcnicas de escaneo que cumplen alguna de las siguientes condiciones: Eludir cortafuegos o listas de control de acceso. No ser registradas por sistemas de deteccin de intrusos, ni orientados a red ni en el propio host escaneado. Simular trfico normal y real para no levantar sospechas ante un analizador de red.

32

Captulo 3 Una de las tcnicas que se encuentran dentro de la familia de los escaneos stealth es la conocida como SYN+ACK. La idea es muy simple, y consiste en una violacin del three-way handshake, el atacante, en lugar de enviar en primer lugar una trama SYN, enva SYN+ACK. Si el puerto est abierto simplemente se ignora, y si est cerrado sabe que no ha recibido previamente un paquete SYN, por lo que lo considera un error y enva una trama RST para finalizar la conexin. Los escaneos basados en este mtodo se usan poco en la actualidad, debido al elevado nmero de falsos positivos que pueden generar: slo debemos pensar en los mltiples motivos que pueden existir para que un sistema no responda ante una peticin SYN+ACK, desde listas de control de accesos en los routers o cortafuegos hasta simples timeouts. Otra tcnica dentro de los escaneos stealth es el FIN scanning, en este caso, el atacante enva a su objetivo una trama con el bit FIN activo, ante lo que este responde con un RST si el puerto est cerrado, o simplemente no responde en caso de estar abierto, como en el caso de los escaneos SYN+ACK este mtodo puede proporcionar muchos falsos positivos, por lo que tampoco se utiliza mucho hoy en da. Un mtodo de escaneo algo ms complejo es el ACK. El atacante enva una trama con este bit activo, y si el puerto destino est abierto es muy posible que o bien el campo TTL del paquete de vuelta sea menor que el del resto de las tramas RST recibidas, o que el tamao de ventana sea mayor que cero, como podemos ver, en este caso no basta con analizar el bit RST sino tambin la cabecera IP del paquete respuesta. Este mtodo es difcil de registrar por parte de los detectores de intrusos, pero se basa en el cdigo de red de BSD, por lo que es dependiente del operativo escaneado. Para finalizar con la familia de stealth scanning decir que hay dos mtodos opuestos entre s pero que se basan en una misma idea y proporcionan resultados similares, se trata de XMAS y NULL. Los primeros, tambin denominados escaneos rbol de navidad, se basan en enviar al objetivo tramas con todos los bits TCP (URG, ACK, PST, RST, SYN y FIN) activos, si el puerto est abierto el ncleo del sistema operativo eliminar la trama, ya que evidentemente la considera una violacin del three-way handshake, pero si est cerrado devolver un RST al atacante. Como antes, este mtodo puede generar demasiados falsos positivos, y adems slo es aplicable contra mquinas Unix debido a que est basado en el cdigo de red de BSD. El mtodo opuesto al XMAS se denomina NULL scanning, y evidentemente consiste en enviar tramas con todos los bits TCP reseteados, el resultado es similar, no se devolver ningn resultado si el puerto est abierto, y se enviar un RST si est cerrado. Aunque en principio este mtodo sera aplicable a cualquier pila TCP/IP, la implementacin incorrecta que hacen algunos sistemas operativos (entre ellos HP/UX o IRIX) de esta, hace que en ocasiones se enven bits RST tambin desde los puertos abiertos, lo que puede proporcionar demasiados falsos positivos. Otra tcnica que no esta englobada en la anterior clasificacin es los escaneos UDP, que al contrario de todos los comentados hasta el momento utiliza este protocolo, y no TCP, para determinar el estado de los puertos de una mquina. Al enviar un datagrama UDP a un puerto abierto este no ofrece respuesta alguna, pero si est cerrado devuelve un mensaje de error ICMP: ICMP_PORT_UNREACHABLE. Evidentemente, estos ataques son muy sencillos de detectar y evitar tanto en un sistema de deteccin de intrusos como en los ncleos de algunos Unix, y por si esto fuera poco debemos recordar que UDP no es un protocolo orientado a conexin (como lo es TCP), por lo que la prdida de datagramas puede dar lugar a un elevado nmero de falsos positivos.

33

Mtodos de ataque y soluciones 3.5.1.2 Spoofing. Por spoofing se conoce a la creacin de tramas TCP/IP utilizando una direccin IP falsa, desde su equipo, un pirata simula la identidad de otra mquina de la red para conseguir acceso a recursos de un tercer sistema que ha establecido algn tipo de confianza basada en el nombre o la direccin IP del host suplantado. Y como los anillos de confianza basados en estas caractersticas tan fcilmente falsificables son an demasiado abundantes, el spoofing sigue siendo en la actualidad un ataque no trivial, pero factible contra cualquier tipo de organizacin. En el spoofing entran en juego tres mquinas: un atacante, un atacado, y un sistema suplantado que tiene cierta relacin con el atacado, para que el pirata pueda conseguir su objetivo necesita por un lado establecer una comunicacin falseada con su objetivo, y por otro evitar que el equipo suplantado interfiera en el ataque. Probablemente esto ltimo no le sea muy difcil de conseguir, a pesar de que existen mltiples formas de dejar fuera de juego al sistema suplantado - al menos a los ojos del atacado - que no son triviales (modificar rutas de red, ubicar un filtrado de paquetes entre ambos sistemas...), lo ms fcil en la mayora de ocasiones es simplemente lanzar una negacin de servicio contra el sistema en cuestin. Aunque en el punto siguiente hablaremos con ms detalle de estos ataques, no suele ser difcil tumbar, o al menos bloquear parcialmente, un sistema medio; si a pesar de todo el atacante no lo consigue, simplemente puede esperar a que desconecten de la red a la mquina a la que desea suplantar (por ejemplo, por cuestiones de puro mantenimiento). El otro punto importante del ataque, la comunicacin falseada entre dos equipos, no es tan inmediato como el anterior y es donde reside la principal dificultad del spoofing. En un escenario tpico del ataque, un pirata enva una trama SYN a su objetivo indicando como direccin origen la de esa tercera mquina que est fuera de servicio y que mantiene algn tipo de relacin de confianza con la atacada. El host objetivo responde con un SYN+ACK a la tercera mquina, que simplemente lo ignorar por estar fuera de servicio (si no lo hiciera, la conexin se reseteara y el ataque no sera posible), y el atacante enviar ahora una trama ACK a su objetivo, tambin con la direccin origen de la tercera mquina. Para que la conexin llegue a establecerse, esta ltima trama deber enviarse con el nmero de secuencia adecuado, el pirata ha de predecir correctamente este nmero, si no lo hace, la trama ser descartada, y si lo consigue la conexin se establecer y podr comenzar a enviar datos a su objetivo, generalmente para tratar de insertar una puerta trasera que permita una conexin normal entre las dos mquinas. Podemos comprobar que el spoofing no es inmediato, de entrada, el atacante ha de hacerse una idea de cmo son generados e incrementados los nmeros de secuencia TCP, y una vez que lo sepa ha de conseguir engaar a su objetivo utilizando estos nmeros para establecer la comunicacin, cuanto ms robusta sea esta generacin por parte del objetivo, ms difcil lo tendr el pirata para realizar el ataque con xito. Adems el spoofing es un ataque ciego, el atacante no ve en ningn momento las respuestas que emite su objetivo, ya que estas van dirigidas a la mquina que previamente ha sido deshabilitada, por lo que debe presuponer qu est sucediendo en cada momento y responder de forma adecuada en base a esas suposiciones. Para evitar ataques de spoofing exitosos contra nuestros sistemas podemos tomar diferentes medidas preventivas, en primer lugar, parece evidente que una gran ayuda es reforzar la secuencia de prediccin de nmeros de secuencia TCP. Otra medida sencilla es eliminar las relaciones de confianza basadas en la direccin IP o el nombre de las mquinas, sustituyndolas por relaciones basadas en claves criptogrficas, el cifrado y el

34

Captulo 3 filtrado de las conexiones que pueden aceptar nuestras mquinas tambin son unas medidas de seguridad importantes de cara a evitar el spoofing. Hay otros ataques de falseamiento aparte del comentado entre los que cabe destacar: DNS Spoofing: Este ataque hace referencia al falseamiento de una direccin IP ante una consulta de resolucin de nombre (esto es, resolver con una direccin falsa un cierto nombre DNS), o viceversa (resolver con un nombre falso una cierta direccin IP). Esto se puede conseguir de diferentes formas, desde modificando las entradas del servidor encargado de resolver una cierta peticin para falsear las relaciones direccin-nombre, hasta comprometiendo un servidor que infecte la cach de otro (lo que se conoce como DNS Poisoning); incluso sin acceso a un servidor DNS real, un atacante puede enviar datos falseados como respuesta a una peticin de su vctima sin ms que averiguar los nmeros de secuencia correctos. ARP Spoofing: El ataque denominado ARP Spoofing hace referencia a la construccin de tramas de solicitud y respuesta ARP falseadas, de forma que en una red local se puede forzar a una determinada mquina a que enve los paquetes a un host atacante en lugar de hacerlo a su destino legtimo. La idea es sencilla, y los efectos del ataque pueden ser muy negativos, desde negaciones de servicio hasta interceptacin de datos. Web Spoofing: Este ataque permite a un pirata visualizar y modificar cualquier pgina Web que su vctima solicite a travs de un navegador, incluyendo las conexiones seguras va SSL. Para ello, mediante cdigo malicioso un atacante crea una ventana del navegador correspondiente, de apariencia inofensiva, en la mquina de su vctima, a partir de ah, enruta todas las pginas dirigidas al equipo atacado, incluyendo las cargadas en nuevas ventanas del navegador, a travs de su propia mquina, donde son modificadas para que cualquier evento generado por el cliente sea registrado (esto implica registrar cualquier dato introducido en un formulario, cualquier clic en un enlace, etc.).

3.5.1.3 Negaciones de servicio. El propsito general del ataque es denegar a las vctimas el acceso a un recurso particular, esta caracterizado por un intento, por parte de los agresores, de evitar que los legtimos usuarios puedan utilizar un determinado servicio. Por ejemplo: Intento de "inundar" una red, impidiendo el trafico legtimo de esa red. Intento de romper la conexin entre dos mquinas, impidiendo el acceso a un servicio determinado. Intento de impedir el acceso de un usuario individual a un servicio. Intento de romper los servicios a un sistema especifico.

Las negaciones de servicio (Denial of Service, DoS) son ataques dirigidos contra un recurso informtico con el objetivo de degradar total o parcialmente los servicios prestados por ese recurso a sus usuarios legtimos, constituyen en muchos casos uno de los ataques ms sencillos y contundentes contra todo tipo de servicios, y en entornos donde la disponibilidad es valorada por encima de otros parmetros de la seguridad global puede convertirse en un serio problema, ya que un pirata puede interrumpir constantemente un servicio sin necesidad de grandes conocimientos o recursos, utilizando simplemente sencillos programas y un mdem y un PC caseros.

35

Mtodos de ataque y soluciones Lo ataques "Denegacin de Servicio" vienen dados en una variedad de formas y se dirigen hacia una gran variedad de servicios. Hay tres tipos bsicos de ataque: Consumo de recursos, limitados o no renovables. Destruccin o alteracin de informacin sobre configuracin. Destruccin fsica o alteracin de componentes de una red.

Todos los sistemas Unix ofrecen mecanismos para evitar que un usuario normal pueda tirar abajo una mquina. El problema real no es que usuarios legtimos de un entorno causen, intencionada o inintencionadamente, negaciones de servicio, el mayor problema es que esas negaciones sean causadas de forma remota por piratas ajenos por completo a nuestra organizacin, capaces de tumbar un servidor de millones de pesetas con sencillos programas, sin dejar ningn rastro y lo peor, sin ser muchas veces conscientes del dao que estn haciendo. Estos ataques remotos de negacin de servicio son considerados negativos incluso por muchos de los propios piratas, ya que realmente no suelen demostrar nada positivo de quien los lanza. En la mayor parte de los casos la negacin de servicio tiene xito porque el objetivo utiliza versiones no actualizadas de demonios o del propio ncleo del sistema operativo, si se detiene o degrada por completo la mquina. Para evitar esto, la norma a seguir es evidente, mantener siempre actualizados nuestros sistemas, tanto en lo referente al nivel de parcheado o versiones del ncleo, como en lo referente a programas crticos encargados de ofrecer un determinado servicio. Las negaciones de servicio ms habituales suelen consistir en la inhabilitacin total de un determinado servicio o de un sistema completo, bien porque ha sido realmente bloqueado por el atacante o bien porque est tan degradado que es incapaz de ofrecer un servicio a sus usuarios. En la mayor parte de sistemas, un usuario con acceso shell no tendr muchas dificultades en causar una negacin de servicio que tirara abajo la mquina o la ralentizara enormemente, esto no tiene porqu ser un ataque intencionado, sino que puede deberse a un simple error de programacin. El consumo de recursos estn limitados, ordenadores y redes necesitan ciertas cosas para funcionar: ancho de banda para la red, memoria y espacio de disco, tiempo de CPU, estructuras de datos, acceso a otros equipos y redes, y unos ciertos recursos de entorno como son: potencia o aire fro. 1. Conectividad entre redes: Los ataques denegacin de servicio se llevan a cabo frecuentemente contra la capacidad de conectitividad entre redes. La intencin es evitar que los equipos o las subredes se puedan comunicar con el resto de la red. Un ejemplo de este tipo de ataque es el SYN flood1. En este tipo de ataque, se comienza por el proceso de establecimiento de conexin de la mquina vctima, la culminacin del ataque llega cuando la mquina vctima ha reservado uno de los limitados nmeros de estructuras de datos requeridos para completar la conexin. El resultado es que la legtima conexin se deniega mientras que la mquina vctima espera a que se complete la conexin, cosa que no llega a suceder. Hay que notar que este tipo de ataque no se pretende consumir ancho de banda sino los recursos de memoria y procesador que se consumen con las estructuras de datos usadas para establecer una comunicacin. Esto implica que un atacante puede llevar a cabo su ataque desde un mdem contra una red mucho ms rpida. 2. Utilizacin de tus propios recursos contra ti: Un intruso puede usar tus propios recursos contra ti de inesperadas maneras. 36

Captulo 3 3. Consumo de ancho de banda: Un intruso tambin puede ser capaz de consumir todo el ancho de banda disponible en la red generando una gran cantidad de paquetes dirigidos a tu red. Tpicamente esos son paquetes ICMP ECHO, pero en principio pueden ser de cualquier otro tipo. El intruso no tiene porque actuar desde una de las mquinas de la subred, puede ser capaz de coordinar varias mquinas de diferentes redes para obtener el mismo resultado. 4. Consumo de otros recursos: Junto con el consumo de ancho de banda, los intrusos pueden ser capaces de consumir otros recursos que el sistema necesita para operar correctamente. Por ejemplo, hay sistemas en los que existen un nmero limitado de estructuras de datos para proporcionar informacin sobre procesos (identificadores de procesos, tablas de entradas de procesos, etc.). Un intruso puede ser capaz de consumir esas estructuras de datos escribiendo un script que no haga nada, pero que repetidamente cree copias de s mismo. Muchos sistemas operativos modernos, aunque no todos, tienen cuotas para proteger contra estos ataques. De todas formas, si la tabla de procesos no est llena, la CPU puede estar ocupada con un gran nmero de procesos y el correspondiente tiempo para conmutar entre procesos. Un intruso tambin puede intentar consumir espacio de disco de otras maneras, por ejemplo: Generar excesivo nmero de mensajes de correo. Generar intencionadamente errores que se almacenen en ficheros log. Colocar ficheros en reas de ftps annimos.

En general, cualquier cosa que permita datos en disco, puede ser utilizada para llevar a cabo un ataque denegacin de servicio. Por otro lado en algunos lugares, aparece el mensaje "lockout" despus de un cierto nmero de intentos fallidos de acceso a una determinada cuenta, normalmente 3 o 5. Un intruso puede usar este hecho para evitar el acceso a la cuenta a su legtimo usuario. En algunos casos las cuentas con privilegios suelen ser blancos de estos ataques. Lo mejor es estar seguro de tener un mtodo alternativo para acceder al sistema en caso de emergencia. Un intruso puede hacer que un sistema se venga abajo o que se vuelva inestable enviando datos inesperados a travs de la red. Si tu sistema se viene abajo a menudo sin causa aparente, puede que se trate de este tipo de ataque. Hay otras cosas que pueden ser vulnerables para un ataque denegacin de servicio y que es conveniente monitorizar: impresoras cintas de backup conexiones a redes cualquier recurso importante para las operaciones de tu empresa

Los ataques por denegacin de servicio pueden suponer una importante prdida de tiempo y dinero para la mayora de las organizaciones. Recomendamos considerar las siguientes opciones dependiendo de las necesidades personales: Implementar routers que filtren. Esto disminuir la exposicin a ciertos ataques. Adicionalmente, esto puede prevenir que usuarios de tu red lancen ciertos ataques.

37

Mtodos de ataque y soluciones Si es posible, instalar parches para protegerse contra ataques TCP SYN flooding. Esto puede reducir substancialmente la exposicin a estos ataques, aunque no elimina el riesgo por completo. Desactivar cualquier servicio de red que no sea necesario. Esto puede limitar la capacidad del intruso de utilizar estos servicios para realizar su ataque. Activar mecanismos de cuota en el sistema operativo si es posible. Por ejemplo si el sistema operativo soporta cuotas de disco, activarlas para todas las cuentas, especialmente para cuentas que operan con servicios de red. Adems si el sistema operativo soporta particionado de discos, es conveniente considerar particionar sistemas de ficheros para separar funciones crticas de otras actividades. Observar el rendimiento y estabilidad de las lneas bsicas de la actividad cotidiana. Observar niveles inusuales de actividad de disco, uso de CPU o trfico de red. Examinar rutinariamente la seguridad fsica. Considerar servidores, routers, terminales, puntos de acceso a la red y otros componentes del sistema. Utilizar Tripwire o una herramienta similar para detectar cambios en la informacin sobre configuracin o de otros ficheros. Colocar y mantener "hot spares", mquinas que pueden ser puestas en servicio rpidamente en el momento que una mquina se ha desactivado. Activar en la red configuraciones redundantes y tolerantes a fallos. Establecer y mantener calendarios y polticas de backup, sobre todo para informacin importante sobre configuracin. Establecer y mantener polticas de claves apropiadas, especialmente para acceso a cuentas con privilegios como es la de root. Muchas organizaciones pueden sufrir perdidas financieras como resultado de estos ataques y pueden decidir presentar cargos contra el intruso.

De un tiempo a esta parte se ha popularizado mucho el trmino negacin de servicio distribuida (Distributed Denial of Service, DDoS), en este ataque un pirata compromete en primer lugar un determinado nmero de mquinas y, en un determinado momento, hace que todas ellas ataquen masiva y simultneamente al objetivo u objetivos reales envindoles diferentes tipos de paquetes, por muy grandes que sean los recursos de la vctima, el gran nmero de tramas que reciben har que tarde o temprano dichos recursos sean incapaces de ofrecer un servicio, con lo que el ataque habr sido exitoso. Si en lugar de cientos o miles de equipos atacando a la vez lo hiciera uno slo las posibilidades de xito seran casi inexistentes, pero es justamente el elevado nmero de pequeos atacantes lo que hace muy difcil evitar este tipo de negaciones de servicio. Segn el CERT los ataques de negacin de servicio distribuidos ms habituales consisten en el envo de un gran nmero de paquetes a un determinado objetivo por parte de mltiples hots, lo que se conoce como packet ooding. Defenderse de este tipo de ataques es difcil, en primer lugar, uno piensa en bloquear de alguna forma (probablemente en un cortafuegos o en un router) todo el trfico proveniente de los atacantes, pero qu sucede cuando tenemos miles de ordenadores atacando desde un gran nmero de redes diferentes? Los bloqueamos uno a uno? Esto supondra un gran esfuerzo que difcilmente ayudar, ya que lo ms probable es que en el tiempo que nos cueste bloquear el trfico de una

38

Captulo 3 determinada mquina, dos o tres nuevas nos comiencen a atacar. Entonces, bloqueamos todo el trfico dirigido hacia el objetivo? Si hacemos esto, estamos justamente ayudando al atacante, ya que somos nosotros mismos los que causamos una negacin en el servicio a los usuarios legtimos de nuestro sistema. La defensa ante una negacin de servicio distribuida no es inmediata, en cualquier caso, podemos tomar ciertas medidas preventivas que nos ayudarn a limitar el alcance de uno de estos ataques. Un correcto filtrado del trfico dirigido a nuestras mquinas es vital para garantizar nuestra seguridad, no hay que responder a pings externos a nuestra red, es necesario activar el antispoofing en nuestros cortafuegos y en los elementos de electrnica de red que lo permitan, etc. Establecer correctamente lmites a la utilizacin de nuestros recursos es tambin una importante medida preventiva, es posible limitar el ancho de banda dedicado a una determinada aplicacin o a un protocolo, de forma que las utilizaciones por encima del margen son negadas. Tambin podemos limitar los recursos del sistema (CPU, memoria, disco) que puede consumir en global una determinada aplicacin servidora (por ejemplo, un demonio sirviendo pginas Web), adems de restringir sus recursos por cliente simultneo. A pesar de las dificultades con las que nos podemos encontrar a la hora de prevenir ataques de negacin de servicio, una serie de medidas sencillas pueden ayudarnos de forma relativa en esa tarea, las negaciones de servicio son por desgracia cada da ms frecuentes, y ninguna organizacin est a salvo de las mismas. Especialmente en los ataques distribuidos, la seguridad de cualquier usuario conectado a Internet es un eslabn importante en la seguridad global de la red, ya que esos usuarios se convierten muchas veces sin saberlo en satlites que colaboran en un ataque masivo contra organizaciones de cualquier tipo. Cuanto ms difcil se lo pongamos cada uno de nosotros a los piratas, mucho mejor para todos. 3.5.1.4 Interceptacin La interceptacin lgica de datos ms conocida y extendida es el sniffing, consiste en capturar tramas que circulan por la red mediante un programa ejecutndose en una mquina conectada a ella o bien mediante un dispositivo que se engancha directamente el cableado. En las redes de difusin, cuando una mquina enva una trama a otra indica en un campo reservado la direccin del host destino, todas las mquinas del dominio de colisin ven esa trama, pero slo su receptora legtima la captura y elimina de la red. Este es el funcionamiento normal de TCP/IP, sin embargo, es necesario insistir en un aspecto, todas las mquinas ven la trama, y si no leen todos sus campos es porque no quieren. Existe un modo de funcionamiento de las interfaces de red denominado modo promiscuo, en el cual la tarjeta lee todas las tramas que circulan por la red, tanto dirigidas a ella como a otras mquinas, el leerlas no implica el eliminarlas de la red, por lo que el host destino legtimo la recibir y eliminar sin notar nada extrao. Para hacer funcionar un interfaz de red en modo promiscuo es necesario tener un control total del sistema, es decir, ser root en la mquina, esto ayuda un poco en la defensa, pero no soluciona el problema, no podemos permitir que cualquiera que sea superusuario de un sistema pueda capturar todo el trfico que pasa por el mismo (incluyendo claves, correo electrnico, y cientos de datos privados). Por si esto fuera poco, en los sistemas donde todos los usuarios tienen un control total de la mquina (por ejemplo, en toda la familia Windows 9x) ni siquiera hace falta ese privilegio, cualquiera que se siente en un PC puede ejecutar un sniffer y capturar todo el trfico de la red. Hay programas para que actan como sniffer entre ellos cabe destacar, dsniff y su familia, capaces hasta de capturar los correos electrnicos directamente en formato smtp o 39

Mtodos de ataque y soluciones cargar de forma automtica en un navegador las mismas pginas que visita la vctima del ataque, otro programa es el snoop de Solaris, que vuelca paquetes en un formato por defecto casi ilegible, pasando por los clsicos tcpdump o sniffit. Para evitar que programas de este tipo capturen nuestra informacin existen diferentes aproximaciones ms o menos efectivas, como sustituir los HUBs de nuestra red por switches que aslan dominios de colisin (esto dificulta el ataque pero no lo imposibilita) o implantar redes privadas virtuales. Pero la ms barata y sencilla es el uso de protocolos cifrados siempre que nos sea posible (que lo suele ser casi siempre), sustituir telnet y rlogin por ssh y ftp por scp o sftp es muy sencillo, y nos proporciona un incremento de seguridad abismal en nuestro entorno. Implantar SSL o tneles seguros quizs es algo ms costoso, pero tambin en la mayora de ocasiones es algo que vale la pena hacer, en todo momento hemos de tener presente que el sniffing es un peligro real, que no necesita de grandes medios y, lo que es peor, indetectable en la mayor parte de casos, a pesar de que existen mtodos para tratar de detectar sistemas con un interfaz en modo promiscuo, no suelen ser todo lo efectivos que uno podra esperar, ya que detectar una mquina en este estado no es ni de lejos inmediato. El sniffing es el ataque de interceptacin ms conocido y utilizado, pero no es el nico que se puede poner en prctica contra un sistema determinado, Unix o no. En algunas versiones de Linux existe un programa denominado ttysnoop capaz de registrar en tiempo real todo lo que un usuario teclea en una terminal, tanto fsica como virtual. Aunque el resultado es en muchos aspectos similar al sniffing, tcnicamente poco tiene que ver con este, en ningn momento se capturan datos que circulan por la red, la tarjeta no trabaja en modo promiscuo (es mas, ni siquiera es necesario un interfaz de red), etc, simplemente, la informacin que un usuario introduce en una terminal es clonada en otra, permitiendo tanto la entrada como la salida de datos a travs de ambas. Aunque Linux sea el sistema Unix nativo de ttysnoop existen versiones tambin para otros entornos. Otro ataque de interceptacin, menos utilizado que los anteriores pero igual de peligroso, es el keylogging, el registro de las teclas pulsadas por un usuario en una sesin, otro ejemplo de un programa que capture esta informacin puede ser una mula de troya clsica. 3.5.2 Ataques orientados a la obtencin de informacin sobre el objetivo. Para obtener informacin sobre el objetivo a atacar hay 2 metodologas: la ingeniera social y las tcnicas informticas de obtencin de informacin. Para la ingeniera social describimos dos casos reales: 1. En 1994, un hacker francs, llamado Anthony Zboralski, llama a la oficina del FBI en Washington, hacindose pasar por un representante del FBI, trabajando en la oficina de EE.UU. en Pars. Persuade a la persona al otro lado del telfono de que le explique cmo conectarse al sistema de conferencias telefnicas del FBI. Despus se gasta 250000 dlares en 7 meses. 2. En 1999, todos los clientes de AOL, en EE.UU, recibieron varias veces mensajes como ste: SYSTEM ADMINISTRATOR: A database error has deleted the information for over 25000 accounts, and tours is one. In order for us to access the backup data, we do need your password. Without your password, we will NOT be able to

40

Captulo 3 allow you to sign onto America Online within the next 24 hours after your opening of this letter. Es una tctica comn llamar por telfono a empleados de una compaa, hacindose pasar por un administrador de red, oficial de seguridad o personal de mantenimiento. Si el atacante sabe suficiente de la red de la compaa como para sonar convincentemente, puede obtener contraseas, nombres de cuentas, etc. Muchas veces, todo consiste en preguntar. La gente quiere colaborar y suele fiarse de otra gente que sabe de qu habla, ms si le da datos de su lugar de trabajo. En realidad, el trmino ingeniera social es equivalente a engaar, mentir, consiguiendo que otra persona haga cosas que el atacante quiere que se hagan. Es difcil de parar, al menos tcnicamente, pues no usa mtodos informticos. Va al eslabn ms dbil de la cadena de seguridad: usa del factor humano. A la hora de tenerlo en cuenta en la poltica de seguridad, habr que hacerlo en la parte de formacin general para todo el mundo. Aunque hay alguna cosa que se puede hacer para frenar este tipo de ataques, nunca se conseguir pararlos del todo con herramientas informticas, pues se aprovechan de la buena voluntad de la gente. En cuanto a la otra opcin, las tcnicas informticas de obtencin de informacin, se habla, generalmente, de cmo usar comandos y herramientas, no diseadas especficamente, para un ataque, como medios de obtencin de informacin. 3.5.3 Ataques va Web. Durante los ltimos aos los servidores Web [11] se han convertido en una excelente fuente de diversin para piratas, cualquier empresa que se precie, desde las ms pequeas a las grandes multinacionales, tiene una pgina Web en las que al menos trata de vender su imagen corporativa. Si hace unos aos un pirata que quisiera atacar a una empresa (y no a todas, ya que muy pocas tenan representacin en la red) tena que agencirselas para obtener primero informacin de la misma y despus buscar errores de configuracin ms o menos comunes de sus sistemas, hoy en da le basta con teclear el nombre de su objetivo en un navegador y aadir la coletilla .com detrs del mismo para contactar con al menos una de sus mquinas, su servidor Web. Los ataques a las pginas Web de una organizacin son casi siempre los ms vistosos que la misma puede sufrir, en cuestin de minutos piratas de todo el mundo se enteran de cualquier problema en la pgina Web principal de una empresa ms o menos grande pueda estar sufriendo, y si se trata de una modificacin de la misma incluso existen recopilatorios de pginas hackeadas. Por supuesto, la noticia de la modificacin salta inmediatamente a los medios, que gracias a ella pueden rellenar alguna cabecera sensacionalista sobre los piratas de la red, y as se consigue que la imagen de la empresa atacada caiga notablemente y la del grupo de piratas suba entre la comunidad underground nacional o internacional. La mayor parte de estos ataques tiene xito gracias a una configuracin incorrecta del servidor o a errores de diseo del mismo, si se trata de grandes empresas, los servidores Web suelen ser bastante complejos (alta disponibilidad, balanceo de carga, sistemas propietarios de actualizacin de contenidos) y difciles de administrar correctamente, mientras que si la empresa es pequea es muy posible que haya elegido un servidor Web simple en su instalacin y administracin pero en el cual es casi imposible garantizar una mnima seguridad. Sea por el motivo que sea, la cuestin es que cada da es ms sencillo para un pirata ejecutar rdenes de forma remota en una mquina, o al menos modificar

41

Mtodos de ataque y soluciones contenidos de forma no autorizada, gracias a los servidores Web que un sistema pueda albergar. Cualquier analizador de vulnerabilidades que podamos ejecutar contra nuestros sistemas (nessus, ISS Security Scanner, NAI CyberCop Scanner) es capaz de revelar informacin que nos va a resultar til a la hora de reforzar la seguridad de nuestros servidores Web, incluso existen analizadores que estn diseados para auditar nicamente este servicio, como whisker, el cual nos proporciona excesiva informacin sobre la configuracin del servidor(versin, mdulos, soporte SSL), y que la herramienta ha obtenido algunos archivos y directorios que pueden resultar interesantes para un atacante, en el caso de los CGI no tiene ms que acercarse a alguna base de datos de vulnerabilidades e introducir en el buscador correspondiente el nombre del archivo para obtener informacin sobre los posibles problemas de seguridad que pueda presentar. El caso de los directorios es algo diferente, pero tpicamente se suele tratar de nombres habituales en los servidores que contienen informacin que tambin puede resultarle til a un potencial atacante. Cmo evitar estos problemas de seguridad de los que estamos hablando? Una medida elemental es eliminar del servidor cualquier directorio o CGI de ejemplo que se instale por defecto, aunque generalmente los directorios (documentacin, ejemplos) no son especialmente crticos, el caso de los CGIs es bastante alarmante, muchos servidores incorporan programas que no son ni siquiera necesarios para el correcto funcionamiento del software, y que en ciertos casos abren enormes agujeros de seguridad, como el acceso al cdigo fuente de algunos archivos, la lectura de ficheros fuera del DocumentRoot, o incluso la ejecucin remota de comandos bajo la identidad del usuario con que se ejecuta el demonio servidor. Otra medida de seguridad bsica es deshabilitar el Directory Indexing que por defecto muchos servidores incorporan, la capacidad de obtener el listado de un directorio cuando no existe un fichero index.html o similar en el mismo, se trata de una medida extremadamente til y sobre todo sencilla de implantar, ya que en muchos casos un simple chmod -r sobre el directorio en cuestin es suficiente para evitar este problema. A primera vista esta medida de proteccin nos puede resultar curiosa, a fin de cuentas, a priori todo lo que haya bajo el Document Root del servidor ha de ser pblico, ya que para eso se ubica ah. Evidentemente la teora es una cosa y la prctica otra muy diferente, entre los ficheros de cualquier servidor no es extrao encontrar desde archivos de log hasta paquetes tar con el contenido de subdirectorios completos. Por supuesto, la mejor defensa contra estos ataques es evitar de alguna forma la presencia de estos archivos bajo el Document Root, pero en cualquier caso esto no es siempre posible, y si un atacante sabe de su existencia puede descargarlos, obteniendo en muchos casos informacin realmente til para atacar al servidor (como el cdigo de ficheros jsp, php, asp o simplemente rutas absolutas en la mquina), y una excelente forma de saber que uno de estos ficheros est ah es justamente el Directory Indexing, por si esto no queda del todo claro, no tenemos ms que ir a un buscador cualquiera y buscar la cadena Index of /admin, por poner un ejemplo sencillo, para hacernos una idea de la peligrosidad de este error de configuracin. Adems, en cualquier servidor Web es muy importante el usuario bajo cuya identidad se ejecuta el demonio httpd, ese usuario no debe ser nunca el root del sistema, pero tampoco un usuario genrico como nobody, se ha de tratar siempre de un usuario dedicado y sin acceso real al sistema. Por supuesto, las pginas html (los ficheros planos, para entendernos) nunca deben ser de su propiedad, y mucho menos ese usuario ha de tener permiso de escritura sobre los mismos, con un acceso de lectura (y ejecucin, en caso de

42

Captulo 3 CGIs) es ms que suficiente en la mayora de los casos. Hemos de tener en cuenta que si el usuario que ejecuta el servidor puede escribir en las pginas Web, y un pirata consigue ejecutar rdenes bajo la identidad de dicho usuario, podra modificar las pginas Web sin ningn problema (que no olvidemos, es lo que perseguir la mayora de atacantes de nuestro servidor Web). Igual de importante que evitar estos problemas es detectar cuando alguien trata de aprovecharlos intentando romper la seguridad de nuestros servidores, para conseguirlo no tenemos ms que aplicar las tcnicas de deteccin de intrusos que veremos ms adelante. Una caracterstica importante de los patrones de deteccin de ataques va Web es que no suelen generar muchos falsos positivos, por lo que la configuracin de la base de datos inicial es rpida y sencilla, al menos en comparacin con la deteccin de escaneos de puertos o la de tramas con alguna caracterstica especial en su cabecera. 3.5.4 Ataques a los sistemas. El nmero de ataques de hackers a sistemas conectados a Internet est teniendo un crecimiento exponencial en los ltimos tiempos. Asimismo, el nmero de servicios que la Administracin Pblica proporciona a los ciudadanos a travs de Internet es cada vez mayor, siendo en consecuencia tambin mayor el riesgo de ataques a los Sistemas de Informacin de las entidades pblicas. 3.5.4.1 Troyanos. Un troyano es un programa malicioso insertado en un PC sin consentimiento de su dueo que permite el control de ese PC por parte de una persona no autorizada, pudindose incluso considerar un tipo de virus, ya que el PC atacado se infecta con l. Tiene unas caractersticas propias que le confieren un carcter malicioso: Se aprovecha frecuentemente de bugs y backdoors de los sistemas informticos, como el Back Orifice o el BackDoor. Slo una de las dos partes del programa (un troyano se instala en ambos PCs) tiene capacidad de controlar (cliente del troyano) mientras que la otra sirve de conexin con el PC controlado (servidor del troyano). El usuario del PC que acta como servidor (el PC controlado) no tiene conciencia o conocimiento de estar comunicado con aquel otro PC. Ni tan siquiera es consciente de haber instalado el troyano en su PC. El servidor del troyano se oculta intentando pasar desapercibido para actuar clandestinamente.

Dado que la infeccin de nuestro PC por parte de un troyano es en realidad una instalacin de una aplicacin, nuestro sistema contar a partir de entonces con elementos nuevos dentro de nuestro disco duro, e incluso de la memoria. La instalacin de un troyano en un PC viene acompaada de la creacin de nuevas libreras DLL, de archivos ejecutables, de nuevas entradas en el registro de Windows y de nuevas lneas de comando en archivos tipo win.ini, system.ini,... Otra forma algo menos complicada de llevar a cabo estas comprobaciones consistira en la utilizacin de un monitor de sistema que localice ms fcilmente los nuevos archivos creados. Tambin se podra usar el comando netstat (estado de la red) del propio Windows. Para ello abriramos una ventana DOS en nuestro PC y teclearamos netstat an, 43

Mtodos de ataque y soluciones mostrndose las conexiones de nuestro PC que se estn llevando a cabo en ese preciso momento y nos fijaramos en si hay alguna que resulte sospechosa. Por ejemplo:

Figura 8: Conexiones del PC.

3.5.4.2 Hackers. Hacker es una de las denominaciones de mayor prestigio en el sentido del conocimiento tecnolgico, sin embargo los hackers ms famosos son quienes cometieron delitos informticos. Por lo tanto podra decirse que existen dos tipos de hackers, los que colaboran en el crecimiento de la tecnologa y los que se aprovechan de sus conocimientos para llevar a cabo operaciones ilegales. Por otro lado, los crackers y script kiddies son en realidad quienes efectan daos en las mquinas. Un hacker investiga, trata de solucionar problemas y es precisamente un cracker, y en menor medida un script kidd, quien se dedica a ocasionarlos. 3.5.4.3 Virus. Los virus informticos y gusanos se aprovechan de las vulnerabilidades de las aplicaciones para infectar el PC y reproducirse, siendo indetectable a la visin del usuario hasta que se lleva a cabo el ataque. Existen distintos tipos de virus, segn sus fines, pero las dos caractersticas que los unen son: reproducirse y/o sobrevivir, y cumplir sus misiones. La mejor solucin para proteger el PC de los virus es tener instalado un buen antivirus y mantenerlo actualizado. 3.5.4.4 Hoax. Bsicamente, un Hoax es una falsedad, que muchas personas creen y difunden, creada con ese fin. La definicin ms extendida la encontramos en el mbito del mundo antivirus, y que considera a los Hoax como mensajes enviados por lo general mediante correo electrnico, aunque pueden aparecer muchas veces en papel fotocopiado en el ambiente empresarial, en los cuales se avisa en tono alarmante de la existencia de nuevos y potentes virus, muy peligrosos y destructivos. Estos supuestos virus en realidad no existen, o son archivos inofensivos sobre los que recae la eleccin de los creadores del Hoax. La finalidad de tal creacin sera la de crear alarma entre los cibernautas y conseguir el reenvo masivo de dichos mensajes alarmistas. Entonces quizs la definicin ms acertada sera aquella que contemple a los Hoax como un mensaje cuyo contenido est basado en mentiras, engaos o falsedades, en ocasiones relativas a falsos virus, creado para su reenvo masivo. Dicho mensaje estara creado bien para causar algn tipo de perjuicio o bien para diversin del/los creadores del mismo. El objetivo de estos avisos alarmantes es 44

Captulo 3 difcil de establecer, ya que no se conocen los motivos que impulsan a alguien a crear un elemento perjudicial de ese tipo. Estas seran las motivaciones: Crear una "alarma social" entre los cibernautas. Se supone que ello resultara divertido para el iniciador del hoax. Recopilar gran cantidad de direcciones de correo. Difundir informacin falsa en perjuicio de terceras personas u organismos. Incitar al receptor del mensaje a causar daos en su propio ordenador. Una mera competicin en busca del mayor nmero de mensajes. La notoriedad que otorgara en el crculo del creador del hoax una gran difusin del mismo.

3.5.4.5 Spam. Spam es el recibo de correo electrnico no solicitado. El correo no deseado es el mayor problema que enfrenta hoy Internet. El spam es responsable de colapsar redes, provocar prdidas millonarias y enfurecer al usuario hogareo saturando sus buzones. Quienes hacen spam justifican sus actos diciendo que realizan marketing electrnico, sin embargo no tienen en cuenta la situacin lmite a la que se ha llegado. 3.5.4.6 Dialers. Sin lugar a dudas, una de las ms recientes e impactantes amenazas de Internet. Lo que hace un dialer es conectar nuestro PC a Internet por medio de un nmero ms costoso de lo normal. El problema reside en que los responsables no siempre advierten de la instalacin de dicha modalidad en nuestro equipo, usualmente mientras visitamos una pgina Web. De esta manera, el usuario slo advierte la trampa al recibir su factura telefnica. Los dialers afectan principalmente a los usuarios de Espaa, en donde se han tomado medidas al respecto (denegar el uso de estos nmeros telefnicos a usuarios que lo soliciten, y reducir los costos de llamada). Los dialers no se eliminan porque una gran parte de los sitios Web viven de ello, y no est mal siempre y cuando el usuario sea conciente de la modalidad que se le impone para acceder al contenido de una pgina. 3.6 Sistemas de deteccin de intrusos.

Existen numerosas medidas de seguridad para proteger los recursos informticos de una empresa, pero aunque se sigan todas las recomendaciones de los expertos, no estaremos libres de posibles ataques con xito. Esto se debe a que conseguir un sistema virtualmente invulnerable es sumamente costoso, adems de que las medidas de control reduciran la productividad de la empresa [12]. Llamaremos intrusin a un conjunto de acciones que intentan comprometer la integridad, confidencialidad o disponibilidad de un recurso, podemos darnos cuenta de que una intrusin no tiene por qu consistir en un acceso no autorizado a una mquina, tambin puede ser una negacin de servicio. A los sistemas utilizados para detectar las intrusiones o los intentos de intrusin se les denomina sistemas de deteccin de intrusiones Intrusin Detection Systems, IDS) o, ms habitualmente sistemas de deteccin de intrusos, cualquier mecanismo de seguridad con este propsito puede ser considerado un IDS, pero generalmente slo se aplica esta denominacin a los sistemas automticos (software o hardware).

45

Mtodos de ataque y soluciones Una de las primeras cosas que deberamos plantearnos a la hora de hablar de IDSs es si realmente necesitamos uno de ellos en nuestro entorno de trabajo, a fin de cuentas, debemos tener ya un sistema de proteccin perimetral basado en cortafuegos, y por si nuestro firewall fallara, cada sistema habra de estar configurado de una manera correcta, de forma que incluso sin cortafuegos cualquier mquina pudiera seguirse considerando relativamente segura. La respuesta es, sin duda, s, debemos esperar que en cualquier momento alguien consiga romper la seguridad de nuestro entorno informtico, y por tanto hemos de ser capaces de detectar ese problema tan pronto como sea posible (incluso antes de que se produzca, cuando el potencial atacante se limite a probar suerte contra nuestras mquinas). Ningn sistema informtico puede considerarse completamente seguro, pero incluso aunque nadie consiga violar nuestras polticas de seguridad, los sistemas de deteccin de intrusos se encargaran de mostrarnos todos los intentos de multitud de piratas para penetrar en nuestro entorno, no dejndonos caer en ninguna falsa sensacin de seguridad, si somos conscientes de que a diario hay gente que trata de romper nuestros sistemas, no caeremos en la tentacin de pensar que nuestras mquinas estn seguras porque nadie sabe de su existencia o porque no son interesantes para un pirata. Los sistemas de deteccin de intrusos no son precisamente nuevos, el primer trabajo sobre esta materia data de 1980, no obstante, este es uno de los campos ms en auge desde hace ya unos aos dentro de la seguridad informtica. Y no es extrao, la capacidad para detectar y responder ante los intentos de ataque contra nuestros sistemas es realmente muy interesante. Durante estos veinte aos, cientos de investigadores de todo el mundo han desarrollado, con mayor o menor xito, sistemas de deteccin de todo tipo, desde simples procesadores de logs hasta complejos sistemas distribuidos, especialmente vigentes con el auge de las redes de computadores en los ltimos aos. Dentro de las soluciones tecnolgicas que en la actualidad estn disponibles para reforzar la seguridad de una red encontramos los firewalls los cuales son muy populares. Un firewall es un sistema encargado del cumplimiento de las polticas de control de acceso a la red, lo cual se hace a travs de reglas. Un firewall acta como guardia perimetral de una red protege una red de ataques que provengan del exterior de sta. Pero el escenario se puede complicar de la siguiente forma: Un atacante puede lograr pasar el firewall, dejando la red a su merced. Un firewall protege de los accesos no autorizadas hacia la red interna, pero no protege a las mquinas ubicadas en la red perimetral como servidores web, servidores de correo, servidores FTP, en otras palabras, a las bases funcionales de Internet. Un firewall no protege contra ataques desde adentro.

En estos casos lo que nos queda detectar el ataque o la intrusin lo antes posible para que cause el menor dao en el sistema. Antes de continuar vamos a definir qu se entiende normalmente por intrusin. Normalmente un intruso intenta: Acceder a una determinada informacin. Manipular cierta informacin. Hacer que el sistema se no funcione de forma segura o inutilizarlo.

Una intrusin es cualquier conjunto de acciones que puede comprometer la integridad, confidencialidad o disponibilidad de una informacin o un recurso informtico. Los intrusos pueden utilizar debilidades y brechas en la arquitectura de los sistemas y el

46

Captulo 3 conocimiento interno del sistema operativo para superar el proceso normal de autenticacin. La deteccin de intrusos se puede detectar a partir de la caracterizacin anmala del comportamiento y del uso que hacen de los recursos del sistema. Este tipo de deteccin pretende cuantificar el comportamiento normal de un usuario. Para una correcta distincin hay que tener en cuenta las tres distintas posibilidades que existen en un ataque, atendiendo a quin es el que lo lleva a cabo: Penetracin externa. Que se define como la intrusin que se lleva a cabo a partir un usuario o un sistema de computadores no autorizado desde otra red. Penetraciones internas. Son aquellas que llevan a cabo por usuarios internos que no estn autorizados al acceso. Abuso de recursos. Se define como el abuso que un usuario lleva a cabo sobre unos datos o recursos de un sistema al que est autorizado su acceso.

La idea central de este tipo de deteccin es el hecho de que la actividad intrusiva es un subconjunto de las actividades anmalas. Esto puede parecer razonable por el hecho de que si alguien consigue entrar de forma ilegal en el sistema, no actuar como un usuario normal. Sin embargo en la mayora de las ocasiones una actividad intrusiva resulta del agregado de otras actividades individuales que por s solas no constituyen un comportamiento intrusivo de ningn tipo. Idealmente el conjunto de actividades anmalas es el mismo del conjunto de actividades intrusivas, de todas formas esto no siempre es as: Intrusivas pero no anmalas. Se les denomina falsos negativos y en este caso la actividad es intrusiva pero como no es anmala y no se consigue detectarla. Se denominan falsos negativos porque el sistema errneamente indica ausencia de intrusin. No intrusivas pero anmalas. Se denominan falsos positivos y en este caso la actividad es no intrusiva, pero como es anmala el sistema decide que es intrusiva. Se denominan falsos positivos, porque el sistema errneamente indica la existencia de intrusin. Ni intrusiva ni anmala. Son negativos verdaderos, la actividad es no intrusiva y se indica como tal. Intrusiva y anmala. Se denominan positivos verdaderos, la actividad es intrusiva y es detectada.

Los primeros no son deseables, porque dan una falsa sensacin de seguridad del sistema y el intruso en este caso puede operar libremente en el sistema. Los falsos positivos se deben de minimizar, en caso contrario lo que puede pasar es que se ignoren los avisos del sistema de seguridad, incluso cuando sean acertados. Los detectores de intrusiones anmalas requieren mucho gasto computacional, porque se siguen normalmente varias mtricas para determinar cunto se aleja el usuario de lo que se considera comportamiento normal. Hoy da existen en el mercado una buena cantidad de productos conocidos como IDS (Sistemas de Deteccin de Intrusos) o en ingls IDS (Intrusin Detection System). Estos sistemas basan su funcionamiento en la recoleccin y anlisis de informacin de diferentes fuentes, que luego utilizan para determinar la posible existencia de un ataque o penetracin de intrusos. En caso de que exista la suficiente certeza de la deteccin de un incidente, el IDS tiene como funcin principal alertar al administrador o personal de 47

Mtodos de ataque y soluciones seguridad, para que tome acciones al respecto. Otras implementaciones ms complejas son capaces de ir ms all de la notificacin de un posible ataque, es decir pueden ejecutar acciones automticas que impidan el desarrollo de ste. 3.6.1 Clasificacin de los IDS. Existen varios tipos de IDS, clasificados segn el tipo de situacin fsica, del tipo de deteccin que posee o de su naturaleza y reaccin cuando detecta un posible ataque. 3.6.1.1 Clasificacin por situacin. Se pueden clasificar como [13]: HIDS (HostIDS): un IDS vigilando un nico ordenador y por tanto su interfaz corre en modo no promiscuo. La ventaja es que la carga de procesado es mucho menor. NIDS (NetworkIDS): un IDS basado en red, detectando ataques a todo el segmento de la red. Su interfaz debe funcionar en modo promiscuo capturando as todo el trfico de la red. DIDS (DistributedIDS): sistema basado en la arquitectura cliente/servidor compuesto por una serie de NIDS (IDS de redes) que actan como sensores centralizando la informacin de posibles ataques en una unidad central que puede almacenar o recuperar los datos de una base de datos centralizada. La ventaja es que en cada NIDS se puede fijar unas reglas de control especializndose para cada segmento de red. Estructura habitual en redes VPN (Redes Privadas Virtuales).

Los NIDS analizan el trfico de la red completa, examinando los paquetes individualmente, comprendiendo todas las diferentes opciones que pueden coexistir dentro de un paquete de red y detectando paquetes armados maliciosamente y diseados para no ser detectados por los cortafuegos. Pueden buscar cual es el programa en particular del servidor de Web al que se est accediendo y con que opciones y producir alertas cuando un atacante intenta explotar algn fallo en este programa. Los NIDS tienen dos componentes: Un sensor: situado en un segmento de la red, la monitoriza en busca de trfico sospechoso. Una Consola: recibe las alarmas del sensor o sensores y dependiendo de la configuracin reacciona a las alarmas recibidas. Las principales ventajas del NIDS son: Detectan accesos no deseados a la red. No necesitan instalar software adicional en los servidores en produccin. Fcil instalacin y actualizacin por que se ejecutan en un sistema dedicado. Como principales desventajas se encuentran: Examinan el trfico de la red en el segmento en el cual se conecta, pero no puede detectar un ataque en diferentes segmentos de la red. La solucin ms sencilla es colocar diversos sensores. Pueden generar trfico en la red. Ataques con sesiones encriptadas son difciles de detectar.

48

Captulo 3 En cambio, los HIDS analizan el trfico sobre un servidor o un PC, se preocupan de lo que est sucediendo en cada host y son capaces de detectar situaciones como los intentos fallidos de acceso o modificaciones en archivos considerados crticos. Las ventajas que aporta el HIDS son: Herramienta potente, registra comandos utilizados, ficheros abiertos,... Tiende a tener menor nmero de falsos-positivos que los NIDS, entendiendo falsospositivos a los paquetes etiquetados como posibles ataques cuando no lo son. Menor riesgo en las respuestas activas que los IDS de red. Los inconvenientes son: Requiere instalacin en la mquina local que se quiere proteger, lo que supone una carga adicional para el sistema. Tienden a confiar en las capacidades de auditoria y logging de la mquina en s. Hay autores que dividen el grupo HIDS (HostIDS) en tres subcategoras: Verificadores de integridad del sistema (SIV). Un verificador de integridad no es ms que un mecanismo encargado de monitorizar archivos de una mquina en busca de posibles modificaciones no autorizadas, por norma general backdoors dejadas por un intruso (por ejemplo, una entrada adicional en el fichero de contraseas o un /bin/login que permite el acceso ante cierto nombre de usuario no registrado). Monitores de registros (LFM). Estos sistemas monitorizan los archivos de log generados por los programas (generalmente demonios de red) de una mquina en busca de patrones que puedan indicar un ataque o una intrusin. Un ejemplo de monitor puede ser swatch, pero ms habituales que l son los pequeos shelllscripts que casi todos los administradores realizan para comprobar peridicamente sus archivos de log en busca de entradas sospechosas (por ejemplo, conexiones rechazadas en varios puertos provenientes de un determinado host, intentos de entrada remota como root). Sistemas de decepcin. Los sistemas de decepcin o tarros de miel (honeypots), como Deception Toolkit (DTK), son mecanismos encargados de simular servicios con problemas de seguridad de forma que un pirata piense que realmente el problema se puede aprovechar para acceder a un sistema, cuando realmente se est aprovechando para registrar todas sus actividades. Se trata de un mecanismo til en muchas ocasiones (por ejemplo, para conseguir entretener al atacante mientras se tracea su conexin) pero que puede resultar peligroso, por ejemplo qu sucede si el propio sistema de decepcin tiene un bug que desconocemos, y el atacante lo aprovecha para acceder realmente a nuestra mquina?

3.6.1.2 Clasificacin segn los modelos de detecciones. Los dos tipos de detecciones que pueden realizar los IDS son: Deteccin del mal uso. Deteccin del uso anmalo.

La deteccin del mal uso involucra la verificacin sobre tipos ilegales de trfico de red, por ejemplo, combinaciones dentro de un paquete que no se podran dar 49

Mtodos de ataque y soluciones legtimamente. Este tipo de deteccin puede incluir los intentos de un usuario por ejecutar programas sin permiso (por ejemplo, sniffers). Los modelos de deteccin basados en el mal uso se implementan observando como se pueden explotar los puntos dbiles de los sistemas, describindolos mediante unos patrones o una secuencia de eventos o datos (firma) que sern interpretados por el IDS. La deteccin de actividades anmalas se apoya en estadsticas tras comprender cual es el trfico normal en la red del que no lo es. Un claro ejemplo de actividad anmala sera la deteccin de trfico fuera de horario de oficina o el acceso repetitivo desde una mquina remota (rastreo de puertos). Este modelo de deteccin se realiza detectando cambios en los patrones de utilizacin o comportamiento del sistema. Esto se consigue realizando un modelo estadstico que contenga una mtrica definida y compararlo con los datos reales analizados en busca de desviaciones estadsticas significantes. Este tipo de deteccin es bastante compleja, debido a que la cuantificacin de los parmetros a observar no es sencilla y a raz de esto, se pueden presentar los siguientes inconvenientes: Pueden generarse falsas alarmas si el ambiente cambia repentinamente, por ejemplo, cambio en el horario de trabajo. Un atacante puede ir cambiando lentamente su comportamiento para as engaar al sistema.

Los inconvenientes antes mencionados pueden ser controlados mediante una implementacin robusta y minuciosa. 3.6.1.3 Clasificacin segn su naturaleza. Un tercer y ltimo tipo bsico de clasificacin sera respecto a la reaccin del IDS frente a un posible ataque: Pasivos. Reactivos.

Los IDS pasivos detectan una posible violacin de la seguridad, registran la informacin y genera una alerta. Los IDS reactivos estn diseados para responder ante una actividad ilegal, por ejemplo, sacando al usuario del sistema o mediante la reprogramacin de los cortafuegos para impedir el trfico desde una fuente hostil. 3.6.2 Topologas de los IDS. Existen muchas formas de aadir las herramientas IDS a nuestra red, cada una de ellas tiene su ventaja y su desventaja. La mejor opcin debera ser un compendio entre coste econmico y propiedades deseadas, manteniendo un alto nivel de ventajas y un nmero controlado de desventajas, todo ello de acuerdo con las necesidades de la organizacin. Por este motivo, las posiciones de los IDS dentro de una red son varias y aportan diferentes caractersticas. A continuacin vamos a ver diferentes posibilidades en una misma red. Imaginemos que tenemos una red dnde el cortafuegos nos divide Internet de la zona desmilitarizada (DMZ Demilitarized Zone), y otro que divide la DMZ de la intranet de la organizacin como se muestra en la figura 7. Por zona desmilitarizada entendemos la zona que debemos mostrar al exterior, la zona desde la cual mostramos nuestros servicios o productos:

50

Captulo 3

Figura 9: Red con IDS simple

Si situamos un IDS antes del cortafuegos exterior permitira detectar el rastreo de puertos de reconocimiento que seala el comienzo de una actividad hacking, y obtendramos como ventaja un aviso prematuro. Sin embargo, si los rastreos no son seguidos por un ataque real, se generar un numeroso nmero de alertas innecesarias con el peligro de comenzar a ignorarlas. Si optamos por colocar el IDS en la zona desmilitarizada (DMZ) tendramos como ventaja la posibilidad de adecuar la base de datos de atacantes del NIDS para considerar aquellos ataques dirigidos a los sistemas que estn en la DMZ (servidor Web y servidor de correo) y configurar el cortafuegos para bloquear ese trfico. As mismo, un NIDS dentro de la red, por ejemplo, de Recursos Humanos podra monitorear todo el trfico para fuera y dentro de esa red. Este NIDS no debera ser tan poderoso como los comentados anteriormente, puesto que el volumen y el tipo de trfico es ms reducido. El resultado lo podemos visualizar en la siguiente figura:
Dibujo 2: Red completa con IDS

Figura 10: Red completa con IDS.

51

Mtodos de ataque y soluciones El IDS1 se encargara de avisar del rastreo de puertos, y si es reactivo podra enviar un aviso tanto al que esta rastreando (por ejemplo un ping a la direccin que emite el paquete) como al encargado de la seguridad de la organizacin. El IDS2 se encargara de vigilar la zona desmilitarizada y analizar el trfico que reciben tanto el servidor Web como el servidor de correo. Los otros dos IDS se encargaran de la red interna, el IDS3 de la totalidad de la red, y el IDS4 de una subred, en este caso la de RRHH. Estos dos NIDS internos (el IDS3 y el IDS4) podran ser sensores que recogiesen la informacin y lo enviasen a una consola dnde se realizaran los clculos. 3.6.3 Arquitecturas basadas en IDS. Las arquitecturas que implementan sistemas de deteccin de intrusos han ido modificndose y mejorando con el paso del tiempo y con la experiencia. Los primeros IDS eran herramientas software rgidos, diseados y realizados bajo la supervisin de un experto en seguridad de redes y basndose en la experiencia personal. Eran verdaderos sistemas rgidos, dnde la actualizacin ante nuevos tipos de ataques requera verdaderos esfuerzos de anlisis y programacin, adems de contar con un solo programa que realizaba todo el trabajo, sin pensar en sistemas distribuidos. Actualmente, las arquitecturas empleadas para el desarrollo de herramientas IDS, se basan fundamentalmente en dos principios bsicos, la utilizacin de Agentes autnomos que recogen informacin por separado, para luego analizar una parte de esta informacin ellos y la otra una entidad central coordinadora, y las arquitecturas basadas en la exploracin de los datos en tiempo real. Y como ocurre en el mundo de la informtica, se dan arquitecturas hbridas en busca de la mejor solucin posible. 3.6.3.1 Arquitecturas basadas en agentes autnomos. Basa su desarrollo en las carencias y limitaciones que presentan los IDS existentes. La principal carencia de los viejos (y primeros) IDS es que los datos son recogidos por un solo host, adems, algunos de los que intentan solucionar esta desventaja utilizan una coleccin de datos distribuida, pero analizada por una consola central. Los principales problemas de utilizar estas arquitecturas son: La consola central es un solo punto de fallo, la red entera esta sin proteccin si esta falla. La escalabilidad esta limitada. Procesar toda la informacin en un host implica un lmite en el tamao de la red que puede monitorizar. Dificultad en reconfigurar o aadir capacidades al IDS. El anlisis de los datos de la red puede ser defectuoso.

Basndose en estas limitaciones, se ha introducido el trmino de Agente Autnomo definido como una entidad software capaz de analizar actividades de una manera flexible e inteligente, capaz de funcionar continuamente y de aprender por su experiencia y la de otros agentes, adems de comunicarse y cooperar con ellos. Los agentes son autnomos porque son entidades que se ejecutan independientemente y no necesitan informacin de otros agentes para realizar su trabajo. Las principales ventajas que puede aportar una arquitectura basada en Agentes Autnomos residen en que si un agente para de trabajar por cualquier motivo, solamente sus resultados se pierden, sin afectar a otros agentes autnomos. Adems, la posible organizacin de los agentes en estructuras jerrquicas con diferentes capas hace un sistema 52

Captulo 3 escalable. Por estos motivos, un agente autnomo puede cruzar la barrera de los HIDS y los NIDS y realizar ambas funciones, as como estar implementado en el lenguaje que mejor le convenga para cada caso. Los componentes de la arquitectura basada en Agentes Autnomos se basa en tres componentes esenciales: agentes, transceivers y monitores. Un agente autnomo puede ser distribuido sobre cualquier nmero de hosts en una red. Cada host puede contener un nmero de agentes que monitoriza una cierta caracterstica (cada uno). Todos los agentes de un host envan sus resultados a un transceiver y estos envan sus resultados globales del host a uno o ms monitores. Una posible topologa de esta red sera la descrita a continuacin:
Leyenda Transceiver

Monitor

Agente

Flujo de Control Flujo de Datos Figura 11: Arquitectura de un sistema autnomo.

Un agente se encarga de monitorizar un aspecto del sistema total, por ejemplo, un agente puede estar destinado a monitorizar y vigilar las conexiones telnet de un host protegido. Este agente genera un informe y lo enva a su respectivo transceiver. El agente no puede generar una alarma por s mismo, solo informa. Un transceiver es la interfaz externa de comunicacin de cada host. Tiene varios agentes a su servicio de los que recibe informes y construye un mapa de estado del host al que pertenece. Tiene dos funciones principales, una de control y otra de procesamiento de datos. Como funciones de control, debe inicializar o parar los agentes de su host y ejecutar los comandos que le enva el monitor al que pertenece. Como funciones de procesamiento, recibe informes de los agentes de su host, los procesa y la informacin obtenida la enva al monitor o lo reparte con los agentes. El monitor es la entidad de ms alto nivel. Tiene funciones parecidas a las del transceiver, la principal diferencia es que un monitor puede controlar entidades que estn ejecutndose en diferentes hosts, adems, la informacin que recibe de los transceivers es limitada y solamente un monitor es capaz de obtener conclusiones ms refinadas de esta informacin. Otras entidades opcionales que se pueden implementar en las arquitecturas basadas en Agentes Autnomos son los agentes SNMP o los auditores de routers. La principal desventaja de esta arquitectura es que si un monitor detiene su ejecucin, todos los transceivers que controla paran de producir informacin.

53

Mtodos de ataque y soluciones 3.6.3.2 Arquitectura de exploracin de datos en tiempo real. El principal punto negativo de estas arquitecturas es que necesitan un gran paquete de datos de entrenamiento ms complicados que los utilizados en los sistemas tradicionales. Las principales caractersticas que intentan aportar las arquitecturas basadas en anlisis de datos en tiempo real son la exactitud o veracidad, la eficiencia (en cuanto a coste computacional) y la facilidad de uso: veracidad: medido segn el ratio de deteccin (ataques que puede detectar el sistema) y el ratio de falsos positivos (porcentaje de datos normales que el sistema determina como intruso cuando no lo es). En la prctica, solo un ratio falso-positivo bajo puede tolerarse. Eficiencia: un IDS en tiempo real debe detectar las intrusiones lo ms pronto posible. Ante grandes flujos de datos a analizar, el tiempo tomado en procesar cada registro y calcular las estadsticas de sus caractersticas es demasiado elevado. Este retraso en el clculo puede propiciar un ataque que tardara en detectarse. La principal caracterstica de la eficiencia es el coste computacional, dividido en 4 niveles: o Nivel 1: caractersticas que pueden ser computados con el primer paquete recibido o Nivel 2: caractersticas que pueden ser analizadas en cualquier momento de la conexin. o Nivel 3: caractersticas analizadas al final de la conexin. o Nivel 4: estadsticas computadas al final de la conexin. Usabilidad: entendido como facilidad de crear el paquete de entrenamiento y de actualizar los patrones utilizados por el IDS.

Para detectar los intrusos, debemos tener un paquete de caractersticas cuyos valores en los campos de los paquetes analizados difieran de los valores de los campos de los paquetes intrusos. Para poder llevar a cabo esta tarea, el flujo de datos (en binario) es analizado y procesado en registros que contienen un nmero bsico de caractersticas para ms tarde ser analizados por programas especializados que comparan estos registros con los patrones de la base de datos en bsqueda de variaciones o combinaciones peligrosas. Estos patrones pueden ser entrenados para comprobar su correcto funcionamiento generando anomalas de forma artificial, utilizando una heurstica para cambiar el valor de un campo dejando los dems como estaban. Para a continuacin introducir este flujo de datos en una conexin normal. El IDS ejecuta un conjunto de reglas, con coste computacional creciente o con combinaciones de los niveles coste computacional para obtener una buena eficiencia y exactitud en tiempo real acorde con las caractersticas deseadas. Cada modelo ejecuta un conjunto de reglas. Los componentes de la arquitectura de IDS basada en tiempo real consisten en sensores, detectores, almacn de datos y modelos de generacin de caractersticas. El sistema esta diseado para ser independiente del formato de datos de los sensores y del modelo utilizado. Este modelo puede estar representado como una red neuronal, un

54

Captulo 3 conjunto de reglas o un modelo probabilstico. La codificacin XML permitira intercambiar datos entre los diferentes modelos. Si todos los componentes residen en la misma rea local, la carga de trabajo puede distribuirse sobre todos los componentes, si estn distribuidos por diferentes redes, pueden colaborar con otros IDS en Internet, intercambiando informacin de nuevos ataques. Este es el diseo de una arquitectura basada en tiempo real:

Figura 12: Arquitectura de un IDS basado en tiempo real.

Los sensores observan los bits en un sistema monitorizado y analiza sus caractersticas para utilizarlas en el modelo. Los detectores procesan los datos de los sensores y utilizan un modelo de deteccin para evaluar los datos y determinar si es un ataque. Adems, enva el resultado a un almacn de datos (tpicamente una base de datos) para otro posterior anlisis y para generar informes. Pueden coexistir detectores monitorizando el mismo sistema (en paralelo). Los detectores back-end emplearan modelos con coste computacional complejo mientras que los detectores front-end realizaran una deteccin de intrusin sencilla y rpida. Por ltimo, la centralizacin del almacenamiento de los datos y de los modelos aportara varias ventajas: Eficiencia: varios componentes podran manejar el mismo tipo de datos. Operativilidad: los datos de los sensores podran ser consultados con una simple SQL. Rendimiento: la deteccin de complicados ataques y ataques a gran escala podra ser posible mediante el conocimiento y el manejo de los datos por todos los detectores.

3.6.4 Caractersticas deseables de un IDS. Debe ejecutarse continuamente sin intervencin o supervisin de un operador humano.

55

Mtodos de ataque y soluciones Debe ser confiable, lo suficiente como para ejecutarse en background, pero no debe ser una caja negra, es decir, que su funcionamiento interno pueda ser examinado. Debe ser capaz de tolerar fallas, en el sentido de que pueda sobrevivir a una cada del sistema, sin tener que reconstruir su base de datos de conocimientos al reiniciarse. El sistema debe estar en capacidad de automonitorearse para asegurar su correcto funcionamiento. Debe ser ligero, es decir su ejecucin no debe cargar al sistema de una manera tal que le impida ejecutar otras tareas con relativa normalidad Debe observar desviaciones del comportamiento estndar. Debe poder adaptarse al comportamiento cambiante del sistema, es decir, si la configuracin del sistema cambia, el IDS se adaptar. Debe ser difcil de engaar.

Sin importar qu sistemas vigile o su forma de trabajar, cualquier sistema de deteccin de intrusos ha de cumplir algunas propiedades para poder desarrollar su trabajo correctamente. En primer lugar, y quizs como caracterstica ms importante, el IDS ha de ejecutarse continuamente sin nadie que est obligado a supervisarlo, independientemente de que al detectar un problema se informe a un operador o se lance una respuesta automtica, el funcionamiento habitual no debe implicar interaccin con un humano. Podemos fijarnos en que esto parece algo evidente, muy pocas empresas estaran dispuestas a contratar a una o varias personas simplemente para analizar logs o controlar los patrones del trfico de una red. Sin entrar a juzgar la superioridad de los humanos frente a las mquinas (puede un algoritmo determinar perfectamente si un uso del sistema est correctamente autorizado?) o viceversa (sera capaz una persona de analizar en tiempo real todo el trfico que llega a un servidor Web mediano?), hemos de tener presente que los sistemas de deteccin son mecanismos automatizados que se instalan y configuran de forma que su trabajo habitual sea transparente a los operadores del entorno informtico. Otra propiedad, y tambin como una caracterstica a tener siempre en cuenta, es la aceptabilidad o grado de aceptacin del IDS, al igual que suceda con cualquier modelo de autenticacin, los mecanismos de deteccin de intrusos han de ser aceptables para las personas que trabajan habitualmente en el entorno. Por ejemplo, no ha de introducir una sobrecarga considerable en el sistema (si un IDS ralentiza demasiado una mquina, simplemente no se utilizar) ni generar una cantidad elevada de falsos positivos (deteccin de intrusiones que realmente no lo son) o de logs, ya que entonces llegar un momento en que nadie se preocupe de comprobar las alertas emitidas por el detector. Por supuesto (y esto puede parecer una tontera, pero es algo que se hace ms a menudo de lo que podamos imaginar), si para evitar problemas con las intrusiones simplemente apagamos el equipo o lo desconectamos de la red, tenemos un sistema bastante seguro pero inaceptable. Una tercera caracterstica a evaluar a la hora de hablar de sistemas de deteccin de intrusos es la adaptabilidad del mismo a cambios en el entorno de trabajo. Como sabemos, ningn sistema informtico puede considerarse esttico, desde la aplicacin ms pequea hasta el propio kernel de Unix, pasando por supuesto por la forma de trabajar de los usuarios (quin nos asegura que ese engorroso procedimiento desde una desfasada lnea de rdenes maana no se realizar desde una aplicacin grfica, que realmente hace el mismo trabajo pero que genera unos patrones completamente diferentes en nuestro sistema?), todo cambia con una periodicidad ms o menos elevada. Si nuestros 56

Captulo 3 mecanismos de deteccin de intrusos no son capaces de adaptarse rpidamente a esos cambios, estn condenados al fracaso. Todo IDS debe adems presentar cierta tolerancia a fallos o capacidad de respuesta ante situaciones inesperadas, insistiendo en lo que comentbamos antes sobre el carcter altamente dinmico de un entorno informtico, algunos de los cambios que se pueden producir en dicho entorno no son graduales sino bruscos, y un IDS ha de ser capaz de responder siempre adecuadamente ante los mismos. Podemos contemplar, por ejemplo, un reinicio inesperado de varias mquinas o un intento de engao hacia el IDS, esto ltimo es especialmente crtico, slo hemos de pararnos a pensar que si un atacante consigue modificar el comportamiento del sistema de deteccin y el propio sistema no se da cuenta de ello, la intrusin nunca ser notificada, con los dos graves problemas que eso implica, aparte de la intrusin en s, la falsa sensacin de seguridad que produce un IDS que no genera ninguna alarma es un grave inconveniente de cara a lograr sistemas seguros. 3.6.5 Metodologa para la deteccin de intrusos y para la seleccin e implantacin de sistemas IDS. La labor de un administrador o de la persona encargada de la seguridad de un sistema informtico puede ser realmente frustrante. Sobre todo cuando el sistema a sido invadido por un intruso o hacker. En principio, si se ha configurado correctamente un servidor y se est al da en materia de seguridad, as como de fallas (bugs) que van surgiendo, no habr problemas de que un intruso entre en el sistema. Realmente con un poco de esfuerzo se puede tener un servidor altamente seguro que evitar alrededor del 85% de los intentos de acceso no autorizados alo sistema. Pero en muchas ocasiones el peligro viene de los propios usuarios internos del sistema, los cuales presentan un gran riesgo debido a que ya tiene acceso al sistema. Pasos a seguir para detectar a un intruso. Lo primero que debemos hacer es seguir una serie de pasos los cuales nos ayudarn a descubrir si realmente ha entrado un intruso, ya que en muchas ocasiones pensamos que ha entrado alguien, pero no es cierto. Realmente en muchas ocasiones es fcil detectar a un intruso en ambiente Unix, ya que suelen seguir un patrn detectable, el cual podra ser el mostrado en la figura. Este esquema representa bsicamente los pasos que sigue de un intruso, Primero entra al sistema, y si slo tiene acceso como usuario, explotar alguna debilidad o falla del sistema para as obtener ID 0 (o lo que es lo mismo, privilegios de root). En caso de entrar como root u obtenerlo de alguna otra manera, se dedicar a controlar el sistema, dejando algn mecanismo para volver cuando quiera. Seguramente copiar el archivo /etc/passwd y el /etc/shadow (en caso de que el sistema use "shadow"), luego le dar rienda suelta a su imaginacin, como por ejemplo, instalar un sniffer, troyanos, leer mails ajenos, etc. Y en caso de ser un pirata malicioso puede causar desastres en el sistema, como sera modificar paginas Web, borrar archivos o mails, producir un DoS (Denial of Service), cambiar passwords de usuarios legtimos, etc.

Figura 13: Pasos de un intruso.

A continuacin se exponen los diferentes pasos a seguir de acuerdo a los expertos en seguridad como son el CERT, ISS, etc. [14] 57

Mtodos de ataque y soluciones 1. Examinar los archivos log como el last log, contabilidad, syslog, y los C2 log buscando conexiones no usuales o cosas sospechosas en el sistema. Aunque hay que tener especial cuidado en guiarnos por los logs, ya que muchos intrusos utilizaran diversas herramientas para borrar sus huellas. 2. Buscar por el sistema archivos ocultos o no usuales (archivos que empiezan por un . (punto), no salen con un simple ls), ya que pueden ser usado para esconder herramientas para violar la seguridad del sistema, por ejemplo un crackeador o incluso contener el /etc/passwd del sistema o de otros sistemas al cual ha entrado nuestro intruso. Muchos piratas suelen crear directorios ocultos utilizando nombres como ... (punto-punto-punto), .. (punto-punto), ..^g (punto-punto control+G). En algunos casos un pirata ha utilizado nombres como .x o .hacker o incluso .mail. 3. Buscar archivos SET-UID por el sistema. Ya que en muchas ocasiones los piratas suelen copiar y dejar escondido copias del /bin/sh para obtener root. Podemos utilizar el comando find para buscar este tipo de archivos por el sistema (el comando find puede ser sustituido por un troyano para esconder archivos del pirata, por lo que no es totalmente confiable), para ello ejecutamos la siguiente lnea: # find / -user root -perm -4000 print 4. Revisar los archivos binarios del sistema para comprobar que no han sido sustituidos por un troyano, como por ejemplo los programas su, login, telnet y otros programas vitales del sistema. (Existen varias herramientas conocidas como RootKit que permite a un pirata cambiar los binarios del sistema por troyanos que son copias exactas de los originales). Lo recomendado es comparar con las copias de seguridad aunque puede que las copias de seguridad tambin hayan sido sustituidas por un troyano. 5. Examinar todos los archivos que son ejecutados por cron y at. Ya que algunos piratas depositan puertas traseras que le permiten volver al sistema aunque los hayamos echado del sistema. Asegurarse que todos los archivos son nuestros y no tienen permiso de escritura. 6. Examinar el archivo /etc/inetd.conf en busca de cambios, en especial aquellas entradas que ejecuten un shell (por ejemplo: /bin/sh o /bin/csh) y comprobar que todos los programas son legtimos del sistema y no troyanos. 7. Examinar los archivos del sistema y de configuracin en busca de alteraciones. En particular, buscar entradas con el signo + o host names no apropiados en archivos como /etc/hosts.equiv, /etc/hosts.lpd y en todos los archivos .rhost del sistema, con especial inters los de root, uucp, ftp y otras cuentas del sistema. Estos archivos no deberan tener atributo de escritura. 8. Examinar cuidadosamente todos los computadores de nuestra red local en busca de indicios que nuestra red ha sido comprometida. En particular, aquellos sistemas que compartan NIS+ o NFS, o aquellos sistemas listados en el /etc/hosts.equiv. Lgicamente tambin revisar los sistemas informticos que los usuarios comparten mediante el acceso del .rhost. 9. Examinar el archivo /etc/passwd, en busca de alteraciones en las cuentas de los usuarios o la creacin de cuentas nuevas, especialmente aquellas cuentas con ID 0, las que no tienen password, etc.

58

Captulo 3 Estos nueve puntos son los pasos a seguir recomendados por el CERT, los cuales se quedan un poco cortos de soluciones prcticas para el administrador. Para ello explicaremos los mtodos de los piratas y como combatirlos [15]: Los archivos Log: messages: Este archivo contiene bastante informacin, por lo que debemos buscar sucesos poco usuales. xferlog: Si el sistema comprometido tiene servicio FTP, este archivo contiene la bitcora de todos los procesos del FTP. Podemos examinar qu tipo de herramientas ha subido el pirata y qu archivos ha bajado de nuestro servidor. utmp: Este archivo contiene informacin en binario de todos los usuarios conectados al sistema en el momento. Por lo que puede ser muy til para determinar quin esta conectado al sistema en este momento. Para ello ejecutaremos el comando who o w. wtmp: Cada vez que un usuario entra al servidor y sale del mismo, la mquina modifica este archivo. Al igual que el anterior, este archivo est en binario, por lo que tendremos que usar alguna herramienta especial para ver el contenido de este archivo. El mismo contiene la informacin en formato: usuario, hora de conexin, e IP origen del usuario, por lo que podemos averiguar de dnde provino el pirata. Pero aunque contemos con esta informacin, puede que haya sido falseada por el pirata utilizando alguna tcnica para ocultar su IP original o haya borrado su entrada. secure: Algunos sistemas Unix loggean mensajes en archivo secure, ya que utilizan algn software de seguridad para ello, como el TCP Wrapper. Muchos piratas intentaran borrar sus huellas utilizando programas conocidos como Zapper's o Zap, entre otros. Podemos detectar este tipo de programas para ello debemos buscar cuidadosamente archivos SETUID o SETGID (especialmente aquellos archivos SETUID de root). Esto lo podemos realizar con el comando find, escribimos lo siguiente: # find / -group kmen -perm -2000 print # find / -user root -perm -4000 -print xdev # ncheck -s /dev/rsd0g

Este ultimo comando ncheck nos permitir buscar archivos SETUID por las particiones. Debemos buscar troyanos en nuestros archivos binarios, ya que suele ser una de las tareas principales de un pirata cuando ha comprometido la seguridad de un servidor. Una lista de posibles binarios que un pirata puede sustituir, es la siguiente: Login Su telnet netstat ifconfig ls find du 59

Mtodos de ataque y soluciones df libc sync

As como los binarios listados en /etc/inetd.conf. Hay varias utilidades ampliamente disponibles para detectar estos troyanos. Otras de las principales tareas de un pirata consiste en la utilizacin de sniffers, para capturar informacin confidencial. Los ms usados son los siguientes: linsniff666.c esniff.c solsniff.c sunsniff.c sniffit

3.6.6 Deteccin de problemas. Desde que en 1980 James P. Anderson propusiera la deteccin de anomalas como un mtodo vlido para detectar intrusiones en sistemas informticos [16], la lnea de investigacin ms activa es la denominada Anomaly Detection IDS, IDSs basados en la deteccin de anomalas. La idea es a priori muy interesante, estos modelos de deteccin conocen lo que es normal en nuestra red o nuestras mquinas a lo largo del tiempo, desarrollando y actualizando conjuntos de patrones contra los que comparar los eventos que se producen en los sistemas. Si uno de esos eventos (por ejemplo, una trama procedente de una mquina desconocida) se sale del conjunto de normalidad, automticamente se cataloga como sospechoso. Los IDSs basados en deteccin de anomalas se basan en la premisa de que cualquier ataque o intento de ataque implica un uso anormal de los sistemas. Pero, cmo puede un sistema conocer lo que es y lo que no es normal en nuestro entorno de trabajo? Para conseguirlo, existen dos grandes aproximaciones [17], o es el sistema el que es capaz de aprenderlo por s mismo (basndose por ejemplo en el comportamiento de los usuarios, de sus procesos, del trfico de nuestra red) o bien se le especifica al sistema dicho comportamiento mediante un conjunto de reglas. La primera de estas aproximaciones utiliza bsicamente mtodos estadsticos (medias, varianzas), aunque tambin existen modelos en los que se aplican algoritmos de aprendizaje automtico, la segunda aproximacin consiste en especificar mediante un conjunto de reglas los perfiles de comportamiento habitual basndose en determinados parmetros de los sistemas (con la dificultad aadida de decidir cules de esos parmetros que con mayor precisin delimitan los comportamientos intrusivos). En el primero de los casos (el basado en mtodos estadsticos), el detector observa las actividades de los elementos del sistema, activos (sujetos), pasivos (objetos) o ambos, y genera para cada uno de ellos un perfil que define su comportamiento, dicho perfil es almacenado en el sistema, y se actualiza con determinada frecuencia envejeciendo la informacin ms antigua y priorizando la ms fresca. El comportamiento del usuario en un determinado momento se guarda temporalmente en otro perfil, denominado perfil actual (current profile), y a intervalos regulares se compara con el almacenado previamente en busca de desviaciones que puedan indicar una anomala.

60

Captulo 3 Existen diferentes tipos de datos o medidas que pueden ser tiles en la elaboracin de estos perfiles: 1. Intensidad de la actividad. Reflejan el ratio de progreso de la actividad en el sistema, para lo cual recogen datos a intervalos muy pequeos (tpicamente entre un minuto y una hora). Estas medidas detectan rfagas de comportamiento (por ejemplo, una excesiva generacin de peticiones de entrada/salida en un cierto intervalo) que en espacios de tiempo ms amplios no podrn ser detectadas. 2. Numricas. Se trata de medidas de la actividad cuyo resultado se puede representar en forma de valor numrico, como el nmero de ficheros ledos por cierto usuario en una sesin o la cantidad de veces que ese usuario se ha equivocado al teclear su contrasea de acceso al sistema. 3. Categricas. Las medidas categricas son aquellas cuyo resultado es una categora individual, y miden la frecuencia relativa o la distribucin de una actividad determinada con respecto a otras actividades o categoras, por ejemplo, cual es la relacin entre la frecuencia de acceso a un determinado directorio del sistema en comparacin con la de acceso a otro. Seguramente la palabra categora no es la ms afortunada (por lo menos, no la ms clara), ya que bajo este trmino se pueden englobar tanto a objetos (por ejemplo, ficheros) como a eventos (por ejemplo, llamadas a la funcin crypt()) del sistema, esta definicin genrica puede resultar ms sencilla si distinguimos entre categoras globales e individuales, en castellano plano, podemos entender las categoras globales como acciones muy genricas dentro de un entorno, mientras que las categoras individuales seran la particularizacin para un elemento determinado del sistema. As, una categora global puede ser la formada por el conjunto de accesos remotos a la mquina, mientras que una individual sera la formada por los accesos desde una determinada ubicacin fsica. 4. Distribucin de registros de auditoria. Esta medida analiza la distribucin de las actividades generadas en un pasado reciente basndose en los logs generados por las mismas, dicho anlisis se realiza de forma ponderada, teniendo ms peso las actividades ms recientes, y es comparado con un perfil de actividades habituales previamente almacenado, de forma que permite detectar si en un pasado reciente se han generado eventos inusuales. La segunda aproximacin a la que antes hemos hecho referencia era la consistente en indicar mediante un conjunto de reglas el comportamiento habitual del sistema, suele ser denominada deteccin de anomalas basada en especificaciones (specification-based anomaly detection), y fue propuesta y desarrollada inicialmente por Calvin Cheuk Wang Ko y otros investigadores de la Universidad de California en Davis, durante la segunda mitad de los noventa. La idea en la que se sustentan los sistemas de deteccin de anomalas basados en especificaciones es que se puede describir el comportamiento deseable (entendiendo por deseable el comportamiento normal) de cualquier programa cuya seguridad sea crtica, esta descripcin se realiza en base a una especificacin de seguridad mediante gramticas, y se considera una violacin de la seguridad (al menos en principio) a las ejecuciones de dichos programas que violen su respectiva especificacin. Para ver ms claramente el concepto de la deteccin de anomalas basada en especificaciones, podemos pensar en la ejecucin de un programa que se puede considerar crtico, por ser privilegiado: /bin/passwd. Si conseguimos diferenciar las diferentes ejecuciones de esta orden que se pueden considerar habituales (por ejemplo, cuando un usuario cambia su contrasea sin problemas, cuando se equivoca, cuando el sistema no le 61

Mtodos de ataque y soluciones deja cambiarla por los motivos tpicos (es dbil, hace poco que la cambi...), podramos especificar formalmente cada una de estas secuencias de operacin. De esta forma, cada vez que un usuario invoque a /bin/passwd, el sistema de deteccin monitorizar las operaciones que esa llamada genere, y considerar una intrusin a cualquiera que no sea habitual. La idea de los sistemas de deteccin de intrusos basados en la deteccin de anomalas es realmente atractiva, no obstante, existen numerosos problemas a los que estos mecanismos tratan de hacer frente. En primer lugar podemos pararnos a pensar en las dificultades que existen a la hora de aprender o simplemente especificar lo habitual, si alguien piensa que por ejemplo obtener un patrn de trfico normal en una red es fcil, se equivoca, quizs establecer un conjunto de procesos habituales en una nica mquina resulte menos complicado, pero tampoco se trata de una tarea trivial. Adems, conforme aumentan las dimensiones de los sistemas (redes con un gran nmero de mquinas interconectadas, equipos con miles de usuarios) estos se hacen cada vez ms aleatorios e impredecibles. Otro gran problema de los sistemas basados en deteccin de anomalas radica en la poltica de aprendizaje que stos sigan [18], si se trata de esquemas donde el aprendizaje es rpido, un intruso puede generar eventos para conseguir un modelo distorsionado de lo normal antes de que el responsable de los sistemas se percate de ello, de forma que el IDS no llegue a detectar un ataque porque lo considera algo habitual. Si por el contrario el aprendizaje es lento, el IDS considerar cualquier evento que se aleje mnimamente de sus patrones como algo anmalo, generando un gran nmero de falsos positivos (falsas alarmas), que a la larga haran que los responsables de los sistemas ignoren cualquier informacin proveniente del IDS, con los evidentes riesgos que esto implica. 3.6.7 Deteccin de usos indebidos. Dentro de la clasificacin de los sistemas de deteccin de intrusos en base a su forma de actuar, la segunda gran familia de modelos es la formada por los basados en la deteccin de usos indebidos. Este esquema se basa en especificar de una forma ms o menos formal las potenciales intrusiones que amenazan a un sistema y simplemente esperar a que alguna de ellas ocurra, para conseguirlo existen cuatro grandes aproximaciones [19], los sistemas expertos, los anlisis de transicin entre estados, las reglas de comparacin y emparejamiento de patrones (pattern matching) y la deteccin basada en modelos. Los primeros sistemas de deteccin de usos indebidos, como NIDES, se basaban en los sistemas expertos para realizar su trabajo, en ellos las intrusiones se codifican como reglas de la base de conocimiento del sistema experto, de la forma genrica if-then (if condicin then accin). Cada una de estas reglas puede detectar eventos nicos o secuencias de eventos que denotan una potencial intrusin, y se basan en el anlisis de los registros de auditoria proporcionados por cualquier sistema Unix, esta es una de las principales ventajas de los sistemas expertos, el hecho de que el mecanismo de registro dentro de Unix venga proporcionado de serie, ya que de esta forma el sistema de deteccin trabaja siempre por encima del espacio del sistema operativo, algo que facilita enormemente su integracin dentro de diferentes clones de Unix. Podemos pensar en un caso real que nos ayude a comprender el funcionamiento de los sistemas expertos a la hora de detectar intrusiones, el tpico ejemplo es la deteccin de un mismo usuario conectado simultneamente desde dos direcciones diferentes. Cada vez

62

Captulo 3 que un usuario se autentica correctamente en el sistema, cualquier Unix genera una lnea de registro que se guarda en el fichero de log correspondiente. La segunda implementacin de los sistemas de deteccin de usos indebidos era la basada en los anlisis de transicin entre estados, bajo este esquema, una intrusin se puede contemplar como una secuencia de eventos que conducen al atacante desde un conjunto de estados inicial a un estado determinado, representando este ltimo una violacin consumada de nuestra seguridad. Cada uno de esos estados no es ms que una imagen de diferentes parmetros del sistema en un momento determinado, siendo el estado inicial el inmediatamente posterior al inicio de la intrusin, y el ltimo de ellos el resultante de la completitud del ataque, la idea es que si conseguimos identificar los estados intermedios entre ambos, seremos capaces de detener la intrusin antes de que se haga efectiva. Sin duda el sistema de deteccin basado en el anlisis de transicin entre estados ms conocido es ustat [20]. Este modelo fue desarrollado inicialmente sobre SunOS 4.1.1 (en la actualidad est portado a Solaris 2), y utiliza los registros de auditoria generados por el C2 Basic Security Module de este operativo. En ustat, estos registros del c2-bsm son transformados a otros de la forma <s, a, o>, representando cada uno de ellos un evento de la forma el sujeto S realiza la accin A sobre el objeto O, a su vez, cada elemento de la terna anterior est formado por diferentes campos que permiten identificar unvocamente el evento representado. El sistema de deteccin utiliza adems una base de datos (realmente, se trata de simples ficheros planos) formada principalmente por dos tablas, una donde se almacenan las descripciones de los diferentes estados (SDT, State Description Table) y otra en la que se almacenan las transiciones entre estados que denotan un potencial ataque (SAT, Signature Action Table). Cuando ustat registre una sucesin determinada de eventos que representen un ataque entrar en juego el motor de decisiones, que emprender la accin que se le haya especificado (desde un simple mensaje en consola informando de la situacin hasta acciones de respuesta automtica capaces de interferir en tiempo real con la intrusin). La tercera implementacin que habamos comentado era la basada en el uso de reglas de comparacin y emparejamiento de patrones o pattern matching [21], en ella, el detector se basa en la premisa de que el sistema llega a un estado comprometido cuando recibe como entrada el patrn de la intrusin, sin importar el estado en que se encuentre en ese momento. Dicho de otra forma, simplemente especificando patrones que denoten intentos de intrusin el sistema puede ser capaz de detectar los ataques que sufre, sin importar el estado inicial en que est cuando se produzca dicha deteccin, lo cual suele representar una ventaja con respecto a otros modelos de los que hemos comentado. Actualmente muchos de los sistemas de deteccin de intrusos ms conocidos (por poner un ejemplo, podemos citar a snort o RealSecure) estn basados en el pattern matching. Utilizando una base de datos de patrones que denotan ataques, estos programas se dedican a examinar todo el trfico que ven en su segmento de red y a comparar ciertas propiedades de cada trama observada con las registradas en su base de datos como potenciales ataques, si alguna de las tramas empareja con un patrn sospechoso, automticamente se genera una alarma en el registro del sistema. Por ltimo, tenemos que hablar de los sistemas de deteccin de intrusos basados en modelos, se trata de una aproximacin conceptualmente muy similar a la basada en la transicin entre estados, en el sentido que contempla los ataques como un conjunto de estados y objetivos, pero ahora se representa a los mismos como escenarios en lugar de hacerlo como transiciones entre estados. En este caso se combina la deteccin de usos 63

Mtodos de ataque y soluciones indebidos con una deduccin o un razonamiento que concluye la existencia o inexistencia de una intrusin, para ello, el sistema utiliza una base de datos de escenarios de ataques, cada uno de los cuales est formado por una secuencia de eventos que conforman el ataque. En cada momento existe un subconjunto de esos escenarios, denominado de escenarios activos, que representa los ataques que se pueden estar presentando en el entorno, un proceso denominado anticipador analiza los registros de auditora generados por el sistema y obtiene los eventos a verificar en dichos registros para determinar si la intrusin se est o no produciendo (realmente, al ser esos registros dependientes de cada sistema Unix, el anticipador pasa su informacin a otro proceso denominado planner, que los traduce al formato de auditora utilizado en cada sistema). El anticipador tambin actualiza constantemente el conjunto de escenarios activos, de manera que este estar siempre formado por los escenarios que representan ataques posibles en un determinado momento y no por la base de datos completa. Hasta hace poco tiempo no existan sistemas de deteccin de intrusos basados en modelos funcionando en sistemas reales, por lo que era difcil determinar aspectos como su eficiencia a la hora de detectar ataques. En 1998 se present nstat, una extensin de ustat (del cual hemos hablado antes) a entornos distribuidos y redes de computadores, y en el que se combina el anlisis de transicin entre estados con la deteccin de intrusos basada en modelos. A pesar de todo, este modelo es el menos utilizado a la hora de detectar ataques y efectuar respuestas automticas ante los mismos, especialmente si lo comparamos con los basados en la comparacin y emparejamiento de patrones. Los IDSs basados en la deteccin de usos indebidos son en principio ms robustos que los basados en la deteccin de anomalas, al conocer la forma de los ataques, es tericamente extrao que generen falsos positivos (a no ser que se trate de un evento autorizado pero muy similar al patrn de un ataque), es necesario recalcar el matiz tericamente, porque como veremos ms adelante, la generacin de falsos positivos es un problema a la hora de implantar cualquier sistema de deteccin. No obstante, en este mismo hecho radica su debilidad, slo son capaces de detectar lo que conocen, de forma que si alguien nos lanza un ataque desconocido para el IDS ste no nos notificar ningn problema, como ya dijimos, es algo similar a los programas antivirus, y de igual manera que cada cierto tiempo es conveniente (en MS-DOS y derivados) actualizar la versin del antivirus usado, tambin es conveniente mantener al da la base de datos de los IDSes basados en deteccin de usos indebidos. An as, seremos vulnerables a nuevos ataques. Otro grave problema de los IDSes basados en la deteccin de usos indebidos es la incapacidad para detectar patrones de ataque convenientemente camuflados. Volviendo al ejemplo de los antivirus, pensemos en un antivirus que base su funcionamiento en la bsqueda de cadenas virales, lo que bsicamente har ese programa ser buscar cadenas de cdigo hexadecimal pertenecientes a determinados virus en cada uno de los archivos a analizar, de forma que si encuentra alguna de esas cadenas el software asumir que el fichero est contaminado. Y de la misma forma que un virus puede ocultar su presencia simplemente cifrando esas cadenas (por ejemplo de forma semialeatoria utilizando eventos del sistema, como el reloj), un atacante puede evitar al sistema de deteccin de intrusos sin ms que insertar espacios en blanco o rotaciones de bits en ciertos patrones del ataque, aunque algunos IDSes son capaces de identificar estas transformaciones en un patrn, otros muchos no lo hacen.

64

4 AUTENTIFICACIN Y CERTIFICADOS DIGITALES


4.1 Introduccin En la actualidad, y especialmente para el trfico que atraviesa redes inseguras, como Internet, es normal que se busque asegurar, ms an que la privacidad, la autentificacin, la integridad y otras propiedades como el no repudio. En este captulo se empezar por analizar los problemas tpicos que se plantean al intentar imponer tales propiedades. Se continuar con la firma digital, explicando la importancia que tiene, hoy en da, para casi cualquier sistema de autentificacin segura. Se analizarn distintos esquemas de firma digital, haciendo nfasis especial en el ms utilizado, que es el basado en el algoritmo de criptografa asimtrica RSA1. El cual, es un algoritmo de clave pblica entre los participantes, siendo necesario estndares como el X.509 donde cada participante tiene el suyo propio que certifica su identidad, es decir, su clave pblica, pero para garantizar que este certificado es vlido aparecen lo que llamamos Autoridades de certificacin. De una u otra forma, las estructuras y algoritmos de este captulo se estn usando, y modificndose parcialmente todos los das, se utilizan en los sistemas criptogrficos utilizados en redes de ordenadores, tanto en el caso de seguridad aplicada a redes internas de las organizaciones, como al trfico comercial por redes inseguras, especialmente Internet. 4.2 Autentificacin.

La autentificacin es cualquier proceso mediante el cual se verifica que alguien es quien dice ser [22], se le permite estar donde quiere ir, o tener la informacin que quiere tener. Este concepto tiene diversas aceptaciones dependiendo de dnde y cmo se aplique, como por ejemplo: Un dispositivo de red, por ejemplo un encaminador, demostrando a otro encaminador en Internet, que realmente su identidad es la que dice ser. Un servidor de comercio electrnico, que usa SSL, demostrando a un posible cliente, mediante lo que se conoce como conexin segura, que realmente es el servidor que dice ser. Un servidor de oficina de banca por Internet, que necesita asegurarse de que un mensaje de cargo a una cuenta corriente es de quien dice ser. El mensaje suele venir cifrado con una contrasea, que puede estar autentificada.

A parte de la autentificacin podemos hablar de integridad, que es la propiedad que permite garantizar que una serie de datos no han sido modificados, pero hay otra propiedad que, cada vez ms, resulta importante para la seguridad, especialmente en entornos comerciales, se trata del no repudio y es una propiedad intrnsecamente ligada con la autentificacin. El no repudio es la necesidad de asociar un mensaje con su creador.
RSA: Rivest Shamir Addleman. Nombre de los tres inventores del algoritmo RSA, de criptografa asimtrica. Tambin, nombre de la empresa que crearon ellos mismos para el desarrollo de todo tipo de productos y sistemas criptogrficos.
1

Captulo 4 En la vida no digital se han usado toda una variedad de mtodos para reducir la capacidad de la gente de negar que hayan sido los creadores de documentos de papel. Tales mtodos y los aplicados a sus homlogos digitales son bastante parecidos y estn muy unidos a los problemas de autenticacin. En ambos casos, se aplica una firma al mensaje. En el caso de firmas en papel, se trabaja con una autoridad de confianza, por ejemplo un notario, para validar los mensajes. En el campo digital es tpico echar mano de una autoridad de certificacin, aunque no es la nica solucin. En estos casos tal autoridad de certificacin emite un documento denominado certificado digital. Para conseguir todas estas propiedades se utilizan varias combinaciones de algoritmos criptogrficos asimtricos y funciones de una sola va y casi todas ellas pasan por la utilizacin de firmas digitales. En una solucin en el cual no se usa la firma digital, sino que se basa en criptografa simtrica, se trata de introducir la figura de una tercera figura, a la que podemos llamar Fiador, que mantiene una clave privada, dentro de un sistema de criptografa simtrica, para cada participante del sistema. As, si Alicia y Juanma son dos de tales participantes, el Fiador mantiene una clave, ka, para la comunicacin segura con Alicia y una clave, kb, para la comunicacin segura con Juanma. En el caso de que Alicia desee enviar un mensaje a Juanma los pasos que se siguen son los siguientes: Alicia encripta el mensaje M utilizando la clave ka, obteniendo C(ka(M)), y lo enva al Fiador. El fiador comprueba la integridad de Alicia, desencripta el mensaje, obteniendo M y, encriptndolo con kb, enva a Juanma tanto el mensaje M, la identidad de Alicia y la firma C(ka(M)), C(kb(M, A, C(ka(M)))).

Clave ka D=C(ka(M))

Algoritmo criptogrfico simtrico Mensaje M Fiador

Clave kb C(kb(M, A, D))

Clave ka Algoritmo criptogrfico simtrico Mensaje M Alicia


Figura 14: Autentificacin y no repudio mediante clave privada

Clave Kb Algoritmo criptogrfico simtrico Mensaje M Juanma

66

Autentificacin y certificados digitales Como tanto Alicia como Juanma confan en el Fiador, el procedimiento es seguir y, en caso de dudas, el Fiador puede comprobar la identidad de Alicia, descifrando el mensaje recibido de ella. En este caso, la propia cifra de datos est haciendo el papel de autentificador. En el caso de que la clave del algoritmo simtrico sea segura, se puede afirmar que, adems de la privacidad que se consigue con tal cifra, se obtiene a la vez la integridad y autenticidad del mensaje, ya que es nicamente el usuario emisor el puede crear ese mensaje. Con este mtodo no se puede alcanzar la doble autentificacin de mensaje y emisor, se sigue teniendo la inseguridad de la transmisin de claves. Otra aproximacin a este problema es hacer que el Fiador sea un KDC, Key Distribuition Center, una especie de distribuidor de claves de confianza, que, adems, debe compartir una clave, que suele denominarse maestra, con todos los participantes de este sistema. La tarea del KDC es distribuir una clave de sesin, que ser utilizada, para la conexin entre dos participantes. Tal clave de sesin est protegida, siguiendo el modelo, por la clave maestra citada. El sistema kerberos se basa en este modelo, servicio de autentificacin, auditoria y contabilidad, desarrollado en el MIT (Massachussets Institute of Technology). 4.3 Autentificacin HTTP basada en php.

Las caractersticas de autentificacin HTTP en PHP solo estn disponibles cuando se est ejecutando como mdulo en Apache. De esta manera se puede usar la funcin header() para enviar un mensaje de Autentificacin requerida al navegador cliente haciendo que muestre una ventana de entrada emergente con nombre de usuario y contrasea. Una vez que el usuario ha rellenado el nombre y la contrasea, la URL que contiene el script PHP vuelve a ser llamada con las variables $PHP_AUTH_USER, $PHP_AUTH_PW y $PHP_AUTH_TYPE rellenas con el nombre de usuario, la contrasea y el tipo de autentificacin respectivamente. Se puede configurar Apache de forma que para acceder a cierto directorio (y subdirectorios) sea necesario introducir un usuario y una clave. Dentro de esta posibilidad vamos a ver dos mtodos: Basic: cuando en el cliente se introduce el usuario y la clave, estos viajan al servidor sin cifrar. Digest: cuando el usuario y la clave van cifrados del cliente al servidor.

Estos mtodos tienen la ventaja de que es Apache quien se encarga de comprobar las correctas credenciales del cliente, por lo que no tenemos que hacer ningn tipo de comprobacin en nuestra aplicacin. Hay que tener en cuenta que estos dos mtodos slo sirven para autenticar a un usuario cuando intenta acceder a un determinado recurso. Es decir, Apache identifica si se trata de un usuario vlido, y en tal caso le deja acceder al recurso. Pero los datos que posteriormente se enven de cliente al servidor, o viceversa, no tienen ningn tipo de cifrado. Estos mtodos slo sirven para controlar el acceso, no para proteger los datos una vez se ha comprobado que el acceso es vlido.

67

Captulo 4 4.3.1 Autentificacin HTTP Basic. Para este modo de autenticacin se utiliza el mdulo mod_auth. Consiste en crear un fichero de texto en el que se almacenar un nombre de usuario y una contrasea, una vez creado se configura el servidor para que pida autentificacin cuando se acceda a un determinado recurso. Este mtodo tiene la ventaja de que lo soportan todos los navegadores, pero tiene la desventaja de que el nombre de usuario y la clave no van cifrados del cliente al servidor. Esto hace que no sea un mtodo recomendado para entornos donde la seguridad es clave. 4.3.1.1 Configuracin de httpd.conf En el fichero /usr/local/apache2/conf/httpd.conf tenemos que aadir las siguientes lneas:
<Directory "/usr/local/apache2/htdocs/protegido"> AuthName "privatefiles" AuthType Basic AuthUserFile /usr/local/apache2/conf/passwd_basic Require valid-user </Directory>

El significado de cada una de estas directivas es: Directory: estamos diciendo a Apache que las directivas que vienen a continuacin tiene efecto sobre el directorio /usr/local/apache2/htdocs/private, y sus subdirectorios. Es decir, que vamos a proteger este directorio y sus subdirectorios. AuthName: es el nombre del dominio de autenticacin. Tambin es el texto que aparecer en la ventana que pide el usuario y la clave. AuthType: el tipo de autenticacin. AuthUserFile: el fichero donde estn los usuarios y las claves. Require: con esta directiva indicamos que usuarios tienen acceso, tenemos varias posibilidades: o valid-user: cualquier usuario que est en el fichero de claves. o user <lista de usuarios>: lista de usuarios, separados por espacios, que pueden acceder. o group <lista de grupos>: lista de grupos, separados por espacios, que pueden acceder. Ojo, porque si usamos esta opcin tambin necesitamos usar la directiva AuthGroupFile para indicar donde se encuentra el fichero con la definicin de los grupos.

68

Autentificacin y certificados digitales Utilizando la configuracin anterior, al acceder al directorio private el mensaje que nos muestra es el siguiente:

Figura 15: Autentificacin Basic.

4.3.1.2 Creacin de un usuario. Para crear los usuarios para el mtodo de autenticacin Basic, se usa la aplicacin htpasswd:
cd /usr/local/apache2/bin

./htpasswd /usr/local/apache2/conf/passwd_basic admin De esta forma se aade el usuario admin. al fichero de claves /usr/local/apache2/conf/passwd_basic. El programa pedir la clave y luego la vuelve a preguntar para confirmarla. Si el fichero no existe (para la primera vez), es necesario lanzar el comando con la opcin -c:
./htpasswd -c /usr/local/apache2/conf/passwd_basic admin

Tambin se puede especificar la clave en la lnea de comandos, a continuacin del nombre. En este caso se tendr que utilizar la opcin -b:
./htpasswd -b /usr/local/apache2/conf/passwd_basic admin laclave

Si se ejecuta el comando sin argumentos, obtendremos la ayuda de las posibles opciones. 4.3.1.3 Creacin de un grupo. Para especificar los grupos se debe crear un fichero de texto con el siguiente formato para cada lnea: nombreGrupo: user1 user2 user3 ... Seguidamente se usa la directiva AuthGroupFile para indicar la ruta completa donde se encuentra el fichero que se ha creado con la definicin de los grupos:
<Directory "/usr/local/apache2/htdocs/private">

69

Captulo 4
AuthName "privatefiles" AuthType Basic AuthUserFile /usr/local/apache2/conf/passwd_basic AuthGroupFile /usr/local/apache2/conf/ficherogrupos Require group nombregrupo </Directory>

Cada usuario del grupo se aadir al fichero de claves tal y como se describi en el apartado anterior. 4.3.2 Autentificacin HTTP Digest. Para este modo de autenticacin se utiliza el mdulo mod_auth_digest. Este mtodo tiene la gran ventaja de que el usuario y la clave van cifradas del cliente al servidor. Pero tiene el inconveniente de que se puede encontrar con versiones antiguas de navegadores, que no lo soporten. 4.3.2.1 Configuracin de httpd.conf En el fichero /usr/local/apache2/conf/httpd.conf basta con aadir las siguientes lneas:
<Directory "/usr/local/apache2/htdocs/protegido"> AuthName "privatefiles" AuthType Digest AuthDigestFile /usr/local/apache2/conf/passwd_digest Require valid-user </Directory>

Se puede apreciar que es prcticamente igual que cuando se usa el mtodo Basic. Ha cambiado: AuthName: esta vez se indica que el mtodo a usar es Digest. AuthDigestFile: esta directiva sustituye a AuthUserFile, pero tiene la misma finalidad: especificar donde se encuentra el fichero de claves. Hay que tener presente que el fichero de claves tiene que ser distinto que el que se usa con el mtodo Basic, ya que tiene formatos diferentes. 4.3.2.2 Creacin de un usuario. Para crear los usuarios para el mtodo de autenticacin Digest, se usa la aplicacin htdigest. Por ejemplo:
cd /usr/local/apache2/bin ./htdigest admin /usr/local/apache2/conf/passwd_digest privatefiles

De esta forma se aade el usuario admin. al fichero de claves /usr/local/apache2/conf/passwd_digest. El programa pedir la clave y luego la volver a preguntar para confirmarla. Se puede ver que en la lnea de comandos se ha introducido como segundo parmetro privatefiles. Este parmetro debe coincidir exactamente con el nombre del dominio de

70

Autentificacin y certificados digitales autenticacin que se ha especificado con la directiva AuthName. Es decir, cuando se aade un usuario, se hace a un dominio de autenticacin concreto. De forma que si con la directiva Require se especifica valid-user, se consideran slo usuarios vlidos los que pertenecen al dominio de autenticacin especificado en AuthName. Si el fichero no existe (para la primera vez), es necesario lanzar el comando con la opcin -c:
./htpasswd admin -c /usr/local/apache2/conf/passwd_digest privatefiles

Si se ejecuta el comando sin argumentos, se obtendr la ayuda de las posibles opciones. 4.4 Firma digital.

Dos matemticos de la Universidad de Standford y otros estudiosos del Instituto Tecnolgico de Massachussets, descubrieron que aplicando conceptos matemticos era posible autentificar la informacin digital. A este conjunto de frmulas se le denomin Criptografa de Llave Pblica y con ello cobraban especial importancia trminos como la confidencialidad, referente a la capacidad de mantener accesible un documento electrnico a determinadas personas, y la autenticidad, que determina el compromiso de un individuo sobre el contenido del documento electrnico. Ambos conceptos, por tanto, se solucionaban mediante una firma escrita en un documento tradicional. Sin embargo, con la aparicin del documento electrnico, se haca necesario garantizar la confidencialidad y la autenticidad mediante tcnicas de firma digital. La firma digital es una herramienta tecnolgica que permite garantizar la autora e integridad de los documentos digitales, posibilitando que stos gocen de una caracterstica que nicamente era propia de los documentos en papel, no implica asegurar la confidencialidad del mensaje, un documento firmado digitalmente puede ser visualizado por otras personas, al igual que cuando se firma de forma escrita. Posee caractersticas tcnicas y normativas, esto significa que existen procedimientos tcnicos que permiten la creacin y verificacin de firmas digitales, y existen documentos normativos que respaldan el valor legal. Desde el punto de vista criptogrfico, los requisitos que debe cumplir la firma digital son los siguientes: Debe ser fcil de generar. Debera ser irrevocable, no rechazable por el firmante. Debera de ser nica, slo el emisor debera ser capaz de generarla. Debe ser fcil de reconocer por cualquier receptor de un mensaje. Debe depender del mensaje y del emisor.

La firma digital est formada por una serie de caracteres elaborados por un sistema informtico, que se basa en algoritmos matemticos. La firma digital emplea un mtodo de encriptacin que adjudica una clave pblica y otra privada a cada sujeto. La clave pblica es conocida por los usuarios de cada operacin. Para firmar electrnicamente un documento, el software del firmante aplica un algoritmo llamado hash sobre el texto. As, se obtiene un extracto especfico para ese mensaje. El extracto 71

Captulo 4 conseguido se cifra por medio de la clave privada del autor. Y se obtiene el mensaje final cifrado con la firma digital. El receptor del mensaje slo tiene que aplicar la clave pblica para descifrar el mensaje. 4.4.1 Funcionamiento de la firma digital. El fundamento de las firmas electrnicas es la criptografa, disciplina matemtica que no slo se encarga del cifrado de textos para lograr su confidencialidad, protegindolos de ojos indiscretos, sino que tambin proporciona mecanismos para asegurar la integridad de los datos y la identidad de los participantes en una transaccin. El cifrado consiste en transformar un texto en claro (inteligible por todos) mediante un algoritmo en un texto cifrado, gracias a una informacin secreta o clave de cifrado, que resulta ininteligible para todos excepto el legtimo destinatario del mismo. Se distinguen dos mtodos generales de cifrado: Cifrado simtrico: cuando se emplea la misma clave en las operaciones de cifrado y descifrado, se dice que el sistema es simtrico o de clave secreta. Estos sistemas son mucho ms rpidos que los de clave pblica, y resultan apropiados para el cifrado de grandes volmenes de datos. sta es la opcin utilizada para cifrar el cuerpo de los mensajes en el correo electrnico o los datos intercambiados en las comunicaciones digitales. Para ello se emplean algoritmos como IDEA, RC5, DES, TRIPLE DES, etc. Cifrado asimtrico: cuando se utiliza una pareja de claves para separar los procesos de cifrado y descifrado, se dice que el sistema es asimtrico o de clave pblica. Una clave, la privada, se mantiene secreta, mientras que la segunda clave, la pblica, es conocida por todos. De forma general, las claves pblicas se utilizan para cifrar y las privadas, para descifrar. El sistema posee la propiedad de que a partir del conocimiento de la clave pblica no es posible determinar la clave privada ni descifrar el texto con ella cifrado. Los sistemas de clave pblica, aunque ms lentos que los simtricos, resultan adecuados para los servicios de autenticacin, distribucin de claves de sesin y firmas digitales. Se utilizan los algoritmos de RSA, Diffie-Hellman, etc.

En general, el cifrado asimtrico se emplea para cifrar las claves de sesin utilizadas en el documento, de modo que puedan ser transmitidas sin peligro a travs de la red junto con el documento cifrado, para que en recepcin ste pueda ser descifrado. La clave de sesin se cifra con la clave pblica del destinatario del mensaje, que aparecer normalmente en una libreta de claves pblicas. El cifrado asimtrico se emplea tambin para firmar documentos y autentificar entidades. En principio, bastara con cifrar un documento con la clave privada para obtener una firma digital segura, puesto que nadie excepto el poseedor de la clave privada puede hacerlo. Posteriormente, cualquier persona podra descifrarlo con su clave pblica, demostrndose as la identidad del firmante. 4.4.2 Autoridades de certificacin. Fbrica Nacional de Moneda y Timbre [23] La FNMT se constituye como la autoridad publica de Certificacin Espaola. Sus certificados son utilizados para la relacin con la administracin pblica. La Agencia Tributaria es un importante exponente de la utilidad del certificado emitido por la FNMT: la declaracin de la renta es posible presentarla telemticamente gracias a esta iniciativa. El nmero de 72

Autentificacin y certificados digitales administraciones que utilizan los certificados de la Fbrica para las relaciones con sus administrados aumentan permanentemente [24]. ACE (Agencia de Certificacin electrnica) [25]. ACE centra su actividad en proporcionar servicios de confianza que garanticen la seguridad de las transacciones electrnicas, con los subsiguientes ahorros de costes, disminucin de tiempo y de recursos utilizados en tales gestiones. Su orientacin se dirige al sector empresarial. FESTE [26]. El Patronato de FESTE est formado por el Consejo General del Notariado, el Consejo General de la Abogaca y la Universidad de Zaragoza. Los distintos certificados emitidos por FESTE van desde los certificados notariales, a los certificados WEB o los certificados corporativos para su uso por instituciones privadas. IPSCA [27]. Centra sus actividades en los servicios de Certificacin Digital en los que se incluye la emisin de certificados (Servidor, WAP, Firma de Cdigo,...), formacin, soporte y consultora. Siendo su rea de actuacin ms destacada, la emisin de Certificados de Servidor Seguro para comercio electrnico, actuando como una tercera parte que verifica, autentica y certifica identidades sobre Internet. Por medio de la promocin anunciada por Microsoft, ipsCA pone gratuitamente a disposicin de los usuarios de Office XP un certificado personal del tipo B1 para su utilizacin en el entorno de firma proporcionado por MS Office XP. El objetivo de Microsoft con esta iniciativa es facilitar el acceso a este tipo de tecnologas, acercndolas al usuario final. CAMERFIRMA. Camerfirma es la autoridad de certificacin digital de las Cmaras de Comercio espaolas adems de tener experiencia en servicios de outsourcing de Entidades de Certificacin. Actualmente, Camerfirma est participado por el Consejo Superior de Cmaras, y por tres importantes entidades financieras como son Banesto, Bancaja o Caixa Galicia.

La autoridad de certificacin ms importante en Espaa es la Casa de la Moneda.

Figura 16: Fbrica nacional de moneda y timbre.

73

Captulo 4 4.5 Certificados digitales.

Los Certificados electrnicos son documentos digitales que sirven para asegurar la veracidad de la Clave Pblica perteneciente al propietario del certificado de la entidad [28], con la que se firman digitalmente documentos que puedan proporcionar las ms absolutas garantas de seguridad respecto a cuatro elementos fundamentales: La autentificacin del usuario/entidad (es quien asegura ser). La confidencialidad del mensaje (que slo lo podr leer el destinatario). La integridad del documento (nadie los ha modificado). El no repudio (el mensaje una vez aceptado, no puede ser rechazado por el emisor).

Es, por tanto, muy importante estar realmente seguros de que la Clave Pblica que manejamos para verificar una firma o cifrar un texto, pertenece realmente a quien creemos que pertenece. Sera nefasto cifrar un texto confidencial con una Clave Pblica de alguien, que no es nuestro intencionado receptor. Si se hiciera, la persona a quin pertenece la clave pblica con la que se ha cifrado, podra conocer perfectamente el contenido de este, si tuviera acceso al texto cifrado. De la misma forma, si se manejara una clave pblica de alguien que se hace pasar por otro, sin poderlo detectar, podramos tomar una firma fraudulenta por vlida y creer que ha sido realizada por alguien que realmente no es quien dice ser. Otro dato a tener en cuenta, es que un certificado no puede falsificarse ya que van firmados por la Autoridad de Certificacin. Si algn dato se modificase la firma no correspondera con el resumen (hash) que se obtendra de los datos modificados. Por tanto al utilizarlo, el software que los gestiona dara un menaje de invalidez. Un certificado electrnico contiene una clave pblica, y una firma digital. Para su correcto funcionamiento, los certificados contienen adems la siguiente informacin: Un identificador del propietario del certificado, que consta de su nombre, sus apellidos, su direccin e-mail, datos de su empresa como el nombre de la organizacin, departamento, localidad, provincia y pas, etc. Otro identificador de quin asegura su validez, que ser una Autoridad de Certificacin. Dos fechas, una de inicio y otra de fin del perodo de validez del certificado, es decir, cundo un certificado empieza a ser vlido y cundo deja de serlo, fecha a partir de la cual la clave pblica que se incluye en l, no debe utilizarse para cifrar o firmar. Un identificador del certificado o nmero de serie, que ser nico para cada certificado emitido por una misma Autoridad de Certificacin. Esto es, identificar inequvocamente a un certificado frente a todos los certificados de esa Autoridad de Certificacin. Firma de la Autoridad de Certificacin de todos los campos del certificado que asegura la autenticidad del mismo. Los navegadores actuales gestionan y almacenan las Claves Pblicas de los certificados que permiten al emisor de mensajes firmarlos y encriptarlos utilizando las claves pblicas de los destinatarios. Para estar completamente seguros en cualquier transaccin es necesario utilizar, al menos dos tipos de certificados, uno general para comunicaciones seguras (X.509) y otro especfico para transacciones econmicas (SET). Adems de servir como 74

Autentificacin y certificados digitales mecanismo confiable y seguro de identificacin en la red, su certificado de identidad digital le permite disfrutar de otra serie de beneficios, puede enviar y recibir informacin confidencial, asegurndose que slo el remitente pueda leer el mensaje enviado, puede acceder a sitios Web de manera segura con su identidad digital, sin tener que usar el peligroso mecanismo de passwords; puede firmar digitalmente documentos, garantizando la integridad del contenido y autora del documento, y todas aquellas aplicaciones en que se necesiten mecanismos seguros para garantizar la identidad de las partes y confidencialidad e integridad de la informacin intercambiada, como comercio electrnico, declaracin de impuestos, pagos provisionales, uso en la banca, etc. Aplicaciones de Internet como navegadores o programas para correo electrnico, ya traen incorporados los elementos que les permiten utilizar los certificados de identidad digital, por lo que los usuarios no necesitan instalar ningn software adicional.

La Autoridad de Certificacin (CA), es quien firma digitalmente los certificados, asegurando su integridad y certificando la relacin existente entre la Clave Pblica contenida y la identidad del propietario. La firma de la CA es la que garantiza la validez de los certificados. La confianza de los usuarios la Autoridad de Certificacin es fundamental para el buen funcionamiento del servicio. El entorno de seguridad (control de acceso, cifrado, etc.) de la CA ha de ser muy fuerte, en particular en lo que respecta a la proteccin de la Clave Privada que utiliza para firmar sus emisiones. Si este secreto se viera comprometido, toda la infraestructura de Clave Pblica (PKI) se vendra abajo. Las autoridades de certificacin pueden realizan las siguientes tareas: Emisin de los certificados de usuarios registrados y validados por la Autoridad de Registro (RA). Revocacin de los certificados que ya no sean vlidos (CRL - lista de certificados revocados). Un certificado puede ser revocado por que los datos han dejado de ser vlidos, la clave privada ha sido comprometida o el certificado ha dejado de tener validez dentro del contexto para el que haba sido emitido. Renovacin de certificados. Publicar certificados en el directorio repositorio de certificados.

La emisin de certificados y la creacin de claves privadas para firmas digitales acostumbra a depender de una pluralidad de entidades que estn jerarquizadas de una manera que las de nivel inferior obtienen su capacidad de certificacin de otras entidades de nivel superior. Finalmente, en la cspide de la pirmide suele hallarse una autoridad certificadora, que puede pertenecer al Estado. Los certificados indican la autoridad certificadora que lo ha emitido, identifican al firmante del mensaje o transaccin, contienen la clave pblica del firmante, y contienen a su vez la firma digital de la autoridad certificadora que lo ha emitido. De esta manera, las partes que intervienen en una transaccin aportan como credencial los certificados de su correspondiente entidad certificadora. Para llegar a ser una entidad certificadora deber mediar una solicitud a una autoridad certificadora de nivel superior, que podr denegar la licencia si el solicitante no ofrece la fiabilidad o los conocimientos necesarios, ni cumple los requisitos establecidos en la ley. 75

Captulo 4

Figura 17: Certificados digitales.

76

5
5.1 Servidores Web.

INTRODUCCIN A LOS SERVIDORES Web: EL CASO APACHE.

Un servidor Web es un programa que implementa el protocolo HTTP (hypertext transfer protocol). Este protocolo est diseado para transferir lo que llamamos hipertextos, pginas Web o pginas HTML (hypertext markup language): textos complejos con enlaces, figuras, formularios, botones y objetos incrustados como animaciones o reproductores de sonidos [29]. Sin embargo, el hecho de que HTTP y HTML estn ntimamente ligados no debe dar lugar a confundir ambos trminos. HTML es un formato de archivo y HTTP es un protocolo. Cabe destacar el hecho de que la palabra servidor identifica tanto al programa como a la mquina en la que dicho programa se ejecuta. Existe, por tanto, cierta ambigedad en el trmino, aunque no ser difcil diferenciar a cul de los dos nos referimos en cada caso. Un servidor Web se encarga de mantenerse a la espera de peticiones HTTP llevada a cabo por un cliente HTTP que solemos conocer como navegador. El navegador realiza una peticin al servidor y ste le responde con el contenido que el cliente solicita. A modo de ejemplo, al teclear http://juanmabultaco.blogspot.com en nuestro navegador, ste realiza una peticin HTTP al servidor de dicha direccin. El servidor responde al cliente enviando el cdigo HTML de la pgina, el cliente, una vez recibido el cdigo, lo interpreta y lo muestra en pantalla. Como vemos con este ejemplo, el cliente es el encargado de interpretar el cdigo HTML, es decir, de mostrar las fuentes, los colores y la disposicin de los textos y objetos de la pgina, el servidor tan slo se limita a transferir el cdigo de la pgina sin llevar a cabo ninguna interpretacin de la misma. Sobre el servicio Web clsico podemos disponer de aplicaciones Web. stas son fragmentos de cdigo que se ejecutan cuando se realizan ciertas peticiones o respuestas HTTP. Hay que distinguir entre: Aplicaciones en el lado del cliente: el cliente Web es el encargado de ejecutarlas en la mquina del usuario. Son las aplicaciones tipo Java o Javascript, el servidor proporciona el cdigo de las aplicaciones al cliente y ste, mediante el navegador, las ejecuta. Es necesario, por tanto, que el cliente disponga de un navegador con capacidad para ejecutar aplicaciones (tambin llamadas scripts). Aplicaciones en el lado del servidor: el servidor Web ejecuta la aplicacin, sta, una vez ejecutada, genera cierto cdigo HTML, el servidor toma este cdigo recin creado y lo enva al cliente por medio del protocolo HTTP.

Las aplicaciones de servidor suelen ser la opcin por la que se opta en la mayora de las ocasiones para realizar aplicaciones Web. La razn es que, al ejecutarse sta en el servidor y no en la mquina del cliente, ste no necesita ninguna capacidad adicional, como s ocurre en el caso de querer ejecutar aplicaciones javascript o java. As pues, cualquier cliente dotado de un navegador Web bsico puede utilizar este tipo de aplicaciones. Este proyecto en un principio se empez realizando bajo Windows pero a medida que se fueron viendo temas sobre seguridad, criptografa se apreci que lo ms idneo

Captulo 5 para este proyecto era trabajar bajo Linux, por eso se cambi la base de datos, apache... Entre las caractersticas ms relevantes de este cambio cabe destacar que en la actualidad la mayor parte de los usuarios de un computador utilizan el sistema operativo Windows en cualquiera de sus versiones como base, esto sucede en realidad porque la mayora de las mquinas que compramos vienen con este tipo de software, sin embargo dependiendo del rea en el que se desempee el profesional sern las necesidades de seguridad, desempeo y herramientas que debe tener, por ejemplo para un diseador grfico ser mejor utilizar un ambiente basado en mac y para una secretaria que solamente utiliza la mquina como procesador de texto puede tener nica y exclusivamente un sistema basado incluso en Windows 3.1 o windows9x, sin embargo para un desarrollador de software o alguna empresa que busque seguridad en su red ser mejor tener alguna distribucin de Unix , como puede ser Linux, RedHat, PPP, Mandrake , hace algunos aos eran muy pocos los usuarios de otras plataformas distintas a Windows, y aunque la mayor parte todava utiliza como default Windows, cada vez son ms los usuarios y empresas que migran a otras plataformas. Los sistemas operativos se definen como el conjunto de procedimientos que permiten el control de los recursos de una instalacin para el procesamiento de datos. Dichos recursos comprenden el equipo, los programas, los datos y el o los operadores. Sin embargo, por lo general se define un sistema operativo como a un programa que supervisa la operacin de otros programas. Estos programas son de tres tipos bsicos: control de tareas, sistema de control de entrada-salida y programa de procesamiento. Linux esta basado en Software Libre (Free Software) y, ms recientemente Software de fuentes abiertas (Open Source Software), es decir, en vez de que el cdigo de el sistema o de cada uno de los programas sea un secreto celosamente guardado por la empresa que lo produce, ste es puesto a disposicin del pblico, para que puedan modificar, mejorar o corregir los programas, logrando un tiempo de desarrollo, respuesta a incidentes y soporte que ninguna compaa comercial ha logrado igualar. Bajo este esquema estn desarrollados tanto Linux como la mayor parte de los programas que con l podemos correr, as como otros sistemas operativos. La siguiente tabla nos muestra una comparativa de la seguridad entre Linux y Windows [30]: LINUX WINDOWS Seguridad en los archivos: A cada Seguridad en los archivos: Cada archivo se puede asignar varios grupos de archivo tiene definida la seguridad para Dueo, Grupo y Otros. Cada uno de ellos atributos basados en usuarios o grupos, con tiene permisos de lectura, escritura y permisos de creacin, lectura, escritura, ejecucin (rwxrwxrwx). Sabiendo manejar remocin, y ejecucin, creando fcilmente listas de control de acceso (ACLs). este sistema, presenta una gran flexibilidad. Adems de esto, tiene la caracterstica del SUID bit, que permite que un archivo se ejecute con la identidad de un usuario determinado diferente del usuario que lo ejecuta. Maneja a todos los niveles del sistema No existe realmente el concepto de un sistema verdadero de multiusuario, multiusuario, aunque ha habido intentos de permitiendo nativamente que se puedan lograrlo, nunca han sido exitosos. Esto es, en conectar simultneamente diferentes usuarios, buena parte, por una deficiente proteccin y manteniendo los recursos que ocupan cada de memoria y recursos, y por utilizar un 78

Introduccin a los servidores Web: El caso Apache uno de ellos perfectamente aislados de los procesos de otros usuarios. diseo de sistema operativo como servidor de archivos nicamente, no como servidor de aplicaciones.

TCP/IP fue desarrollado sobre UNIX, El subsistema de TCP/IP para por tanto su implementacin es la ms segura Windows fue creado para seguir, en la y ampliamente probada. Si una operacin medida de lo posible, los estndares, sin ilegal llega a bloquear el subsistema de TCP, embargo, en caso de haber operaciones este tpicamente se reestablece tan pronto esta ilegales, es muy raro que el sistema pueda operacin termina. continuar operando, pues casi siempre el resultado es que Windows cae en la "pantalla azul de la muerte", situacin tras la cual hay que reiniciar forzosamente el sistema a mano. Al ser Linux software libre, no pasan Windows est basado en el esquema normalmente ms de un par de horas entre de "seguridad a travs de la oscuridad": El que es encontrado un error y que este es usuario no tiene acceso al cdigo, por tanto corregido y la correccin publicada. Esto no le es tan fcil encontrar errores. Sin hace que el impacto de cualquier problema de embargo, cuando estos llegan a ser seguridad sea mnimo. encontrados no aparece un parche sino hasta Desde 1996, cuando fue liberado el Kernel meses despus, con el service pack (ncleo) 2.0.0, se liberaron 38 revisiones a correspondiente. Desde 1996, fecha en que este. El Kernel 2.2.0 fue liberado a principios apareci Windows NT 4.0, slo han sido de marzo de 1999, y (a fines de 1999) ya va publicados 5 service packs - el ltimo de en su decimosegunda revisin. ellos midiendo ms de 30MB. Un caso muy notorio de los problemas que puede causar la seguridad a travs de la oscuridad es el que se dio a conocer el 14 de abril del 2000, tras ms de dos aos de existencia - En todos los servidores Windows NT con extensiones de Frontpage 98 viene una puerta trasera secreta, con la contrasea Netscape enigeers are weenies, afectando a millones de servidores en todo el mundo.
Tabla 1: Comparativa Seguridad.

Tambin cabe destacar que Windows es ms fcil de manejar que Linux, pero de hay que haya distintas versiones de Linux que hacen esta tarea algo ms fcil, entre estas cabe destacar: Linuxconf, GNOME, KDE, o GNUstep. Estas son algunas razones de porque se ha elegido Linux, pero tambin hay otras como son el rendimiento, el costo, la confiabilidad, la funcionalidad, fiabilidad pero que no se van a mencionar ya que este proyecto esta enfocado en temas de seguridad y las dems caractersticas no son relevantes para este tema. 5.2 Servidor Web: caso Apache.

El trfico WWW es uno de los mayores componentes del uso de Internet hoy en da. Existen una variedad de servidores WWW bastantes populares, siendo el ms famoso Apache con ms del 50% del mercado [31].

79

Captulo 5 La seguridad, ya sea en Apache o en cualquier otro servidor, es un tema bastante amplio y muy serio. Por defecto Apache se ejecuta como el usuario nobody, lo cual le da muy poco acceso al sistema. En general, la mayora de los servidores WWW simplemente toman datos del sistema y los envan fuera, los mayores peligros no vienen del Apache sino de programas descuidados que se ejecutan va Apache (CGIs, server side includes, etc.). El servidor Apache es un software que esta estructurado en mdulos. La configuracin de cada mdulo se hace mediante la configuracin de las directivas que estn contenidas dentro del mismo. Los mdulos del Apache se pueden clasificar en tres categoras: Mdulos Base: Mdulo con las funciones bsicas del Apache Mdulos Multiproceso: son los responsables de la unin con los puertos de la mquina, aceptando las peticiones y enviando a los hijos a atender a las peticiones. Mdulos Adicionales: Cualquier otro mdulo que le aada una funcionalidad al servidor. Las funcionalidades ms elementales se encuentran en el mdulo base, siendo necesario un mdulo multiproceso para manejar las peticiones. Se han diseado varios mdulos multiproceso para cada uno de los sistemas operativos sobre los que se ejecuta el Apache, optimizando el rendimiento y rapidez del cdigo. El resto de funcionalidades del servidor se consiguen por medio de mdulos adicionales que se pueden cargar. Para aadir un conjunto de utilidades al servidor, simplemente hay que aadirle un mdulo, de forma que no es necesario volver a instalar el software. 5.2.1 Comprobacin del entorno. Antes de empezar se debe comprobar que el servidor Apache est compilado con los mdulos de seguridad que vamos a utilizar. Para ver listar los mdulos ejecutamos:
# cd /usr/local/apache2/bin # ./httpd -l

Mdulos compilados: core.c: Funciones bsicas del Apache que estn siempre disponibles. mod_access.c: proporciona control de acceso basndose en el nombre del host del cliente, su direccin IP u otras caractersticas de la peticin del cliente. mod_auth.c: autentificacin de usuario utilizando ficheros de texto. mod_auth_digest.c: autentificacin de usuario utilizando MD5. mod_include.c: Documentos HTML generados por el servidor (Server Side Includes). mod_log_config.c: registro de las peticiones hechas al servidor. mod_env.c: modificacin del entorno que se enva a los scripts CGI y las pginas SSI.

80

Introduccin a los servidores Web: El caso Apache mod_setenvif.c: permite la configuracin de las variables de entorno basndose en las caractersticas de la peticin. mod_ssl.c: criptografa avanzada utilizando los protocolos Secure Sockets Layer y Transport Layer Security. prefork.c: Implementa un servidor sin hilos. http_core.c mod_mime.c: asocia las extensiones de peticiones de los ficheros con el comportamiento del fichero (manejadores y filtros) y contenido (tipos mime, idioma, juego de caracteres y codificacin). mod_status.c: proporciona informacin en la actividad y rendimiento del servidor. mod_autoindex.c: muestra los contenidos de un directorio automticamente, parecido al comando ls de Unix. mod_asis.c: envo de ficheros que tienen sus propias cabeceras http. mod_cgi.c: Ejecucin de Scritps CGI. mod_negotiation.c: se proporciona para la negociacin del contenido. mod_dir.c: Proporcionado para redirecciones y para servir los ficheros de listado de directorios. mod_imap.c: proceso de imgenes en el lado del servidor. mod_actions.c: este mdulo se utiliza para ejecutar Scripts CGI, basndose en el tipo de medio o el mtodo de peticin. mod_userdir.c: directorios especficos para usuarios. mod_alias.c: proporcionado para mapear diferentes partes del sistema de ficheros del servidor en el rbol de documentos del servidor, y para redireccin de URL's. mod_so.c: carga del cdigo ejecutable y los mdulos al iniciar o reiniciar el servidor. En la lista deben aparecer: mod_auth.c, mod_auth_digest.c, mod_ssl.c, mod_auth.c. Si los mdulos mod_auth.c y mod_auth_digest.c no aparecen tendremos que recompilar Apache. 5.2.2 Instalacin de apache en Linux. Para la instalacin del servidor Apache se deben seguir los siguientes pasos: Se comprueba que estn instalados los siguientes paquetes: o flex o libxml2 o libxml2-devel o ncurses o ncurses-devel o mysql-devel

81

Captulo 5 o gcc-c++ Se baja el Apache de http://httpd.apache.org/download.cgi, para este proyecto se ha bajado el Apache httpd-2.0.52.tar.gz. Se descomprime el paquete en una carpeta con el comando:
tar -zxvf httpd-2.0.52.tar.gz

Se entra como root a la carpeta donde se ha descomprimido apache y se configura el cdigo fuente para que apache sea instalado en el directorio /usr/local/apache2, para ello:
./configure --prefix=/usr/local/apache2

prefix indica la ruta donde se va a instalar el servidor Apache. Una vez terminada la configuracin del cdigo fuente se pasa a crear los binarios, si da algn error es por que falta alguna librera pero si se aaden todas las libreras anteriores no habr ningn problema. Para crear estos binarios se ejecuta:
make

Cuando terminan de crearse los binarios, se deben instalar. Estos binarios se instalarn en la ruta que se ha dado a prefix. Se utiliza la funcin:
make install

Seguidamente se mover todo el cdigo fuente de Apache 2 (httpd-2.0.52, carpeta temporal) al directorio de instalacin (/usr/local/apache2), y se renombrar el directorio a fuente o source, esto es esencial cuando se instalan Mdulos en Apache. Una vez cambiado el nombre se copia con:
cp -r fuente /usr/local/apache2/

Llegado a este punto ya tenemos el servidor Apache instalado: o Para arrancarlo se utiliza:
/usr/local/apache2/bin/apachectl start

o Para pararlo se utiliza:


/usr/local/apache2/bin/apachectl stop

o Para reiniciarlo se utiliza:


/usr/local/apache2/bin/apachectl restart

Ahora queda modificar el archivo httpd.conf, el cual se encuentra en /usr/local/apache2/conf/ y se pone lo siguiente:
ServerName localhost DocumentRoot "/usr/local/apache2/htdocs": Directorio donde se aloja la

Web.
<Directory "/usr/local/apache2/htdocs">: Se pone lo mismo que en

DocumentRoot.
DirectoryIndex index.html, index.htm, index.php, home.html: indica el

documento que se carga al acceder al mismo.

82

Introduccin a los servidores Web: El caso Apache Para comprobar si el servidor funciona se pone en el navegador 127.0.0.1 o localhost y aparecer la pgina que se ha puesto en el DocumentRoot, sino hemos colocado ninguna pgina aparecer un mensaje de bienvenida.

Figura 18: Mensaje del funcionamiento de apache.

5.2.3 Configurar apache para seguridad Para activar el servidor seguro, necesita, como mnimo, tener instalados los siguientes paquetes: apache: El paquete apache contiene el demonio httpd y utilidades relacionadas, ficheros de configuracin, iconos, mdulos de Apache, pginas man y otros ficheros usados por el servidor Web Apache. mod_ssl: El paquete mod_ssl incluye el mdulo mod_ssl, que proporciona criptografa fuerte para el servidor Web Apache a travs de los protocolos SSL (Secure Sockets Layer) y TLS (Transport Layer Security). openssl: El paquete openssl contiene el kit de herramientas OpenSSL. Dicho kit implementa los protocolos SSL y TLS y tambin incluye una librera criptogrfica de propsito general. mm: El paquete mm contiene la librera MM, la cual permite mltiples instancias del demonio httpd para compartir informacin de estado.

La siguiente tabla muestra la localizacin de los paquetes de servidor seguro y paquetes adicionales relativos a la seguridad. Tambin nos dice si cada paquete es opcional o no para la instalacin de un servidor Web seguro:

83

Captulo 5 Nombre del paquete Apache Mod_ssl openssl mm Apache-devel Apache-manual openssh Openssh-askpass Openssh-askpass-gnome Openssh-clients Openssh-server Openssl-devel stunnel Localizado en el Grupo Entorno de Sistema/Demonio Entorno de Sistema/Demonio Entorno de Sistema/Libreras Entorno de Sistema/Libreras Desarrollo/Libreras Documentacin Aplicaciones/Internet Aplicaciones/Internet Aplicaciones/Internet Aplicaciones/Internet Entorno de Sistema/Demonio Desarrollo/Libreras Aplicaciones/Internet Opcional? No No No No S S S S S S S S S

Tabla 2: Paquetes del servidor seguro.

5.2.3.1 El protocolo SSL. El protocolo SSL proporciona sus servicios de seguridad cifrando los datos intercambiados entre el servidor y el cliente con un algoritmo de cifrado simtrico [32], tpicamente el RC4 o IDEA, y cifrando la clave de sesin de RC4 o IDEA mediante un algoritmo de cifrado de clave pblica, tpicamente el RSA. La clave de sesin es la que se utiliza para cifrar los datos que vienen y van al servidor seguro. Se genera una clave de sesin distinta para cada transaccin, lo cual permite que aunque sea reventada por un atacante en una transaccin dada, no sirva para descifrar futuras transacciones. MD5 se usa como algoritmo de hash. Antes de hablar ms sobre SSL se definen algunos trminos: RSA Private Keys: fichero digital que se puede usar para descifrar mensajes que se mandan. Tiene una parte pblica (que se distribuye con el certificado), que permite a los usuarios cifrar los mensajes que manda. Este mecanismo de clave asimtrica asegura que los mensajes cifrados con la clave pblica (que se distribuyen a muchos usuarios) slo pueden ser descifrados con la clave privada. Certificate Signing Request (CSR): es un fichero digital que contiene la clave pblica y el nombre. Certification Authority (CA): entidad de confianza encargada de firmar certificados (CSR). Certificate (CRT): Una vez la CA ha firmado el CSR, obtenemos un CRT. Este fichero contiene la clave pblica, el nombre, el nombre de la CA, y est firmado digitalmente por la CA. De esta forma otras entidades pueden verificar esta firma para comprobar la veracidad del certificado. Es decir, si se obtiene un certificado que esta firmado por una CA que se considera de confianza, se puede confiar tambin en la autenticidad del certificado. 84

Introduccin a los servidores Web: El caso Apache Se puede ver que hay varias posibilidades para configurar SSL. Por ejemplo: Cualquier cliente puede conectarse a una URL determinada, usando https. En este caso el servidor enviar su certificado al cliente para que este pueda descifrar la informacin que le llega del servidor y cifrar la que enva hacia l. Tambin se puede hacer que slo los clientes que tengan un determinado certificado puedan conectarse a una determinada URL. Otra posibilidad (la que se lleva a cabo en este proyecto) es combinar el primer ejemplo con las tcnicas de autenticacin que se han visto antes. De forma que cuando se intente acceder a una determinada URL usando https se trendr que autentificar primero. 5.2.3.2 Creacin de nuestra propia CA. Existen varias CAs que, previo pago, pueden firmar el CSR. Estas CAs son mundialmente conocidas de forma que cualquier cliente podr conectarse con confianza a el servidor. Un ejemplo de este tipo de entidades de certificacin puede ser VISA o VeriSign. En este caso, como se est probando, se crea una CA. Para facilitar este tipo de tareas el paquete openssl proporciona el script CA.sh (o CA.pl en Perl). Se ejecuta:
cd /usr/local/apache2 /usr/lib/ssl/misc/CA.sh -newca

Se har las siguientes preguntas: Nombre del certificado de la CA o que se pulse enter para crearlo. En este caso se pulsa enter para crear uno nuevo. Una pass phrase, que se vuelve a preguntar para confirmarla. Esta ser la clave para acceder a la clave privada (la clave privada se guarda cifrada). Se debera poner ms de una letra. Cierta informacin para aadir al certificado: cdigo del pas, provincia, localidad, nombre de la organizacin, de la unidad... Una vez finaliza la ejecucin del script se puede ver que en el directorio /usr/local/apache2 ha aparecido un nuevo directorio: demoCA. Este tiene la siguiente estructura:

85

Captulo 5

Figura 19: Estructura del directorio demoCA.

El fichero cacer.pem es el certificado de la CA, que luego se usar para firmar el certificado. Los subdirectorios estn vacos, a excepcin de private, donde se encuentra el fichero cakey.pem. Este fichero es la clave de la CA. 5.2.3.3 Creacin de nuestro CSR. Seguidamente se crea el CSR que debera firmar una autntica CA [33], en este proyecto se firmar con la CA que se ha creado en el punto anterior. Para esto se siguen los siguientes pasos: Se crea la clave para el servidor Apache (la clave ser triple-DES y en formato PEM): openssl genrsa -des3 -out server.key 1024 El comando pedir un pass phrase y la volver a preguntar para confirmarla. Se crea el CSR (estar en formato PEM), usando la clave generada en el punto anterior: openssl req -new -key server.key -out server.csr Lo primero que har ser pedir la pass phrase que se le puso a la clave en el punto anterior. Luego pedir los datos que se quieren aadir al certificado. Aqu es importante tener en cuenta que cuando pregunte por el Common Name se debe poner el nombre completo del dominio del servidor, por ejemplo, si se va a acceder usando https://www.foo.dom/, se tendr que poner www.foo.dom. Con esto se consigue generar el fichero server.csr.

86

Introduccin a los servidores Web: El caso Apache 5.2.3.4 Creacin de un CRT. El ltimo paso es firmar el CSR para conseguir el CRT. Para esto se vuelve a usar el script CA.sh. El problema que tiene este script es que trabaja con unos nombres fijos de ficheros, as que antes de ejecutarlo se tiene que renombrar el fichero server.csr.
ln -s server.csr newreq.pem CA.sh -signreq

Se pedir la pass phrase de la clave que se ha usado para generar el certificado de la CA. Se mostrar la informacin del certificado, y preguntar si se ha firmar el mismo. Por supuesto, se contestar que s. Preguntar si se quiere hacer comit de los certificados firmados, es decir si se confirma la operacin. De nuevo, se contestar que s. Habr generado el fichero newcert.pem. Este fichero se renombrar por server.crt.
mv newcert.pem server.crt

5.2.3.5 Configuracin apache. Para configurar apache lo primero que se debe hacer es poner los ficheros donde corresponde. mkdir conf/ssl.key
mkdir conf/ssl.crt mv server.key conf/ssl.key/ mv server.crt conf/ssl.crt/

Posteriormente se aade al fichero /usr/local/apache2/conf/httpd.conf:


<Directory "/usr/local/apache2/htdocs/private"> SSLRequireSSL AuthName "privatefiles" AuthType Basic AuthUserFile /usr/local/apache2/conf/passwd_basic Require valid-user </Directory>

Se puede ver que es la misma configuracin que se usa en el apartado 4.3.1. salvo que se ha aadido la directiva SSLRequireSSL. Esta directiva prohbe el acceso a no ser que sea HTTP sobre SSL (HTTPS). Con esto se consigue que para acceder al directorio /usr/local/apache2/htdocs/private sea obligatoriamente usando HTTPS, y previa autenticacin. Por ltimo slo queda arrancar Apache. Hay que tener en cuenta que para arrancar Apache con soporte SSL hay que utilizar:
/usr/local/apache2/bin/apachectl startssl

Se puede ver que al arrancar Apache pide una pass phrase. Esta es la que se usa al crear el certificado. Esto lo hace porque la clave esta guardada cifrada.

87

Captulo 5 Si se quiere evitar tener que escribir la pass phrase cada vez que se arranca Apache se puede guardar la clave sin cifrar, pero esto no es nada recomendable. Se puede tener un grave problema de seguridad. Para generar una clave sin cifrar se puede hacer:
cd /usr/local/apache2/conf/ssl.key/ openssl rsa -in server.key -out server.unencrypted.key

Luego es conveniente restringir los permisos al mximo.


chmod 400 server.unencrypted.key

Otra manera para no tener que escribir la pass phrase es usar la directiva SSLPassPhraseDialog exec: ... Donde se cambiarn los puntos suspensivos por un programa que saque por la salida estndar la pass phrase. Hay que tener en cuenta que este mtodo no tiene por que ser ms seguro que el anterior. En general no es recomendable ninguno de los dos para un sistema seguro. 5.2.3.6 Limpieza de archivos. Los ficheros que necesita Apache slo son: Clave: /usr/local/apache2/conf/ssl.key/server.key. Certificado firmado por la CA: /usr/local/apache2/conf/ssl.crt/server.crt. As que si se quiere se pueden borrar el resto de los archivos que se han generado para firmar el certificado.
cd /usr/local/apache2/ rm server.csr newreq.pem rm -Rf demoCA/

88

6
6.1

LENGUAJE DE PROGRAMACIN Web Y BASES DE DATOS.

Lenguaje de programacin Web php

Navegar por la Web en busca de informacin puede ser una experiencia aburrida o agradable, dependiendo de algunas caractersticas de las pginas Web, como su facilidad de uso, apariencia visual e interactividad con el usuario [34]. Si ha navegado por la Web recientemente, habr notado que el aspecto y funcionalidad de las pginas han sufrido un gran cambio. Ya pas la poca en la que una pgina se compona slo de algunas imgenes estticas e informacin de texto, actualmente, las pginas Web tienen mucho ms que ofrecer que slo contenidos llamativos o vistosos. Lo que ahora distingue a una pgina Web de otra, es el nivel de interaccin con el usuario y su dinamismo, afectando directamente a su popularidad. Algunos de los lenguajes de script ms famosos que hoy se usan para la Web son Perl, Tcl, Python y JavaScript. Sin embargo, un nombre que destaca sobre todos ellos es PHP. Se trata de un lenguaje relativamente simple y uno de los ms jvenes comparado con otros del mismo tipo. Hoy en da, la interaccin y el dinamismo se consideran las caractersticas ms importantes de una pgina Web, aparte obviamente de su viscosidad. Para incluir estas caractersticas en las pginas, los lenguajes de script deben centrar su atencin en las aplicaciones Web. PHP es un lenguaje para programar scripts del lado del servidor, que se incrustan dentro del cdigo HTML. Este lenguaje es gratuito y multiplataforma. Es el acrnimo de Hipertext Preprocesor, gratuito e independiente de plataforma, rpido, con una gran librera de funciones y mucha documentacin. Un lenguaje del lado del servidor es aquel que se ejecuta en el servidor Web, justo antes de que se enve la pgina a travs de Internet al cliente. Las pginas que se ejecutan en el servidor pueden realizar accesos a bases de datos, conexiones en red, y otras tareas para crear la pgina final que ver el cliente. El cliente solamente recibe una pgina con el cdigo HTML resultante de la ejecucin de la PHP. Como la pgina resultante contiene nicamente cdigo HTML, es compatible con todos los navegadores.

Figura 20: Esquema del funcionamiento de las pginas PHP.

Captulo 6 Una vez que ya se conoce el concepto de lenguaje de programacin de scripts del lado del servidor se puede hablar de PHP: se escribe dentro del cdigo HTML, lo que lo hace realmente fcil de utilizar, pero con algunas ventajas como su gratuidad, independencia de plataforma, rapidez y seguridad. Cualquiera puede descargar a travs de la pgina principal de PHP [35] y de manera gratuita, un mdulo que hace que el servidor Web comprenda los scripts realizados en este lenguaje. Es independiente de plataforma, puesto que existe un mdulo de PHP para casi cualquier servidor Web. Esto hace que cualquier sistema pueda ser compatible con el lenguaje y significa una ventaja importante, ya que permite portar el sitio desarrollado en PHP de un sistema a otro sin prcticamente ningn trabajo. PHP incorpora la potencia de los lenguajes relativamente antiguos, como Perl y Tcl, pero elimina sus debilidades: Es un lenguaje de script de cdigo abierto para servidores. Es independiente del sistema operativo y puede ser utilizado en cualquiera de ellos, incluyendo Microsoft Windows, Mac OS, Linux, HP-UX y Solaris. Utiliza una amplia gama de servidores Web, tales como Apache, Microsoft Internet Information Sever, Netscape e iPlanet. Se conecta a gran cantidad de bases de datos, como MySQL, Ingres, Sybase, Oracle, Base, Informix, FrontBase y Unix dbm. Una de las caractersticas que distingue a PHP es que proporciona soporte a los sitios Web de comercio electrnico que manejan bases de datos. El cdigo de PHP es ms simple que en otros lenguajes de script. Se puede utilizar para crear imgenes y ficheros de lectura/escritura, as como para enviar mensajes de correo electrnico. Para proporcionar estor servicios, PHP se sirve de bastantes protocolos, como http, POP3, SNMP, LDAP e IMAP.

PHP, en el caso de estar montado sobre un servidor Linux u Unix, es ms rpido que ASP, dado que se ejecuta en un nico espacio de memoria y esto evita las comunicaciones entre componentes COM que se realizan entre todas las tecnologas implicadas en una pgina ASP. Por ltimo se seala la seguridad, en este punto tambin es importante el hecho de que en muchas ocasiones PHP se encuentra instalado sobre servidores Unix o Linux, que son de sobra conocidos como ms veloces y seguros que el sistema operativo donde se ejecuta las ASP, Windows NT o 2000. Adems, PHP permite configurar el servidor de modo que se permita o rechacen diferentes usos, lo que puede hacer al lenguaje ms o menos seguro dependiendo de las necesidades de cada cual. Fue creado originalmente en 1994 por Rasmus Lerdorf, pero como PHP est desarrollado en poltica de cdigo abierto, a lo largo de su historia ha tenido muchas contribuciones de otros desarrolladores. Actualmente PHP se encuentra en su versin 4, que utiliza el motor Zend, desarrollado con mayor meditacin para cubrir las necesidades de las aplicaciones Web actuales. Este lenguaje de programacin est preparado para realizar muchos tipos de aplicaciones web gracias a la extensa librera de funciones con la que est dotado. La librera de funciones cubre desde clculos matemticos complejos hasta tratamiento de conexiones de red.

90

Lenguaje de programacin Web y bases de datos Algunas de las ms importantes capacidades de PHP son: compatibilidad con las bases de datos ms comunes, como MySQL, mSQL, Oracle, Informix, y ODBC, por ejemplo. Incluye funciones para el envo de correo electrnico, upload de archivos, crear dinmicamente en el servidor imgenes en formato GIF, incluso animadas y una lista interminable de utilidades adicionales. 6.1.1 Instalacin de php. Para la instalacin de php se debe tener el servidor Apache parado, se debe ser root y se seguirn los siguientes pasos [36]: Se baja el php de http://www.php.net/downloads.php y se utiliza la versin PHP 4.4.0 (tar.gz). Se descomprime el paquete en un directorio con el comando:
tar -zxvf php-4.4.0.tar.gz

Al descomprimirlo se crea la carpeta php-4.4.0 Se entra en esta carpeta y se configura el php con:
./configure --with-mysql --with-apxs2=/usr/local/apache2/bin/apxs

El parmetro --with-mysql indica que el mdulo PHP debe ser compilado con soporte para la Base de Datos MySQL. Y el parmetro --withapxs2=/usr/local/apache2/bin/apxs indica el directorio del ejecutable apxs utilizado para compilar mdulos, dicho ejecutable se encuentra en la instalacin de Apache 2. Se compilan los archivos:
make

Se instalan los mismos:


make install

Terminada la instalacin se genera el archivo php.ini, con el comando:


cp php.ini-dist /usr/local/lib/php.ini

Ahora hay q modificar el httpd.conf (/usr/local/apache2/conf/), indicarle al apache que cargue el mdulo de PHP, pero se debe tener en cuenta que el comando make install puede haber puesto ya esa lnea:
LoadModule php5_module modules/libphp5.so

Se indica al apache que todo documento con la extensin .php sea procesado por PHP:
AddType application/x-httpd-php .php .phtml

Se comprueba si funciona el mdulo de php, para ello se arranca el apache:


# /usr/local/apache2/bin/apachectl start

Se crea un archivo al cual se le llama index.php que contenga:


<?php phpinfo(); ?>

Se copia a /usr/local/apache2/htdocs o donde le hayas dicho al apache que busque las Web. Se abre el navegador y se pone http://localhost/index.php, debe de mostrar caractersticas de PHP.

91

Captulo 6

Figura 21: Pgina principal de PHP.

6.2

Sesiones vs Cookies

6.2.1 Sesiones Las sesiones son una facilidad que permite vincular informacin a un visitante a lo largo de sus diversos accesos a nuestro sitio web. Un visitante puede acceder a varias pginas del sitio, las sesiones ayudan a identificarlo y a vincularle informacin. Su uso cabe destacar que cuando se quiera almacenar informacin en relacin a un visitante de forma persistente a lo largo de su visita las sesiones facilitarn la vida. 6.2.1.1 Funcionamiento sesiones Se puede imaginar a la sesin como un nmero estampado en la frente del visitante que ayuda a identificarlo en cada pgina que visite del sitio. Adems para cada nmero asignado a un visitante habr un locker donde guardar sus cosas. As que quien est a la entrada (el cdigo de manejo de sesiones) al llegar un visitante escoge un nmero para l y se lo estampa en la frente para que lo utilice durante su visita. Para poner a funcionar una sesin se necesitan cumplir dos requisitos fundamentales: Asignar al visitante un identificador nico (escoger un nmero). Propagar este identificador nico a travs de los diferentes accesos del visitante para que podamos reconocerlo (estamprselo en la frente).

92

Lenguaje de programacin Web y bases de datos 6.2.2 Cookies Las cookie son nada ms que ficheros de texto que algunos servidores piden al navegador que escriba en el disco duro, con informacin acerca de lo que se ha estado haciendo por sus pginas. Estos son una potente herramienta para almacenar o recuperar informacin empleada por los servidores web debido al HTTP (protocolo de transferencia de ficheros). Este protocolo es sin estados (no almacena el estado de la sesin entre peticiones sucesivas) y ah es dnde entra la cookie proporcionando una manera de conservar la informacin. El servidor con el envo de estos ficheros puede recopilar datos concernientes al perfil del usuario, tales como sus preferencias, nombre y contrasea, productos que ms le interesan, etc. 6.2.3 Sesiones vs Cookies Las cookies se almacenan en el disco duro del usuario, liberando as al servidor de una importante sobrecarga. Esto produce un aumento de ficheros en el disco duro del usuario y la posible manipulacin de algn experto en el funcionamiento de este tipo de ficheros. Sin embargo las sesiones se ejecutan en el lado del servidor, dndole mayor seguridad, aunque suponga una mayor carga para el servidor. 6.3 Bases de datos

Una base de datos es un conjunto de datos que pertenecen al mismo contexto almacenados sistemticamente para su uso posterior [37]. En este sentido, una biblioteca puede considerarse una base de datos compuesta en su mayora por documentos y textos impresos en papel e indexados para su consulta. En la actualidad, y gracias al desarrollo tecnolgico de campos como la informtica y la electrnica, la mayora de las bases de datos tienen formato electrnico, que ofrece un amplio rango de soluciones al problema de almacenar datos. En informtica existen los sistemas gestores de bases de datos (SGBD), que permiten almacenar y posteriormente acceder a los datos de forma rpida y estructurada. Las aplicaciones ms usuales son para la gestin de empresas e instituciones pblicas. Tambin son ampliamente utilizadas en entornos cientficos con el objeto de almacenar la informacin experimental. Aunque las bases de datos pueden contener muchos tipos de datos, algunos de ellos se encuentran protegidos por las leyes de varios pases. Por ejemplo en Espaa, los datos personales se encuentran protegidos por la Ley Orgnica de Proteccin de Datos de Carcter Personal (LOPD). Sus caractersticas pueden ser ventajosas o desventajosas, pueden ser de ayuda para almacenar, organizar, recuperar, comunicar y manejar informacin en formas que seran imposibles sin los computadores, pero tambin afecta de alguna manera ya que existen enormes cantidades de informacin en bases de datos de las que no se tiene control del acceso. Las bases de Datos tienen muchos usos: facilitan el almacenamiento de grandes cantidades de informacin; permiten la recuperacin rpida y flexible de informacin, con ellas se puede organizar y reorganizar la informacin, as como imprimirla o distribuirla en formas diversas. 93

Captulo 6 Los tipos de datos que se pueden introducir a una base de datos son: numricos: se pueden introducir nmeros para identificar partes del archivo, esto identifica la parte que numera al archivo o lo distingue de alguna manera. texto: el texto es un nombre que identifica al campo. etiquetas: son los ttulos con los que cada campo es designado. frmulas: son datos que aparecen como numricos pero fueron hechos por medio de frmulas.

6.3.1 Instalacin de MySQL. MySQL es actualmente el sistema de administracin de bases de datos SQL ms popular en el Open Source, ya que es ampliamente utilizado en los desarrollos Web gracias a su rapidez, estabilidad y a su integracin con otros lenguajes de script como por ejemplo PHP [38]. Es recomendable utilizar la versin mas actualizada de los paquetes para no estar vulnerables a bugs u otro tipo de fallas. Los pasos que se deben seguir para instalar una base de datos en Linux son los siguientes: Lo primero es verificar si existe el usuario y el grupo mysql, para esto se tienen que mirar los archivos /etc/passwd y /etc/group. El archivo /etc/passwd contiene los usuarios del sistema y el /etc/group tiene los grupos. Si se encuentra user/group mysql entonces se deben crear:
# groupadd mysql: Crea el grupo mysql # useradd -g mysql mysql: Crea el usuario mysql y lo aade al grupo mysql

Se baja el programa de: http://dev.mysql.com/get/Downloads/MySQL-4.0/mysql4.0.21.tar.gz/from/http://mysql.rediris.es/ la versin bajada para este proyecto es la mysql-4.0.21.tar.gz Se descomprime el paquete utilizando:
tar -zxvf mysql-4.0.21.tar.gz

Una vez descomprimido el paquete se entra en la carpeta que se ha creado y se configura el cdigo fuente del servidor MySQL para que se instale en /usr/local/mysql:
./configure --prefix=/usr/local/mysql

Terminada la configuracin se procede a generar los binarios para ello:


make

Con los binarios creados se procede a su instalacin:


make install

Seguidamente cuando se ha terminado la instalacin se copia el archivo mymedium.cnf al directorio /etc/ y se pone el nombre my.cnf:
cp support-files/my-medium.cnf /etc/my.cnf

Se va al directorio /usr/local/mysql y se crean unas tablas que le hacen falta a la base de datos con:
cd /usr/local/mysql

94

Lenguaje de programacin Web y bases de datos


bin/mysql_install_db --user=mysql

Ahora se cambia el usuario y grupo de los ficheros:


chown -R root . chown -R mysql var chgrp -R mysql .

Para arrancar MYSQL se debe poner:


# /usr/local/mysql/bin/mysqld_safe --user=mysql &

Aparecen unas letras se pulsa intro y se cambia la contrasea donde pone nuevo_password entre comillas simples:
bin/mysqladmin -u root password 'nuevo_password' contrasea de root de mysql Cambia la

Ya se tiene el servidor MySQL instalado y en funcionamiento. Para comprobar que esta funcionando se pone:
/usr/local/mysql/bin/mysqlshow -p

Se teclea el password y debe salir una lista de las bases de datos que hay hechas, por defecto son dos, una que se llama mysql que sirve para controlar los usuarios y los permisos de las bases de datos y una de prueba que se llama test:
mysql> SHOW DATABASES; para mostrar las bases de datos que hay +----------+ | Database | +----------+ | mysql | test | |

+----------+ 2 rows in set (0.00 sec)

6.3.2 phpMyAdmin PhpMyAdmin es una utilidad que sirve para interactuar con una base de datos de forma muy sencilla y desde una interfaz Web [39]. Sirve por ejemplo para crear bases de datos, tablas, borrar o modificar dados, aadir registros, hacer copias de seguridad, etc. Es una aplicacin tan til que casi todos los hosting con MySQL disponen de ella, por ello se analizar su instalacin. Adems, se usa para crear los usuarios MySQL para as poder utilizar las bases de datos de forma segura. Al ser una aplicacin escrita en PHP, necesita de Apache y MySQL para poder funcionar. Este proyecto se encuentra vigente desde el ao 1998, como esta herramienta corre en mquinas con Servidores Web y Soporte de php y MySQL, la tecnologa utilizada ha ido variando durante su desarrollo. 6.3.2.1 Instalacin de phpMyAdmin Se deben seguir los siguientes pasos:

95

Captulo 6 Se bajan los archivos de: http://www.phpmyadmin.net/home_page/downloads.php, para este proyecto se ha bajado la versin: phpMyAdmin-2.6.0-pl1.tar.gz Para descomprimirlo se utiliza:
tar -xzvf phpMyAdmin-2.6.0-pl1.tar.gz

Se cambia el nombre, se nombra phpMyAdmin y se copia al DocumetRoot:


mv phpMyAdmin-2.6.0-pl1 phpMyAdmin para cambiarle el nombre cp -r phpMyAdmin /usr/local/apache2/htdocs/

para copiarlo al

DocumetRoot Se edita el archivo /usr/local/apache2/htdocs/phpMyAdmin/config.inc.php para cambiar los valores de host de la base de datos y el usuario y password con el que conectamos. Se pueden configurar muchos aspectos de la herramienta, se modifica:
$cfg['PmaAbsoluteUri']= asignarlo a la ruta phpMyAdmin. 'http://localhost/phpMyAdmin' Debemos completa necesaria para acceder a

$cfg['Servers'][$i]['user'] = 'root'; $cfg['Servers'][$i]['password'] root de mysql'; = 'Ponemos la contrasea de

Configurando las lneas sealadas anteriormente ya se est habilitado para utilizar la herramienta. En el navegador se ingresa a la direccin correspondiente http://localhost/phpMyAdmin y muestra:

Figura 22: pgina principal de phpMyAdmin.

Si entramos en Bases de datos muestra las diferentes bases de datos que hay y la que nosotros hemos creado llamada datos_usuarios

96

Lenguaje de programacin Web y bases de datos

Figura 23: Bases de datos.

Como se puede comprobar en la figura 21 muestra la base de datos que se ha creado llamada datos_usuarios y otras que el programa MySQL crea automticamente y que ya se ha explicado para que sirve cada una. Esta base de datos que se ha creado esta formada por tablas, si se entra en ella se puede ver su estructura:

Figura 24: Tablas de la base de datos.

Si se observa la figura 22 se puede ver que aparecen dos tablas, una llamada usuarios y otra llamada usuarios_oro, en la tabla usuarios se guardan los datos de las personas que entran a la pgina y se registran, la otra tabla (usuarios_oro) es una tabla administrada por el creador de la pgina y es el administrador quien crea a los usuarios y

97

Captulo 6 les da permisos para acceder, esto se ha hecho as para dar distintos privilegios a los distintos usuarios, el diseo de las tablas es el mismo en ambos casos.

Figura 25: Registros de la base de datos usuarios.

Se puede ver que cuando un usuario se registra tiene que rellenar un formulario que contiene los diferentes campos que se muestran en la figura, fijndose en el campo IDUSUARIO se comprueba que la contrasea esta encriptada para dar mayor seguridad a la base de datos, ya que alguna persona puede averiguar la contrasea de la misma y entrar, pero si adems se encriptan las contraseas de los distintos usuarios que se registran va a ser ms difcil la obtencin de la contrasea.

98

7
7.1 Introduccin.

APLICACIN DE SEGURIDAD: CASO PRCTICO

En este captulo se explica el funcionamiento de la demostracin que se ha realizado para este proyecto. Se ha programado una pgina Web y se ha hecho diversas pruebas de seguridad, tanto a nivel de software, como a nivel de programacin. Como se ha comentado anteriormente el servidor Web es apache y el lenguaje de programacin php, los datos se guardan en la base de datos MySQL, la instalacin de los distintos programas y configuracin de los mismos para que se interrelacionen entre s est explicado en captulos anteriores, aqu se va a indagar en la elaboracin de la seguridad y cuales han sido los pasos para implantar esta. 7.2 Funcionamiento de la pgina Web.

Se arranca el servidor apache con soporte SSL, para que la informacin vaya cifrada, para ello se ejecuta lo siguiente:

Arranque Apache con SSL Insertar password

Imagen 26: Arranque del servidor Apache con soporte SSL.

Aplicacin de seguridad: Caso prctico Una vez en marcha el servidor Web, se debe arrancar la base de datos MySQL para ello se ejecuta lo siguiente:

Arranque de MySQL

Figura 27: Arranque de la base de datos MySQL.

Arrancada la base de datos y el servidor, si se escribe en el navegador localhost/MiSitio aparecer la pgina realizada:

Figura 28: Pgina inicial

100

Captulo 7 Como se observa en la figura 27, en la parte de la derecha hay distintos mens para iniciar la sesin, poder registrarse, o darse de baja, lo que se desee realizar y todo ello bajo la seguridad de que nuestro trfico esta cifrado. Si se observa la parte inferior de la figura 27 vemos que muestra un candado, esto es debido a que se ha creado una Certification Authority (CA) que es la entidad de confianza encargada de firmar certificados (CSR). Al entrar en un sitio seguro, se muestra la siguiente informacin:

Figura 29: Advertencia de seguridad SSL

Al conectar con el servidor seguro, se ve como en el navegador aade a http una s, es decir, queda https lo que indica que se conecta por el puerto 443 que es el puerto de seguridad de SSL. El certificado digital que se muestra, es el que se ha creado, si se pincha sobre el candado que sale en la esquina inferior derecha vemos dicho certificado:

Figura 30: Certificado SSL.

101

Aplicacin de seguridad: Caso prctico Como se ve en la figura 29 dice que el certificado puede no ser fiable, esto es debido a que este certificado ha sido creado y firmado por la misma persona, podemos generar un certificado real con un tiempo de vida limitado como Thawte o Verisign, pero debido a esta limitacin de tiempo se ha decidido hacerlo y ponerle el tiempo que se crea conveniente. Entre las opciones que se muestran si se pincha en iniciar sesin se muestra la siguiente imagen:

Figura 31: Seccin: Iniciar Sesin.

Se observa como pide un usuario y una contrasea, para ello se ha creado un formulario como el que vemos en la figura de arriba, en el cual se introduce el usuario y el password y al aceptar se conecta a la base de datos y comprueba si el usuario esta registrado y si es as se inicia sesin para poder navegar por la pgina bajo criptografa SSL, la pgina que se muestra es la siguiente:

Figura 32: Usuario registrado.

102

Captulo 7 En la derecha de la pgina vemos que hay una seccin que es Usuarios Oro, esta seccin tiene de particular que los usuarios que pueden acceder a este sitio son administrados por el administrador de la pgina, es decir, es el administrador quien los da de alta y les asigna una contrasea a cada usuario, como podemos ver el usuario Pedro no tiene los privilegios para acceder a esta seccin ya que l se registr pero el administrador no le ha otorgado los permisos para esta seccin:

Figura 33: Usuario sin privilegios.

Sin embargo si accede un usuario el cual le ha sido asignada una contrasea por el administrador, si que tiene acceso:

Figura 34: Usuario con privilegios

103

Aplicacin de seguridad: Caso prctico Se comprueba como el usuario Juanma si que tiene todos los permisos para acceder a este sitio y poder ver los documentos, archivos que all se encuentren. Adems para acceder a dichos documentos he autentificado la carpeta donde estos se encuentran y an as aunque seas usuario privilegiado si el administrador no te concede dicha contrasea no podemos acceder a ellos:

Figura 35: Carpeta del servidor apache autentificada.

Si no se conoce el usuario y contrasea, no podemos acceder a este sitio y el mensaje de error que nos muestra es el siguiente:

Figura 36: Autentificacin requerida.

104

CONCLUSIONES Y LNEAS FUTURAS DE TRABAJO

Este proyecto final de carrera naci con el objetivo de hacer un estudio de seguridad a pginas Web. A nivel terico, a lo largo del documento, se han revisado la mayora de las consideraciones que han de tenerse en cuenta en el proceso de diseo de una pgina Web segura, desde problemas que afectan al servidor apache hasta los pasos que hay que seguir para una instalacin satisfactoria. Junto con stas, se ha continuado exponiendo las caractersticas del protocolo SSL y diferentes maneras de guardar las contraseas, como por ejemplo mediante la base de datos MySQL. En este proyecto se han revisado las bases ms importantes de la seguridad en entornos Web, evidentemente, muchas cosas se han quedado en el tintero, y otras muchas no han sido comentadas con la profundidad que sin duda merecen. Se han intentado ofrecer ejemplos aplicados a entornos donde la seguridad es clave, haciendo uso de un pequeo ejemplo que se ha programado para aplicar dicha seguridad. Para solucionar el problema, como se ha comentado a lo largo del proyecto, existen dos soluciones que todos deberan intentar aplicar: en primer lugar la concienciacin de los problemas que nos pueden acarrear los fallos de seguridad. Tras la concienciacin, es necesaria una formacin adecuada a cada tipo de persona (evidentemente no podemos exigir los mismos conocimientos a un administrador responsable de varias mquinas que a un usuario que slo conecta al sistema) no es necesario convertirse en un experto, simplemente hay que leer un poco y conocer unas normas bsicas. Con estos dos pasos seguramente no se pararn a todos los piratas que nos intenten atacar, pero s a la gran mayora de ellos, que es lo que realmente interesa en el mundo de la seguridad. Por esto este proyecto lo puede aplicar cualquier usuario a su propio servidor, solo basta con seguir los pasos que se han comentado en los captulos anteriores y tendremos un servidor seguro. Sin embargo en la segunda parte del documento, desaparece este componente terico para dar protagonismo a lo que ha supuesto el mayor esfuerzo realizado, la implementacin de una pgina Web con estos sistemas de seguridad. Como se aprecia en los tres ltimos captulos, estos se resumen en disear, buscar, instalar y configurar los programas bsicos encargados de mostrar la pgina: servidor apache, base de datos MySQL y lenguaje programacin PHP. Poner en funcionamiento un sistema de seguridad no es un proceso sencillo. Parte de las consideraciones van surgiendo a medida que se va desarrollando el proyecto, de forma que aparecen modificaciones que varan el diseo inicial. De hecho una de las modificaciones, entre otras, fue cambiar de sistema operativo, cuya necesidad queda justificada en el captulo 5, otra modificacin a destacar fue la necesidad de utilizar una base de datos para guardar la informacin del usuario todo ello por cuestiones de seguridad. La principal funcin de este proyecto es que ofrece a cualquier tcnico o usuario con nivel medio de programacin Web, poder instalar un servidor Web seguro y crear su propia pgina Web bajo el protocolo SSL. En futuras versiones se podran introducir nuevos lenguajes de programacin como Java Web Start que est construido sobre la plataforma Java 2, que proporciona una amplia arquitectura de seguridad. Java Web Start le permite ejecutar aplicaciones basadas en Java

Captulo 8 directamente desde la Web. La ventaja que nos proporciona este tipo de programacin es que permite lanzar aplicaciones de forma transparente al usuario. Sera interesante utilizar nuevos protocolos de seguridad a parte del mencionado SSL, probar su integridad con el lenguaje PHP y Apache y sino se adaptan bien buscar otro servidor con las mismas caractersticas que Apache y que proporcione como mnimo la misma seguridad. Tambin de podra crear un sistema de copias de seguridad, es decir que automticamente cada da guarde una copia de la informacin de la base de datos, para tener la seguridad de que si un atacante consigue borrar los datos, no se pierdan todos y podamos restaurar nuestro sistema. Por ltimo cabe destacar el uso de tunneling IPSec en futuras versiones, aunque este protocolo este ms orientado a redes, es decir, asegura que el medio por donde viaja la informacin este cifrado con una clave y ponga ms difcil a un atacante la obtencin de los datos que viajen a travs de l, aunque en este proyecto los datos se han cifrado mediante SSL, pero as tambin se asegura el medio de transmisin mejor.

106

Apndice A

FILTRADO DE INFORMACIN
El HTTP se ejecuta en el puerto 80, con tcp, y si es slo para uso interno (una Intranet, o un mecanismo de control basado en www, para, digamos, un servidor cortafuegos) definitivamente habra que filtrarlo con el cortafuegos.
ipfwadm I a accept P tcp S 10.0.0.0/8 D 0.0.0.0/0 80 ipfwadm I a accept P tcp S un.host.fiable D 0.0.0.0/0 80 ipfwadm I a deny P tcp S 0.0.0.0/0 D 0.0.0.0/0 80 o en ipchains: ipchains A input p all j ACCEPT s 10.0.0.0/8 d 0.0.0.0/0 80 ipchains A input p all j ACCEPT s un.host.fiable d 0.0.0.0/0 80 ipchains A input p all j DENY s 0.0.0.0/0 d 0.0.0.0/0 80

El HTTPS se ejecuta en el puerto 443, con tcp, y si slo es para uso interno tambin debera filtrarse con el cortafuegos:
ipfwadm I a accept P tcp S 10.0.0.0/8 D 0.0.0.0/0 443 ipfwadm I a accept P tcp S un.host.fiable D 0.0.0.0/0 443 ipfwadm I a deny P tcp S 0.0.0.0/0 D 0.0.0.0/0 443 o en ipchains: ipchains A input p all j ACCEPT s 10.0.0.0/8 d 0.0.0.0/0 443 ipchains A input p all j ACCEPT s un.host.fiable d 0.0.0.0/0 443 ipchains A input p all j DENY s 0.0.0.0/0 d 0.0.0.0/0 443

10 Apndice B

CDIGO PHP: PGINA PRINCIPAL


<head> <meta http-equiv="Content-Type" content="text/html; charset=iso-88591" /> <title>PFC: Implementacin de seguridad Web</title> <link rel="stylesheet" href="estilos.css" type="text/css" /> </head> <body background="Imagenes/fondo.jpg"> <div id="masthead"> <table width="100%"> <td width="98" align="left"> <img src="Imagenes/upct.jpg" width="85" height="85"/> </td> <td width="840" align="center"> <h1 align="center">LA WEB DE JUANMA</h1> </td> <td width="86" align="right"> <img src="Imagenes/upct.jpg" width="85" height="85" align ="right"/> </td> </table> <script language="JAVASCRIPT"> var refresH=1200; var numMensaje=0; msgS=new Array(); msgS[1]="Bienvenido a la wed de Juan Manuel"; msgS[2]="Universidad Politcnica de Cartagena"; msgS[3]="PFC titulado: 'Portales webs seguros'"; msgS[4]="PFC dirigido por: Pedro Snchez Palma"; msgS[5]=" "; function refrescar() { numMensaje += 1; if (numMensaje == msgS.length) numMensaje=1; window.status=msgS[numMensaje]; refreshC=setTimeout("refrescar();",refresH); } refrescar(); </script> <div id="globalNav"> <p><img alt="" src="Imagenes/glbnav_background.gif" height="3 2" width="100%" id="gnl" /></p> </div> <h2 id="pageName">Principal</h2> </div> <div id="navBar"> <div id="search"> <form action="http://www.google.es"> <label>Buscar</label> <input type="text" size="10" /> <input type="submit" value="go" /> </form> </div>

Apndice B
<div id="sectionLinks"> <h3>Enlaces</h3> <ul> <li><a href="http://www.upct.es">UPCT</a></li> <li><a href="http://www.teleco.upct.es">TELECO</a></li> <li><a href="http://redcampus.upct.es/redcampus/acceso.ht m">SECRETARIA VIRTUAL</a></li> <li><a href="http://www.bib.upct.es/">BIBLIOTECA UPCT</a> </li> <li><a href="http://www.upct.es/contenido/idi/index_idi.p hp/">I+D+I</a></li> <li><a href="http://www.alumnosteleco.upct.es/">DELEGACI N DE ALUMNOS</a></li> </ul> </div> <div class="relatedLinks"> <h3>Otros Links</h3> <ul> <li><a href="http://www.umu.es">UMU</a></li> <li><a href="http://www.universia.es">Universia</a></li> </ul> </div> </div> <!--end navBar1 div --> <div id="navBar1"> <div id="sectionLinks"> <h3>SECCIONES</h3> <ul> <li><a href="index.php">Principal</a></li> <li><a href="https://localhost/MiSitio/iniciarSesion.php" >Iniciar Sesin</a></li> <li><a href="https://localhost/MiSitio/galeriaFotos.php"> Galeria de fotos</a></li> <li><a href="https://localhost/MiSitio/tusDatos.php">Tus Datos</a></li> <li><a href="https://localhost/MiSitio/usuariosOro.php">U suarios Oro</a></li> <li><a href="https://localhost/MiSitio/cerrarSesion.php"> Cerrar Sesin</a></li> </ul> </div> <div class="relatedLinks"> <h3>Registrarse</h3> <ul> <li><a href="registrarse.php">Registrate</a></li> </ul> </div> <div class="relatedLinks"> <h3>Baja usuarios</h3> <ul> <li><a href="bajaUsuarios.php">Baja</a></li> </ul> </div> </div> <!--end headlines --> <div id="content"> <div class="feature"> <img src="Imagenes/Cuartel_Antiguones.jpg" alt="" width="250" height="250" />

109

Cdigo php: Pgina principal


<h3>Escuela tcnica superior de ingenieria de Telecomunicaci n</h3> <p> Pgina realizada como proyecto fin de carrera. </p> </div> <div class="story"> <h3>PFC</h3> <p> Esta pgina Web ha sido desarrollada por Juan Manuel Saur a Martn, estudiante de Ingeniera tcnica de Telecomunicacin especialidad Te lemtica en la universidad politcnica de Cartagena. Esta pgina se basa en un estudio de seguridad de portales Web cuando Apache, php y MySQL est n detrs. </p> <p> Este proyecto ha sido dirigido por Dr. D. Pedro Sanchez P lma, profesor de la UPCT del departamento TIC. </p> </div> </div> <!--end content --> <div id="siteInfo"> <img src="Imagenes/upct.jpg" width="35" height="35" /> <a href="/protegido/email.doc">Contacta con Nosotros</a> | &copy; 2006 Company Name </div> <br /> </body> </html>

110

11 Apndice C

CDIGO PHP: INICIAR SESIN


<? session_start(); ?> <head> <meta http-equiv="Content-Type" content="text/html; charset=iso-88591" /> <title>PFC: Implementacin de seguridad Web</title> <link rel="stylesheet" href="estilos.css" type="text/css" /> </head> <body background="Imagenes/fondo.jpg"> <div id="masthead"> <h1 align="center" id="siteName">LA WEB DE JUANMA </h1> <div id="globalNav"> <p><img alt="" src="Imagenes/glbnav_background.gif" height="3 2" width="100%" id="gnl" /></p> </div> <h2 align="center" id="pageName">Iniciar Sesin</h2> </div> <div id="navBar"> <div id="search"> <form action="http://www.google.es"> <label>Buscar</label> <input type="text" size="10" /> <input type="submit" value="go" /> </form> </div> <div id="sectionLinks"> <h3>Enlaces</h3> <ul> <li><a href="http://www.upct.es">UPCT</a></li> <li><a href="http://www.teleco.upct.es">TELECO</a></li> <li><a href="http://redcampus.upct.es/redcampus/acceso.ht m">SECRETARIA VIRTUAL</a></li> <li><a href="http://www.bib.upct.es/">BIBLIOTECA UPCT</a> </li> <li><a href="http://www.upct.es/contenido/idi/index_idi.p hp/">I+D+I</a></li> <li><a href="http://www.alumnosteleco.upct.es/">DELEGACI N DE ALUMNOS</a></li> </ul> </div> <div class="relatedLinks"> <h3>Otros Links</h3> <ul> <li><a href="http://www.umu.es">UMU</a></li> <li><a href="http://www.universia.es">Universia</a></li> </ul> </div> </div> <!--end navBar1 div --> <div id="navBar1"> <div id="sectionLinks"> <h3>SECCIONES</h3> <ul> <li><a href="index.php">Principal</a></li>

Apndice C
<li><a href="iniciarSesion.php">Iniciar Sesin</a></li> <li><a href="galeriaFotos.php">Galeria de fotos</a></li> <li><a href="tusDatos.php">Tus Datos</a></li> <li><a href="usuariosOro.php">Usuarios Oro</a></li> <li><a href="cerrarSesion.php">Cerrar Sesin</a></li> </ul> </div> <div class="relatedLinks"> <h3>Registrarse</h3> <ul> <li><a href="registrarse.php">Registrate</a></li> </ul> </div> <div class="relatedLinks"> <h3>Baja usuarios</h3> <ul> <li><a href="bajaUsuarios.php">Baja</a></li> </ul> </div> </div> <!--end headlines --> <div id="content"> <? $NombreBD = "datos_usuarios"; $Servidor = "localhost"; $Usuario = "root"; $password = "45612696"; $IdConexion = mysql_connect($Servidor, $Usuario, $password); mysql_select_db($NombreBD, $IdConexion) or die ("No se encont ro la base de datos"); //Esta es la consulta que queremos hacer. $consulta = 'SELECT USUARIO,DIRECCION,EMAIL,IDUSUARIO,SEXO FR OM usuarios;'; //mysql_query nos devuelve el identificador de la consulta. $IdConsulta = mysql_query($consulta, $IdConexion); //Nos devuelve el nmero de filas; $NFilas = mysql_num_rows($IdConsulta); for( $i=0; $i<$NFilas; $i++ ) { //Para recuperar los datos. $resultadoConsulta = mysql_fetch_array($IdConsulta); if( ( $resultadoConsulta[ "USUARIO" ] == $_POST[ 'usuario ' ] ) && ( $resultadoConsulta[ "IDUSUARIO" ] == md5( $_POST[ 'IDUsuario' ] ) ) ) { $_SESSION[ 'nombre' ] = $_POST[ 'usuario' ]; $_SESSION[ 'id' ] = $_POST[ 'IDUsuario' ]; $correcto = 1; ?> <center> <br><br><br> <h2>Bienvenid@ ></h2>

<? echo $_POST[ 'usuario' ] ?

112

Cdigo php: Iniciar Sesin


</center> <? break; } elseif( ( $resultadoConsulta[ "USUARIO" ] == $_SESSION[ ' nombre' ] ) && ( $resultadoConsulta[ "IDUSUARIO" ] == md5( $_SESSION[ 'id ' ] ) ) ) { $correcto = 1; ?> <center> <br><br><br> <h2>Sesion establecida</h2> </center> <? break; } } if( $correcto != 1 ) { echo "<form action=\"iniciarSesion.php\" method=\"POST\"> <br><br><br> <table align=\"center\" border=\"1\" cellspacing= \"0\" cellpadding=\"0\" width=\"450\"> <tr bgcolor=\"#C6C3C6\"> <td> <table align=\"center\" width=\"450\" border=\"0\" cellspacing=\"0\" cellpadding=\"1\"> <tr bgcolor=\"#400080\"> <td height=\"20\" class=\"td1 \" bgcolor=\"#000084\"> <b> <font color=\"#FFFFFF \"> &nbsp;Sistema de autentificacin de usuarios </font> </b> </td> </tr> <tr align=\"center\"> <td colspan=\"2\"> <table border=\"0\" cells pacing=\"0\" cellpadding=\"1\" width=\"100%\"> <tr> <td rowspan=\"3\" valign=\"top\" align=\"right\" width=\"12%\"> <img src=\"Im agenes/key.gif\" width=\"35\" height=\"40\"> </td> <td colspan=\"2\" class=\"td1\" height=\"42\"> Por favor ing resa tu nombre de usuario y password </td> </tr> <tr> <td width=\"18%\" class=\"td1\">

113

Apndice C
Usuario </td> <td width=\"70%\" > <input type=\ "text\" class=\"campo\" name=\"usuario\" size=\"25\"> </td> </tr> <tr> <td height=\"35\" width=\"18%\" class=\"td1\"> Contrasea </td> <td height=\"35\" width=\"70%\"> <input type=\ "password\" class=\"campo\" name=\"IDUsuario\" size=\"25\"> </td> </tr> </table> <table width=\"100%\" bor der=\"0\" cellspacing=\"0\" cellpadding=\"1\"> <tr> <td align=\"right \" width=\"47%\"> <input class= \"boton\" type=\"submit\" value=\"Aceptar\"> </td> <td align=\"right \" width=\"1%\"> &nbsp; </td> <td width=\"52%\" > <input class= \"boton\" type=\"reset\" value=\"Restaurar\"> </td> </tr> </table> </td> </tr> </table> </td> </tr> </table> </form>"; } ?> </center> </div> <!--end content --> <div id="siteInfo"> <img src="Imagenes/upct.jpg" width="35" height="35" /> <a href="/protegido/email.doc">Contacta con Nosotros</a> | &copy; 2006 Company Name </div> <br /> </body> </html>

114

12 Apndice D

CDIGO PHP: REGISTRARSE


<head> <meta http-equiv="Content-Type" content="text/html; charset=iso-88591" /> <title>PFC: Implementacin de seguridad Web</title> <link rel="stylesheet" href="estilos.css" type="text/css" /> </head> <body background="Imagenes/fondo.jpg"> <div id="masthead"> <h1 align="center" id="siteName">LA WEB DE JUANMA </h1> <div id="globalNav"> <p><img alt="" src="Imagenes/glbnav_background.gif" height="3 2" width="100%" id="gnl" /></p> </div> <h2 align="center" id="pageName">Registrarse</h2> </div> <div id="navBar"> <div id="search"> <form action="http://www.google.es"> <label>Buscar</label> <input type="text" size="10" /> <input type="submit" value="go" /> </form> </div> <div id="sectionLinks"> <h3>Enlaces</h3> <ul> <li><a href="http://www.upct.es">UPCT</a></li> <li><a href="http://www.teleco.upct.es">TELECO</a></li> <li><a href="http://redcampus.upct.es/redcampus/acceso.ht m">SECRETARIA VIRTUAL</a></li> <li><a href="http://www.bib.upct.es/">BIBLIOTECA UPCT</a> </li> <li><a href="http://www.upct.es/contenido/idi/index_idi.p hp/">I+D+I</a></li> <li><a href="http://www.alumnosteleco.upct.es/">DELEGACI N DE ALUMNOS</a></li> </ul> </div> <div class="relatedLinks"> <h3>Otros Links</h3> <ul> <li><a href="http://www.umu.es">UMU</a></li> <li><a href="http://www.universia.es">Universia</a></li> </ul> </div> </div> <!--end navBar1 div --> <div id="navBar1"> <div id="sectionLinks"> <h3>SECCIONES</h3> <ul> <li><a href="index.php">Principal</a></li> <li><a href="iniciarSesion.php">Iniciar Sesin</a></li> <li><a href="galeriaFotos.php">Galeria de fotos</a></li> <li><a href="tusDatos.php">Tus Datos</a></li>

Apndice D
<li><a href="usuariosOro.php">Usuarios Oro</a></li> <li><a href="cerrarSesion.php">Cerrar Sesin</a></li> </ul> </div> <div class="relatedLinks"> <h3>Registrarse</h3> <ul> <li><a href="registrarse.php">Registrate</a></li> </ul> </div> <div class="relatedLinks"> <h3>Baja usuarios</h3> <ul> <li><a href="bajaUsuarios.php">Baja</a></li> </ul> </div> </div> <!--end headlines --> <div id="content"> <br><br><br> <h2 align="center">Inscripcin de usuarios</h2> <form name="Inscripcion" method="post" action="confirmacionDatos. php" enctype="multipart/form-data"> <table width="400" border="1" align="center" cellpadding="5" cellspacing="0" bgcolor="#CCCCCC"> <tr> <td width="47%"> Nombre </td> <td colspan="2"> <input type="text" name="usuario" size="25" maxle ngth="25"><br><br> </td> </tr> <tr> <td width="47%"> Direccin </td> <td height="57" colspan="2"> <textarea name="direccion" cols="26" rows="4"></t extarea><br><br> </td> </tr> <tr> <td width="47%"> Correo electrnico </td> <td height="2" colspan="2"> <input type="text" name="email" size="25" maxleng ht="50"><br><br> </td> </tr> <tr> <td width="47%"> Contrasea </td> <td height="2"> <input type="password" name="IDUsuario" size=="25 " maxlenght="15"><br><br> </td> </tr>

116

Cdigo php: Registrarse


<tr> <td width="47%"> Confirmacin de contrasea </td> <td height="2"> <input type="password" name="CIDUsuario" size=="2 5" maxlenght="15"><br><br> </td> </tr> <tr> <td width="47%"> Sexo </td> <td height="2"> <input type="radio" name="genero" value="Hombre"> Hombre <input type="radio" name="genero" value="Mujer"> Mujer </td> </tr> <tr> <td colspan="3" align="center"> <input type="submit" value="Enviar"> <input type="reset" value="Borrar Datos"> </td> </tr> </table> </form> </div> <!--end content --> <div id="siteInfo"> <img src="Imagenes/upct.jpg" width="35" height="35" /> <a href="/protegido/email.doc">Contacta con Nosotros</a> | &copy; 2006 Company Name </div> <br /> </body> </html>

117

13 Apndice E

CDIGO PHP: TUS DATOS


<? session_start(); ?> <head> <meta http-equiv="Content-Type" content="text/html; charset=iso-88591" /> <title>PFC: Implementacin de seguridad Web</title> <link rel="stylesheet" href="estilos.css" type="text/css" /> </head> <body background="Imagenes/fondo.jpg"> <div id="masthead"> <h1 align="center" id="siteName">LA WEB DE JUANMA </h1> <div id="globalNav"> <p><img alt="" src="Imagenes/glbnav_background.gif" height="3 2" width="100%" id="gnl" /></p> </div> <h2 align="center" id="pageName">Mostrar Datos</h2> </div> <div id="navBar"> <div id="search"> <form action="http://www.google.es"> <label>Buscar</label> <input type="text" size="10" /> <input type="submit" value="go" /> </form> </div> <div id="sectionLinks"> <h3>Enlaces</h3> <ul> <li><a href="http://www.upct.es">UPCT</a></li> <li><a href="http://www.teleco.upct.es">TELECO</a></li> <li><a href="http://redcampus.upct.es/redcampus/acceso.ht m">SECRETARIA VIRTUAL</a></li> <li><a href="http://www.bib.upct.es/">BIBLIOTECA UPCT</a> </li> <li><a href="http://www.upct.es/contenido/idi/index_idi.p hp/">I+D+I</a></li> <li><a href="http://www.alumnosteleco.upct.es/">DELEGACI N DE ALUMNOS</a></li> </ul> </div> <div class="relatedLinks"> <h3>Otros Links</h3> <ul> <li><a href="http://www.umu.es">UMU</a></li> <li><a href="http://www.universia.es">Universia</a></li> </ul> </div> </div> <!--end navBar1 div --> <div id="navBar1"> <div id="sectionLinks"> <h3>SECCIONES</h3> <ul> <li><a href="index.php">Principal</a></li>

Apndice E
<li><a href="iniciarSesion.php">Iniciar Sesin</a></li> <li><a href="galeriaFotos.php">Galeria de fotos</a></li> <li><a href="tusDatos.php">Tus Datos</a></li> <li><a href="usuariosOro.php">Usuarios Oro</a></li> <li><a href="cerrarSesion.php">Cerrar Sesin</a></li> </ul> </div> <div class="relatedLinks"> <h3>Registrarse</h3> <ul> <li><a href="registrarse.php">Registrate</a></li> </ul> </div> <div class="relatedLinks"> <h3>Baja usuarios</h3> <ul> <li><a href="bajaUsuarios.php">Baja</a></li> </ul> </div> </div> <!--end headlines --> <div id="content"> <? $NombreBD = "datos_usuarios"; $Servidor = "localhost"; $Usuario = "root"; $password = "45612696"; $IdConexion = mysql_connect($Servidor, $Usuario, $password); mysql_select_db($NombreBD, $IdConexion) or die ("No se encont ro la base de datos"); //Esta es la consulta que queremos hacer. $consulta = 'SELECT USUARIO,DIRECCION,EMAIL,IDUSUARIO,SEXO FR OM usuarios;'; //mysql_query nos devuelve el identificador de la consulta. $IdConsulta = mysql_query($consulta, $IdConexion); //Nos devuelve el nmero de filas; $NFilas = mysql_num_rows($IdConsulta); for( $i=0; $i<$NFilas; $i++ ) { //Para recuperar los datos. $resultadoConsulta = mysql_fetch_array($IdConsulta); if( ( $resultadoConsulta[ "USUARIO" ] == $_POST[ 'usuario ' ] ) && ( $resultadoConsulta[ "IDUSUARIO" ] == md5( $_POST[ 'IDUsuario' ] ) ) ) { $_SESSION[ 'nombre' ] = $_POST[ 'usuario' ]; $_SESSION[ 'id' ] = $_POST[ 'IDUsuario' ]; $correcto = 1; print("<br><br><br>"); ?> <center> <h2>Los datos guardados en la base de datos s on:</h2>

119

Cdigo php: Tus Datos


<TABLE BORDER=1 BGCOLOR=#7BA9E8 CELLPADDING=4 CELLSPACING=3> <? print("<tr><td>Nombre: </td>"); print("<td>".$resultadoConsulta[ "USUARIO" ]. "</TD></tr>"); print("<tr><td>Direccin: "); print("<td>".$resultadoConsulta[ "DIRECCION" ]."</td></tr>"); print("<tr><td>Contrasea: </td>"); print("<td>".$_SESSION[ 'id' ]."</td></tr>"); print("<tr><td>E-mail: "); print("<td>".$resultadoConsulta[ "EMAIL" ]."< /td></tr>"); print("<tr><td>Sexo: "); print("<td>".$resultadoConsulta[ "SEXO" ]."</ td></tr>"); break; ?> </center> <? } elseif( ( $resultadoConsulta[ "USUARIO" ] == $_SESSION[ ' nombre' ] ) && ( $resultadoConsulta[ "IDUSUARIO" ] == md5( $_SESSION[ 'id ' ] ) ) ) { $correcto = 1; print("<br><br><br>"); ?> <center> <h2>Los datos guardados en la base de datos s on:</h2> <TABLE BORDER=1 BGCOLOR=#7BA9E8 CELLPADDING=4 CELLSPACING=3> <? print("<tr><td>Nombre: </td>"); print("<td>".$resultadoConsulta[ "USUARIO" ]. "</TD></tr>"); print("<tr><td>Direccin: "); print("<td>".$resultadoConsulta[ "DIRECCION" ]."</td></tr>"); print("<tr><td>Contrasea: </td>"); print("<td>".$_SESSION[ 'id' ]."</td></tr>"); print("<tr><td>E-mail: "); print("<td>".$resultadoConsulta[ "EMAIL" ]."< /td></tr>"); print("<tr><td>Sexo: "); print("<td>".$resultadoConsulta[ "SEXO" ]."</ td></tr>"); ?> </table> <? break; ?> </center> <? } }

120

Apndice E
if( $correcto != 1 ) { echo "<form action=\"tusDatos.php\" method=\"POST\"> <br><br><br> <table align=\"center\" border=\"1\" cellspacing= \"0\" cellpadding=\"0\" width=\"450\"> <tr bgcolor=\"#C6C3C6\"> <td> <table align=\"center\" width=\"450\" border=\"0\" cellspacing=\"0\" cellpadding=\"1\"> <tr bgcolor=\"#400080\"> <td height=\"20\" class=\"td1 \" bgcolor=\"#000084\"> <b> <font color=\"#FFFFFF \"> &nbsp;Sistema de autentificacin de usuarios </font> </b> </td> </tr> <tr align=\"center\"> <td colspan=\"2\"> <table border=\"0\" cells pacing=\"0\" cellpadding=\"1\" width=\"100%\"> <tr> <td rowspan=\"3\" valign=\"top\" align=\"right\" width=\"12%\"> <img src=\"Im agenes/key.gif\" width=\"35\" height=\"40\"> </td> <td colspan=\"2\" class=\"td1\" height=\"42\"> Por favor ing resa tu nombre de usuario y password </td> </tr> <tr> <td width=\"18%\" class=\"td1\"> Usuario </td> <td width=\"70%\" > <input type=\ "text\" class=\"campo\" name=\"usuario\" size=\"25\"> </td> </tr> <tr> <td height=\"35\" width=\"18%\" class=\"td1\"> Contrasea </td> <td height=\"35\" width=\"70%\"> <input type=\ "password\" class=\"campo\" name=\"IDUsuario\" size=\"25\"> </td> </tr>

121

Cdigo php: Tus Datos


</table> <table width=\"100%\" bor der=\"0\" cellspacing=\"0\" cellpadding=\"1\"> <tr> <td align=\"right \" width=\"47%\"> <input class= \"boton\" type=\"submit\" value=\"Aceptar\"> </td> <td align=\"right \" width=\"1%\"> &nbsp; </td> <td width=\"52%\" > <input class= \"boton\" type=\"reset\" value=\"Restaurar\"> </td> </tr> </table> </td> </tr> </table> </td> </tr> </table> </form>"; } ?> </div> <!--end content --> <div align="left" id="siteInfo"> <img src="Imagenes/upct.jpg" width="35" height="35" /> <a href="/protegido/email.doc">Contacta con Nosotros</a> | &copy; 2006 Company Name </div> <br /> </body> </html>

122

14 Apndice F

CDIGO PHP: USUARIOS ORO


<? session_start(); ?> <head> <meta http-equiv="Content-Type" content="text/html; charset=iso-88591" /> <title>PFC: Implementacin de seguridad Web</title> <link rel="stylesheet" href="estilos.css" type="text/css" /> </head> <body background="Imagenes/fondo.jpg"> <div id="masthead"> <h1 align="center" id="siteName">LA WEB DE JUANMA </h1> <div id="globalNav"> <p><img alt="" src="Imagenes/glbnav_background.gif" height="3 2" width="100%" id="gnl" /></p> </div> <h2 align="center" id="pageName">Usuarios con privilegios</h2> </div> <div id="navBar"> <div id="search"> <form action="http://www.google.es"> <label>Buscar</label> <input type="text" size="10" /> <input type="submit" value="go" /> </form> </div> <div id="sectionLinks"> <h3>Enlaces</h3> <ul> <li><a href="http://www.upct.es">UPCT</a></li> <li><a href="http://www.teleco.upct.es">TELECO</a></li> <li><a href="http://redcampus.upct.es/redcampus/acceso.ht m">SECRETARIA VIRTUAL</a></li> <li><a href="http://www.bib.upct.es/">BIBLIOTECA UPCT</a> </li> <li><a href="http://www.upct.es/contenido/idi/index_idi.p hp/">I+D+I</a></li> <li><a href="http://www.alumnosteleco.upct.es/">DELEGACI N DE ALUMNOS</a></li> </ul> </div> <div class="relatedLinks"> <h3>Otros Links</h3> <ul> <li><a href="http://www.umu.es">UMU</a></li> <li><a href="http://www.universia.es">Universia</a></li> </ul> </div> </div> <!--end navBar1 div --> <div id="navBar1"> <div id="sectionLinks"> <h3>SECCIONES</h3> <ul> <li><a href="index.php">Principal</a></li>

Apndice F
<li><a href="iniciarSesion.php">Iniciar Sesin</a></li> <li><a href="galeriaFotos.php">Galeria de fotos</a></li> <li><a href="tusDatos.php">Tus Datos</a></li> <li><a href="usuariosOro.php">Usuarios Oro</a></li> <li><a href="cerrarSesion.php">Cerrar Sesin</a></li> </ul> </div> <div class="relatedLinks"> <h3>Registrarse</h3> <ul> <li><a href="registrarse.php">Registrate</a></li> </ul> </div> <div class="relatedLinks"> <h3>Baja usuarios</h3> <ul> <li><a href="bajaUsuarios.php">Baja</a></li> </ul> </div> </div> <!--end headlines --> <div id="content"> <? if( $_SESSION['nombre'] == '' ) { echo "<form action=\"claveOro.php\" method=\"POST\"> <br><br><br> <table align=\"center\" border=\"1\" cellspacing=\"0\ " cellpadding=\"0\" width=\"450\"> <tr bgcolor=\"#C6C3C6\"> <td> <table align=\"center\" width=\"450\" bor der=\"0\" cellspacing=\"0\" cellpadding=\"1\"> <tr bgcolor=\"#400080\"> <td height=\"20\" class=\"td1\" b gcolor=\"#000084\"> <b> <font color=\"#FFFFFF\"> &nbsp;Sistema de aute ntificacin de usuarios </font> </b> </td> </tr> <tr align=\"center\"> <td colspan=\"2\"> <table border=\"0\" cellspaci ng=\"0\" cellpadding=\"1\" width=\"100%\"> <tr> <td rowspan=\"3\" val ign=\"top\" align=\"right\" width=\"12%\"> <img src=\"Imagen es/key.gif\" width=\"35\" height=\"40\"> </td> <td colspan=\"2\" cla ss=\"td1\" height=\"42\"> Por favor ingresa tu nombre de usuario y password </td> </tr>

124

Cdigo php: Usuario Oro


<tr> <td width=\"18%\" cla ss=\"td1\"> Usuario </td> <td width=\"70%\"> <input type=\"tex t\" class=\"campo\" name=\"usuario\" size=\"25\"> </td> </tr> <tr> <td height=\"35\" wid th=\"18%\" class=\"td1\"> Contrasea </td> <td height=\"35\" wid th=\"70%\"> <input type=\"pas sword\" class=\"campo\" name=\"IDUsuario\" size=\"25\"> </td> </tr> </table> <table width=\"100%\" border= \"0\" cellspacing=\"0\" cellpadding=\"1\"> <tr> <td align=\"right\" w idth=\"47%\"> <input class=\"bo ton\" type=\"submit\" value=\"Aceptar\"> </td> <td align=\"right\" w idth=\"1%\"> &nbsp; </td> <td width=\"52%\"> <input class=\"bo ton\" type=\"reset\" value=\"Restaurar\"> </td> </tr> </table> </td> </tr> </table> </td> </tr> </table> </form>"; } else { $NombreBD = "datos_usuarios"; $Servidor = "localhost"; $Usuario = "root"; $password = "45612696"; $IdConexion = mysql_connect($Servidor, $Usuario, $password); mysql_select_db($NombreBD, $IdConexion); //Esta es la consulta que queremos hacer. $consulta = 'SELECT USUARIO,DIRECCION,EMAIL,IDUSUARIO,SEXO FR OM usuarios_oro;';

125

Apndice F
//mysql_query nos devuelve el identificador de la consulta. $IdConsulta = mysql_query($consulta, $IdConexion); //Nos devuelve el nmero de filas; $NFilas = mysql_num_rows($IdConsulta); for( $i=0; $i<$NFilas; $i++ ) { //Para recuperar los datos. $resultadoConsulta = mysql_fetch_array($IdConsulta); if( ( $resultadoConsulta[ "USUARIO" ] == $_SESSION[ 'nomb re' ] ) && ( $resultadoConsulta[ "IDUSUARIO" ] == md5( $_SESSION[ 'id' ] ) ) ) { ?> <center> <br><br><br> <h2>Bienvenido <? echo $_SESSION[ 'nombre' ] ?></h2> <br><br><br> <table align="center" border="0" cellspacing= "0" cellpadding="1" width="50%"> <td align="left"> <a href="/protegido/Documentos" onmouseov er="window.status='Enlace al directorio documentos';return true">Document os</a> </td> <td align="right"> <a href="/protegido/Musica" onmouseover=" window.status='Enlace al directorio Musica';return true">Musica</a> </td> </table> <? break; } } if( ( $resultadoConsulta[ "USUARIO" ] != $_SESSION[ 'nombre' ] ) || ( $resultadoConsulta[ "IDUSUARIO" ] != md5( $_SESSION[ 'id' ] ) ) ) { ?> <br><br><br> <center> <h2><? echo $_SESSION[ 'nombre' ]; ?> no tienes l os privilegios para acceder<br>a este enlace</h2> </center> <? } } ?> </div> <!--end content --> <div align="left" id="siteInfo"> <img src="Imagenes/upct.jpg" width="35" height="35" /> <a href="/protegido/email.doc">Contacta con Nosotros</a> | &copy; 2006 Company Name </div> <br />

126

Cdigo php: Usuario Oro


</body> </html>

127

15 Apndice G

CDIGO PHP: ALMACENADO DE DATOS


<head> <meta http-equiv="Content-Type" content="text/html; charset=iso-88591" /> <title>PFC: Implementacin de seguridad Web</title> <link rel="stylesheet" href="estilos.css" type="text/css" /> </head> <body background="Imagenes/fondo.jpg"> <div id="masthead"> <h1 align="center" id="siteName">LA WEB DE JUANMA </h1> <div id="globalNav"> <p><img alt="" src="Imagenes/glbnav_background.gif" height="3 2" width="100%" id="gnl" /></p> </div> <h2 align="center" id="pageName">Almacenar datos en base de datos </h2> </div> <div id="navBar"> <div id="search"> <form action="http://www.google.es"> <label>Buscar</label> <input type="text" size="10" /> <input type="submit" value="go" /> </form> </div> <div id="sectionLinks"> <h3>Enlaces</h3> <ul> <li><a href="http://www.upct.es">UPCT</a></li> <li><a href="http://www.teleco.upct.es">TELECO</a></li> <li><a href="http://redcampus.upct.es/redcampus/acceso.ht m">SECRETARIA VIRTUAL</a></li> <li><a href="http://www.bib.upct.es/">BIBLIOTECA UPCT</a> </li> <li><a href="http://www.upct.es/contenido/idi/index_idi.p hp/">I+D+I</a></li> <li><a href="http://www.alumnosteleco.upct.es/">DELEGACI N DE ALUMNOS</a></li> </ul> </div> <div class="relatedLinks"> <h3>Otros Links</h3> <ul> <li><a href="http://www.umu.es">UMU</a></li> <li><a href="http://www.universia.es">Universia</a></li> </ul> </div> </div> <!--end navBar1 div --> <div id="navBar1"> <div id="sectionLinks"> <h3>SECCIONES</h3> <ul> <li><a href="index.php">Principal</a></li> <li><a href="iniciarSesion.php">Iniciar Sesin</a></li>

Apndice G
<li><a href="galeriaFotos.php">Galeria de fotos</a></li> <li><a href="tusDatos.php">Tus Datos</a></li> <li><a href="usuariosOro.php">Usuarios Oro</a></li> <li><a href="cerrarSesion.php">Cerrar Sesin</a></li> </ul> </div> <div class="relatedLinks"> <h3>Registrarse</h3> <ul> <li><a href="registrarse.php">Registrate</a></li> </ul> </div> <div class="relatedLinks"> <h3>Baja usuarios</h3> <ul> <li><a href="bajaUsuarios.php">Baja</a></li> </ul> </div> </div> <!--end headlines --> <div id="content"> <?php $NombreBD = "datos_usuarios"; $Servidor = "localhost"; $Usuario = "root"; $password = "45612696"; $IdConexion = mysql_connect($Servidor, $Usuario, $password); mysql_select_db($NombreBD, $IdConexion); //Esta es la consulta que queremos hacer. $consulta = 'SELECT USUARIO,DIRECCION,EMAIL,IDUSUARIO,SEXO FR OM usuarios;'; //mysql_query nos devuelve el identificador de la consulta. $IdConsulta = mysql_query($consulta, $IdConexion); //Nos devuelve el nmero de filas; $NFilas = mysql_num_rows($IdConsulta); ?> <CENTER> <? for( $i=0; $i<$NFilas; $i++ ) { //Para recuperar los datos. $resultadoConsulta = mysql_fetch_array($IdConsulta); if( $resultadoConsulta[ "USUARIO" ] == $_POST['usuari o' ] ) { $aux = 1; ?><br><br><br> <h2>Usuario registrado</h2> <? break; } } if( $aux != 1 ) { $insercion = 'INSERT INTO usuarios'.

129

Cdigo php: Amacenado de datos


' (USUARIO,DIRECCION,EMAIL,IDUSUARIO,SEX O)'. ' VALUES ('.'"'.$_POST['usuario' ].'","' .$_POST['direccion' ].'","'.$_POST['email' ].'","'.md5( $_POST['IDUsuario '] ).'","'.$_POST['genero'].'");'; $IdInsercion = mysql_query($insercion, $IdConexion); ?><br><br><br> <h2>Tus datos han sido guardados</h2> <? } ?> </CENTER> </div> <!--end content --> <div id="siteInfo"> <img src="Imagenes/upct.jpg" width="35" height="35" /> <a href="/protegido/email.doc">Contacta con Nosotros</a> | &copy; 2006 Company Name </div> <br /> </body> </html>

130

16 Apndice H

CDIGO PHP: BAJA DE USUARIOS


<? session_start(); ?> <head> <meta http-equiv="Content-Type" content="text/html; charset=iso-88591" /> <title>PFC: Implementacin de seguridad Web</title> <link rel="stylesheet" href="estilos.css" type="text/css" /> </head> <body background="Imagenes/fondo.jpg"> <div id="masthead"> <h1 align="center" id="siteName">LA WEB DE JUANMA </h1> <div id="globalNav"> <p><img alt="" src="Imagenes/glbnav_background.gif" height="3 2" width="100%" id="gnl" /></p> </div> <h2 align="center" align="center" id="pageName">Baja de Usuarios< /h2> </div> <div id="navBar"> <div id="search"> <form action="http://www.google.es"> <label>Buscar</label> <input type="text" size="10" /> <input type="submit" value="go" /> </form> </div> <div id="sectionLinks"> <h3>Enlaces</h3> <ul> <li><a href="http://www.upct.es">UPCT</a></li> <li><a href="http://www.teleco.upct.es">TELECO</a></li> <li><a href="http://redcampus.upct.es/redcampus/acceso.ht m">SECRETARIA VIRTUAL</a></li> <li><a href="http://www.bib.upct.es/">BIBLIOTECA UPCT</a> </li> <li><a href="http://www.upct.es/contenido/idi/index_idi.p hp/">I+D+I</a></li> <li><a href="http://www.alumnosteleco.upct.es/">DELEGACI N DE ALUMNOS</a></li> </ul> </div> <div class="relatedLinks"> <h3>Otros Links</h3> <ul> <li><a href="http://www.umu.es">UMU</a></li> <li><a href="http://www.universia.es">Universia</a></li> </ul> </div> </div> <!--end navBar1 div --> <div id="navBar1"> <div id="sectionLinks"> <h3>SECCIONES</h3> <ul>

Apndice H
<li><a href="index.php">Principal</a></li> <li><a href="iniciarSesion.php">Iniciar Sesin</a></li> <li><a href="galeriaFotos.php">Galeria de fotos</a></li> <li><a href="tusDatos.php">Tus Datos</a></li> <li><a href="usuariosOro.php">Usuarios Oro</a></li> <li><a href="cerrarSesion.php">Cerrar Sesin</a></li> </ul> </div> <div class="relatedLinks"> <h3>Registrarse</h3> <ul> <li><a href="registrarse.php">Registrate</a></li> </ul> </div> <div class="relatedLinks"> <h3>Baja usuarios</h3> <ul> <li><a href="bajaUsuarios.php">Baja</a></li> </ul> </div> </div> <!--end headlines --> <div id="content"> <? $NombreBD = "datos_usuarios"; $Servidor = "localhost"; $Usuario = "root"; $password = "45612696"; $IdConexion = mysql_connect($Servidor, $Usuario, $password); mysql_select_db($NombreBD, $IdConexion); ?> <CENTER> <? if( $_SESSION['nombre'] == '' ) { echo "<form action=\"comprobarDatosBorrados.php\" meth od=\"POST\"> <br><br><br> <table align=\"center\" border=\"1\" cellspac ing=\"0\" cellpadding=\"0\" width=\"450\"> <tr bgcolor=\"#C6C3C6\"> <td> <table align=\"center\" width=\"4 50\" border=\"0\" cellspacing=\"0\" cellpadding=\"1\"> <tr bgcolor=\"#400080\"> <td height=\"20\" class=\ "td1\" bgcolor=\"#000084\"> <b> <font color=\"#FF FFFF\"> &nbsp;Sistema de autentificacin de usuarios </font> </b> </td> </tr> <tr align=\"center\"> <td colspan=\"2\">

132

Cdigo php: Baja usuarios


<table border=\"0\" c ellspacing=\"0\" cellpadding=\"1\" width=\"100%\"> <tr> <td rowspan=\ "3\" valign=\"top\" align=\"right\" width=\"12%\"> <img src= \"Imagenes/key.gif\" width=\"35\" height=\"40\"> </td> <td colspan=\ "2\" class=\"td1\" height=\"42\"> Por favor ingresa tu nombre de usuario y password </td> </tr> <tr> <td width=\"1 8%\" class=\"td1\"> Usuario </td> <td width=\"7 0%\"> <input ty pe=\"text\" class=\"campo\" name=\"usuario\" size=\"25\"> </td> </tr> <tr> <td height=\" 35\" width=\"18%\" class=\"td1\"> Contrase a </td> <td height=\" 35\" width=\"70%\"> <input ty pe=\"password\" class=\"campo\" name=\"IDUsuario\" size=\"25\"> </td> </tr> </table> <table width=\"100%\" border=\"0\" cellspacing=\"0\" cellpadding=\"1\"> <tr> <td align=\"r ight\" width=\"47%\"> <input cl ass=\"boton\" type=\"submit\" value=\"Aceptar\"> </td> <td align=\"r ight\" width=\"1%\"> &nbsp; </td> <td width=\"5 2%\"> <input cl ass=\"boton\" type=\"reset\" value=\"Restaurar\"> </td> </tr> </table> </td> </tr> </table> </td>

133

Apndice H
</tr> </table> </form>"; } else { $nom = $_SESSION[ 'nombre' ]; $query = "delete from usuarios where usuario='$nom'"; mysql_query($query); unset( $_SESSION[ 'nombre' ] ) ; echo "<h2><b><br>Tus datos han sido eliminados</b></h 2>"; } ?> </center> </div> <!--end content --> <div id="siteInfo"> <img src="Imagenes/upct.jpg" width="35" height="35" /> <a href="/protegido/email.doc">Contacta con Nosotros</a> | &copy; 2006 Company Name </div> <br /> </body> </html>

134

17 Apndice I

CDIGO PHP: CERRAR SESIN


<? session_start(); // Destruye todas las variables de la sesi&oacute;n unset( $_SESSION[ 'nombre' ]) ; ?> <head> <meta http-equiv="Content-Type" content="text/html; charset=iso-88591" /> <title>PFC: Implementacin de seguridad Web</title> <link rel="stylesheet" href="estilos.css" type="text/css" /> </head> <body background="Imagenes/fondo.jpg"> <div id="masthead"> <h1 align="center" id="siteName">LA WEB DE JUANMA </h1> <div id="globalNav"> <p><img alt="" src="Imagenes/glbnav_background.gif" height="3 2" width="100%" id="gnl" /></p> </div> <h2 align="center" id="pageName">Cerrar Sesin</h2> </div> <div id="navBar"> <div id="search"> <form action="http://www.google.es"> <label>Buscar</label> <input type="text" size="10" /> <input type="submit" value="go" /> </form> </div> <div id="sectionLinks"> <h3>Enlaces</h3> <ul> <li><a href="http://www.upct.es">UPCT</a></li> <li><a href="http://www.teleco.upct.es">TELECO</a></li> <li><a href="http://redcampus.upct.es/redcampus/acceso.ht m">SECRETARIA VIRTUAL</a></li> <li><a href="http://www.bib.upct.es/">BIBLIOTECA UPCT</a> </li> <li><a href="http://www.upct.es/contenido/idi/index_idi.p hp/">I+D+I</a></li> <li><a href="http://www.alumnosteleco.upct.es/">DELEGACI N DE ALUMNOS</a></li> </ul> </div> <div class="relatedLinks"> <h3>Otros Links</h3> <ul> <li><a href="http://www.umu.es">UMU</a></li> <li><a href="http://www.universia.es">Universia</a></li> </ul> </div> </div> <!--end navBar1 div --> <div id="navBar1"> <div id="sectionLinks"> <h3>SECCIONES</h3>

Apndice I
<ul> <li><a href="index.php">Principal</a></li> <li><a href="iniciarSesion.php">Iniciar Sesin</a></li> <li><a href="galeriaFotos.php">Galeria de fotos</a></li> <li><a href="tusDatos.php">Tus Datos</a></li> <li><a href="usuariosOro.php">Usuarios Oro</a></li> <li><a href="cerrarSesion.php">Cerrar Sesin</a></li> </ul> </div> <div class="relatedLinks"> <h3>Registrarse</h3> <ul> <li><a href="registrarse.php">Registrate</a></li> </ul> </div> <div class="relatedLinks"> <h3>Baja usuarios</h3> <ul> <li><a href="bajaUsuarios.php">Baja</a></li> </ul> </div> </div> <!--end headlines --> <div id="content"> <br><br><br> <center> <h1>SESION CERRADA</h1> </center> </div> <!--end content --> <div id="siteInfo"> <img src="Imagenes/upct.jpg" width="35" height="35" /> <a href="/protegido/email.doc">Contacta con Nosotros</a> | &copy; 2006 Company Name </div> <br /> </body> </html>

136

18 Apndice J

CDIGO PHP: CLAVE ORO


<? session_start(); $_SESSION[ 'nombre' ] = $_POST[ 'usuario' ]; $_SESSION[ 'id' ] = $_POST[ 'IDUsuario' ]; ?> <head> <meta http-equiv="Content-Type" content="text/html; charset=iso-88591" /> <title>PFC: Implementacin de seguridad Web</title> <link rel="stylesheet" href="estilos.css" type="text/css" /> </head> <body background="Imagenes/fondo.jpg"> <div id="masthead"> <table width="100%"> <td width="98" align="left"> <img src="Imagenes/upct.jpg" width="85" height="85"/> </td> <td width="840" align="center"> <h1 align="center">LA WEB DE JUANMA</h1> </td> <td width="86" align="right"> <img src="Imagenes/upct.jpg" width="85" height="85" align ="right"/> </td> </table> <script language="JAVASCRIPT"> var refresH=1200; var numMensaje=0; msgS=new Array(); msgS[1]="Bienvenido a la wed de Juan Manuel"; msgS[2]="Universidad Politcnica de Cartagena"; msgS[3]="PFC titulado: 'Portales webs seguros'"; msgS[4]="PFC dirigido por: Pedro Snchez Palma"; msgS[5]=" "; function refrescar() { numMensaje += 1; if (numMensaje == msgS.length) numMensaje=1; window.status=msgS[numMensaje]; refreshC=setTimeout("refrescar();",refresH); } refrescar(); </script> <div id="globalNav"> <p><img alt="" src="Imagenes/glbnav_background.gif" height="3 2" width="100%" id="gnl" /></p> </div> <h2 id="pageName">Principal</h2> </div> <div id="navBar"> <div id="search"> <form action="http://www.google.es">

Apndice J
<label>Buscar</label> <input type="text" size="10" /> <input type="submit" value="go" /> </form> </div> <div id="sectionLinks"> <h3>Enlaces</h3> <ul> <li><a href="http://www.upct.es">UPCT</a></li> <li><a href="http://www.teleco.upct.es">TELECO</a></li> <li><a href="http://redcampus.upct.es/redcampus/acceso.ht m">SECRETARIA VIRTUAL</a></li> <li><a href="http://www.bib.upct.es/">BIBLIOTECA UPCT</a> </li> <li><a href="http://www.upct.es/contenido/idi/index_idi.p hp/">I+D+I</a></li> <li><a href="http://www.alumnosteleco.upct.es/">DELEGACI N DE ALUMNOS</a></li> </ul> </div> <div class="relatedLinks"> <h3>Otros Links</h3> <ul> <li><a href="http://www.umu.es">UMU</a></li> <li><a href="http://www.universia.es">Universia</a></li> </ul> </div> </div> <!--end navBar1 div --> <div id="navBar1"> <div id="sectionLinks"> <h3>SECCIONES</h3> <ul> <li><a href="index.php">Principal</a></li> <li><a href="iniciarSesion.php">Iniciar Sesin</a></li> <li><a href="galeriaFotos.php">Galeria de fotos</a></li> <li><a href="tusDatos.php">Tus Datos</a></li> <li><a href="usuariosOro.php">Usuarios Oro</a></li> <li><a href="cerrarSesion.php">Cerrar Sesin</a></li> </ul> </div> <div class="relatedLinks"> <h3>Registrarse</h3> <ul> <li><a href="registrarse.php">Registrate</a></li> </ul> </div> <div class="relatedLinks"> <h3>Baja usuarios</h3> <ul> <li><a href="bajaUsuarios.php">Baja</a></li> </ul> </div> </div> <!--end headlines --> <div id="content"> <? $NombreBD = "datos_usuarios"; $Servidor = "localhost"; $Usuario = "root"; $password = "45612696";

138

Cdigo php: Clave oro

$IdConexion = mysql_connect($Servidor, $Usuario, $password); mysql_select_db($NombreBD, $IdConexion); //Esta es la consulta que queremos hacer. $consulta = 'SELECT USUARIO,DIRECCION,EMAIL,IDUSUARIO,SEXO FR OM usuarios_oro;'; //mysql_query nos devuelve el identificador de la consulta. $IdConsulta = mysql_query($consulta, $IdConexion); //Nos devuelve el nmero de filas; $NFilas = mysql_num_rows($IdConsulta); for( $i=0; $i<$NFilas; $i++ ) { //Para recuperar los datos. $resultadoConsulta = mysql_fetch_array($IdConsulta); if( ( $resultadoConsulta[ "USUARIO" ] == $_POST[ 'usuario ' ] ) && ( $resultadoConsulta[ "IDUSUARIO" ] == md5( $_POST[ 'IDUsuario' ] ) ) ) { ?> <center> <br><br><br> <h2>Bienvenido <? echo $_SESSION[ 'nombre' ] ?></h2> <br><br><br> <table align="center" border="0" cellspac ing="0" cellpadding="1" width="50%"> <td align="left"> <a href="/protegido/Documentos" onmou seover="window.status='Enlace al directorio documentos';return true">Docu mentos</a> </td> <td align="right"> <a href="/protegido/Musica" onmouseov er="window.status='Enlace al directorio Musica';return true">Musica</a> </td> </table> <? break; } } if( ( $resultadoConsulta[ "USUARIO" ] != $_POST[ 'usuario' ] ) || ( $resultadoConsulta[ "IDUSUARIO" ] != md5( $_POST[ 'IDUsuario' ] ) ) ) { echo "<form action=\"claveOro.php\" method=\"POST\"> <br><br><br> <table align=\"center\" border=\"1\" cellspacing= \"0\" cellpadding=\"0\" width=\"450\"> <tr bgcolor=\"#C6C3C6\"> <td> <table align=\"center\" width=\"450\" border=\"0\" cellspacing=\"0\" cellpadding=\"1\"> <tr bgcolor=\"#400080\">

139

Apndice J
<td height=\"20\" class=\"td1 \" bgcolor=\"#000084\"> <b> <font color=\"#FFFFFF \"> &nbsp;Sistema de autentificacin de usuarios </font> </b> </td> </tr> <tr align=\"center\"> <td colspan=\"2\"> <table border=\"0\" cells pacing=\"0\" cellpadding=\"1\" width=\"100%\"> <tr> <td rowspan=\"3\" valign=\"top\" align=\"right\" width=\"12%\"> <img src=\"Im agenes/key.gif\" width=\"35\" height=\"40\"> </td> <td colspan=\"2\" class=\"td1\" height=\"42\"> <font color=\ "#0000ff\"> Nombre de usuario o password incorrectos </font> </td> </tr> <tr> <td width=\"18%\" class=\"td1\"> Usuario </td> <td width=\"70%\" > <input type=\ "text\" class=\"campo\" name=\"usuario\" size=\"25\"> </td> </tr> <tr> <td height=\"35\" width=\"18%\" class=\"td1\"> Contrasea </td> <td height=\"35\" width=\"70%\"> <input type=\ "password\" class=\"campo\" name=\"IDUsuario\" size=\"25\"> </td> </tr> </table> <table width=\"100%\" bor der=\"0\" cellspacing=\"0\" cellpadding=\"1\"> <tr> <td align=\"right \" width=\"47%\"> <input class= \"boton\" type=\"submit\" value=\"Aceptar\"> </td>

140

Cdigo php: Clave oro


<td align=\"right \" width=\"1%\"> &nbsp; </td> <td width=\"52%\" > <input class= \"boton\" type=\"reset\" value=\"Restaurar\"> </td> </tr> </table> </td> </tr> </table> </td> </tr> </table> </form>"; } ?> </div> <!--end content --> <div align="left" id="siteInfo"> <img src="Imagenes/upct.jpg" width="35" height="35" /> <a href="/protegido/email.doc">Contacta con Nosotros</a> | &copy; 2006 Company Name </div> <br /> </body> </html>

141

19 Apndice K

CDIGO PHP: CONFIRMACIN DE DATOS


<head> <meta http-equiv="Content-Type" content="text/html; charset=iso-88591" /> <title>PFC: Implementacin de seguridad Web</title> <link rel="stylesheet" href="estilos.css" type="text/css" /> </head> <body background="Imagenes/fondo.jpg"> <div id="masthead"> <h1 align="center" id="siteName">LA WEB DE JUANMA </h1> <div id="globalNav"> <p><img alt="" src="Imagenes/glbnav_background.gif" height="3 2" width="100%" id="gnl" /></p> </div> <h2 align="center" id="pageName">Confirmar Datos</h2> </div> <div id="navBar"> <div id="search"> <form action="http://www.google.es"> <label>Buscar</label> <input type="text" size="10" /> <input type="submit" value="go" /> </form> </div> <div id="sectionLinks"> <h3>Enlaces</h3> <ul> <li><a href="http://www.upct.es">UPCT</a></li> <li><a href="http://www.teleco.upct.es">TELECO</a></li> <li><a href="http://redcampus.upct.es/redcampus/acceso.ht m">SECRETARIA VIRTUAL</a></li> <li><a href="http://www.bib.upct.es/">BIBLIOTECA UPCT</a> </li> <li><a href="http://www.upct.es/contenido/idi/index_idi.p hp/">I+D+I</a></li> <li><a href="http://www.alumnosteleco.upct.es/">DELEGACI N DE ALUMNOS</a></li> </ul> </div> <div class="relatedLinks"> <h3>Otros Links</h3> <ul> <li><a href="http://www.umu.es">UMU</a></li> <li><a href="http://www.universia.es">Universia</a></li> </ul> </div> </div> <!--end navBar1 div --> <div id="navBar1"> <div id="sectionLinks"> <h3>SECCIONES</h3> <ul> <li><a href="index.php">Principal</a></li> <li><a href="iniciarSesion.php">Iniciar Sesin</a></li> <li><a href="galeriaFotos.php">Galeria de fotos</a></li> <li><a href="tusDatos.php">Tus Datos</a></li>

Apndice K
<li><a href="usuariosOro.php">Usuarios Oro</a></li> <li><a href="cerrarSesion.php">Cerrar Sesin</a></li> </ul> </div> <div class="relatedLinks"> <h3>Registrarse</h3> <ul> <li><a href="registrarse.php">Registrate</a></li> </ul> </div> <div class="relatedLinks"> <h3>Baja usuarios</h3> <ul> <li><a href="bajaUsuarios.php">Baja</a></li> </ul> </div> </div> <!--end headlines --> <div id="content"> <br><br><br> <h2 align="center">Confirmacin de los datos</h2> <form name="Confirmacion" method="post" action="almacenadoDatos.p hp" enctype="multipart/form-data"> <table width="400" border="1" align="center" cellpadding="5" cellspacing="0" bgcolor="#CCCCCC"> <tr> <!--Validando el valor de entrada para el nombre--> <td width="47%"> Nombre </td> <td> <?php if( empty( $_POST[ 'usuario' ] ) ) { echo( "Nombre invlido" ); $contador = 1; } elseif( ( strlen( $_POST[ 'usuario' ] ) < 5 ) || ( strlen( $_POST[ 'usuario' ] ) > 20 ) ) { echo( "Longitud del nombre invalida, entr e 5 y 20 caracteres" ); $contador = 1; } else { echo $_POST[ 'usuario' ]; } ?> </td> </tr> <tr> <!--Validando el valor del campo address--> <td width="47%"> Direccin </td> <td> <?php if( empty( $_POST[ 'direccion' ] ) ) { echo( "Direccin invlida" );

143

Cdigo php: Confirmacin de datos


$contador = 1; } elseif( ( strlen( $_POST[ 'direccion' ] ) < 5 ) || ( strlen( $_POST[ 'direccion' ] ) > 200 ) ) { echo( "Longitud de la direccin invalida, entre 5 y 200 caracteres" ); $contador = 1; } else echo $_POST[ 'direccion' ]; ?> </td> </tr> <tr> <td width="47%"> Correo electrnico </td> <td> <?php if( empty( $_POST[ 'email' ] ) ) { echo( "Direccin de correo invlida" ); $contador = 1; } elseif( ( strlen( $_POST[ 'email' ] ) < 5 ) | | ( strlen( $_POST[ 'email' ] ) > 50 ) ) { echo( "Longitud del email invalida, entre 5 y 50 caracteres" ); $contador = 1; } else echo $_POST[ 'email' ]; ?> </td> <tr> <td width="47%"> Contrasea </td> <td> <?php if( empty( $_POST[ 'IDUsuario' ] ) || empty( $_POST[ 'CIDUsuario' ] ) ) { echo( "Contrasea invlida" ); $contador = 1; } elseif( ( strlen( $_POST[ 'IDUsuario' ] ) < 5 ) || ( strlen( $_POST[ 'CIDUsuario' ] ) > 15 ) ) { echo( "Longitud de la contrasea invalida , entre 5 y 15 caracteres" ); $contador = 1; } elseif( !( strlen( $_POST[ 'IDUsuario' ] ) == strlen( $_POST[ 'CIDUsuario' ] ) ) ) { echo( "Las contraseas no coinciden" ); $contador = 1; }

144

Apndice K
elseif( !( $_POST[ 'IDUsuario' ] === $_POST[ 'CIDUsuario' ] ) ) { echo( "Las contraseas no coinciden" ); $contador = 1; } else echo $_POST[ 'IDUsuario' ]; ?> </td> </tr> <tr> <td width="47%"> Sexo </td> <td> <?php if( empty( $_POST[ 'genero' ] ) ) { echo( "No se ha especificado el sexo" ); $contador = 1; } elseif( !( ( $_POST[ 'genero' ] == "Hombre" ) || ( $_POST[ 'genero' ] == "Mujer" ) ) ) { echo( "Valor invlido para el sexo" ); $contador = 1; } else echo $_POST[ 'genero' ]; ?> </td> </tr> <tr> <td colspan="3"> <form name=confir action="almacenadoDatos.php"> <?php echo "<input type=hidden name=\"usuario\" value=\"".$_POST[ 'usuario' ]."\">\n"; echo "<input type=hidden name=\"direccion \" value=\"".$_POST[ 'direccion' ]."\">\n"; echo "<input type=hidden name=\"email\" v alue=\"".$_POST[ 'email' ]."\">\n"; echo "<input type=hidden name=\"IDUsuario \" value=\"".$_POST[ 'IDUsuario' ]."\">\n"; echo "<input type=hidden name=\"CIDUsuari o\" value=\"".$_POST[ 'CIDUsuario' ]."\">\n"; echo "<input type=hidden name=\"genero\" value=\"".$_POST[ 'genero' ]."\">\n"; if( $contador != 1 ) { ?> <center> <input type="submit" name="Su bmit" value="Confirmar"> </center> <? } ?> </form> </td>

145

Cdigo php: Confirmacin de datos


</tr> </table> </form> </div> </div> <!--end content --> <div id="siteInfo"> <img src="Imagenes/upct.jpg" width="35" height="35" /> <a href="/protegido/email.doc">Contacta con Nosotros</a> | &copy; 2006 Company Name </div> <br /> </body> </html>

146

20 Apndice L

CDIGO PHP: FOTOS


<? session_start(); ?> <HTML> <HEAD> <title>LA WEB DE JUANMA MACHOTE. FOTOS AMIGOS</title> <link href="estilos1.css" rel="stylesheet" type="text/css" media= "print"> <HEAD> <BODY bgcolor="#CCCCCC" oncontextmenu="return false" onkeydown="retur n false" background="Imagenes/fondo.jpg"> <div class=\"nover\"> <? if ( $_SESSION['nombre'] == '' ) { echo "caca"; exit; } else echo "<table width=\"100%\" border=\"0\" cellspacing= \"1\" cellpadding=\"0\"> <tr> <td align=\"left\"><img src=\"./Imagenes/ eli&po.jpg\" width=\"150\" hight=\"150\"></td> <td align=\"center\"><img src=\"./Imagene s/ju&ali.jpg\" width=\"150\" hight=\"150\"></td> <td align=\"right\"><img src=\"./Imagenes /luc&noe.jpg\" width=\"150\" hight=\"150\"></td> </tr> <tr> <td align=\"left\"><img src=\"./Imagenes/ \" width=\"150\" hight=\"150\"></td> <td align=\"center\"><img src=\"./Imagene s/pe&pa.jpg\" width=\"150\" hight=\"150\"></td> <td align=\"right\"><img src=\"./Imagenes /ali&jua.jpg\" width=\"150\" hight=\"150\"></td> </tr> <tr> <td align=\"left\"><img src=\"./Imagenes/ noe&lola.jpg\" width=\"150\" hight=\"150\"></td> <td align=\"center\"><img src=\"./Imagene s/\" width=\"150\" hight=\"150\"></td> <td align=\"right\"><img src=\"./Imagenes /ma&pa.jpg\" width=\"150\" hight=\"150\"></td> </tr> <tr> <td align=\"left\"><img src=\"./Imagenes/ fi&ma.jpg\" width=\"150\" hight=\"150\"></td> <td align=\"center\"><img src=\"./Imagene s/parejas.jpg\" width=\"150\" hight=\"150\"></td> <td align=\"right\"><img src=\"./Imagenes /chicas.jpg\" width=\"150\" hight=\"150\"></td> </tr> </table>"

Apndice L
?> </div> </BODY> </HTML>

148

Apndice M

CONFIGURACIN httpd.conf
LoadModule php4_module libexec/libphp4.so

. . .
<IfDefine SSL> Listen 80 Listen 443 </IfDefine>

. . .
DocumentRoot "/usr/local/apache2/htdocs"

. . .
<Directory "/usr/local/apache2/htdocs/protegido"> AuthName "privatefiles" AuthType Basic AuthUserFile /usr/local/apache2/conf/passwd_basic Require valid-user </Directory> <Directory "/usr/local/apache2/htdocs/protegido"> AuthName "privatefiles" AuthType Basic AuthUserFile /usr/local/apache2/conf/passwd_basic AuthGroupFile /usr/local/apache2/conf/ficherogrupos Require group grupo1 </Directory> <Directory /> Options None AllowOverride None </Directory> <Directory /MiSitio> Options Indexes FollowSymLinks Includes AllowOverride None </Directory>

. .

Apndice M .
<IfModule mod_dir.c> DirectoryIndex index.html index.php index.php3 </IfModule>

. . .

150

BIBLIOGRAFA
[1] http://www.sindominio.net/suburbia/article.php3?id_article=33 [2]http://exa.unne.edu.ar/depar/areas/informatica/SistemasOperativos/MonogSO/SEGUNI X01.htm [3] http://www.cert.org [4] http://www.sans.org [5] http://www.17799central.com/spain.htm [6] Seguridad en las comunicaciones y en la informacin. Gabriel Daz, Francisco Mur, Elio Sancristbal, Manuel Castro, Juan Peire. Pginas 144-155. Enero 2004 [7] http://www.aeat.es/normlegi/otros/lortad2000.htm [8] firewall.attacks.html http://es.tldp.org/almacen/Manuales-LuCAS/GARL2/garl2/x-082-2-

[9] http://www.todomba.com/displayarticle483.html [10] http://es.wikibooks.org/wiki/Hacks_para_Unixlike:Tipos_de_ataques_remotos#Escaneo_de_puertos [11] http://es.tldp.org/Manuales-LuCAS/ [12] http://es.wikipedia.org/wiki/Sistema_de_detecci%C3%B3n_de_intrusos [13] http://es.wikipedia.org/ [14] http://www.cert.org

Bibliografa [15] http://www.technotronic.com/ [16] http://www.dgonzalez.net [17] http://www-i2.informatik.rwth-aachen.de/Staff/Current/noll/Publications/ [18] http://www.rediris.es/ y Teleco-Forum UPCT 2006 conferencia Seguridad en Redes: BotNets. [19] http://csrc.nist.gov/publications/nistpubs/ [20] http://penta.ufrgs.br [21] http://www.cisco.com/ [22] Seguridad en las comunicaciones y en la informacin. Gabriel Daz, Francisco Mur, Elio Sancristbal, Manuel Castro, Juan Peire. Pginas 340-346. Enero 2004 [23] www.fnmt.es/ [24] https://www.cert.fnmt.es/certifi.htm [25] http://www.ace.es/ [26] http://www.feste.com/ [27] http://www.ipsca.es/ [28] http://revista.robotiker.com/ [29] http://httpd.apache.org/docs/2.0/es/env.html [30] http://www.theregister.co.uk/2003/10/06/linux_vs_windows_viruses/ [31] http://es.tldp.org/Manuales-LuCAS/GSAL/gsal-19991128-htm/

152

Bibliografa [32] Seguridad y Comercio en el Web. Simson Garfinkel y Gene Spafford. Pginas 233243 [33] http://www.verisign.es/support/ssl-certificates-support/page_es_es_dev022169.html [34] http://www.desarrolloweb.com/articulos/392.php?manual=27 [35] www.php.net [36] Proyectos profesionales PHP. Ass Wilfred, Meeta Gupta y Kartik Bhatnagar con NIIT. [37] http://www.programacion.com/bbdd/ [38] Aprenda programacin en SQL Server 2000 Ya. Rebecca M. Riordan. Pginas 311363 [39] http://www.abcdatos.com/webmasters/tutorial/o899.html

153

También podría gustarte