Cuando se instala un servidor web Apache, es importante dedicar tiempo suficiente para realizar tareas de tunning y fortalecer la seguridad del servidor ante las múltiples amenazas que se encuentran en entornos poco fiables como internet. En este sentido, los módulos y las librerías que pueden ser instaladas, habilitadas y posteriormente configuradas representan una pieza fundamental en este puzzle de tener un servidor web en condiciones para atender usuarios de forma segura garantizando la confidencialidad e integridad de la información. En esta publicación se hablará un poco sobre la librería AMON.SO y el módulo MOD_DEFLATE, en próximas publicaciones se hablará sobre más librerías y módulos interesantes para Apache.
Mes: julio 2012
Estamos acostumbrados a ejecutar ataques de reconocimiento y escaneo de puertos desde herramientas como Nmap de una forma casi automática, hasta el punto en el que muchas ocasiones se suele caer en el “olvido” de los tipos de escaneo que pueden llevarse a cabo con dichas herramientas y en que circunstancias es apropiado su uso. Los tipos de escaneos que pueden llevarse a cabo desde Nmap, también se pueden llevar a cabo desde Scapy simplemente manipulando los campos de los paquetes que se envían a los objetivos, la ventaja de tener este conocimiento sobre el uso clásico de Nmap, es que como se ha comentado desde la primera publicación de esta serie, con Scapy tenemos las respuestas de los objetivos en estado “crudo” lo que quiere decir que el trabajo interpretativo se deja plenamente al programador, mientras que con Nmap, solamente se obtienen estados deterministas que son Abierto|Cerrado|Filtrado y que en muchas ocasiones resultan confusos y no dan demasiada información de lo que realmente ha sucedido con un puerto determinado.
Anteriormente se ha hablado del uso del modulo ModSSL para habilitar SSL v2/v3 y TLSv1 en Apache, sin embargo se ha hablado de este potente módulo de una forma muy superficial, por este motivo, la intensión de este articulo es simplemente, explicar en mayor profundidad el uso de ModSSL y algunas de las directivas más interesantes que se encuentran disponibles.
Cuando se instala un servidor Apache que se expondrá en entornos no seguros como internet, implementar medidas de seguridad básicas como el cifrado de las comunicaciones es una actividad que es altamente recomendable. En esta publicación se hablará de como utilizar Apache con soporte a SSL.
En primer lugar, se explicará como habilitar el soporte de SSL en el servidor web, por lo tanto es necesario instalarlo como se ha indicado en la publicación anterior a esta, los pasos son simples y se pueden resumir así:
- Instalar el servidor web
- Instalar OpenSSL
- Generar un certificado para el servidor utilizando OpenSSL.
- Habilitar el soporte que tiene Apache para SSL
- Establecer las directivas para SSL en el fichero de configuración del servidor.
Además de las directivas mencionadas en la publicación anterior, existen algunas otras que permiten un control mucho más “especifico” sobre características de seguridad en el servidor web Apache, el objetivo de esta publicación es intentar explicar como funcionan dichas directivas y algunos “tips” de seguridad que normalmente se suelen aplicar para proteger la infraestructura del servidor web y las aplicaciones que en él se alojan.
Antes de comenzar a probar ataques sobre servidores y aplicaciones web, es importante saber como funciona el servidor web que estamos probando, es por este motivo que conocer las medidas de seguridad, módulos y demás herramientas con las que cuenta un administrador de sistemas es realmente importante ya que este conocimiento le permite a un hacker entender y detectar con mayor facilidad cuando un servidor web se encuentra mal configurado o es vulnerable en algún punto. Aunque existen muchísimos servidores web en el mercado, en esta entrada y en las próximas se hablará sobre uno de los más conocidos y utilizados en todo el mundo: Apache web server (en próximas publicaciones se hablará sobre Apache Tomcat). Vamos a comenzar…
Todas las aplicaciones web tienen recursos que deben utilizar para brindar funcionalidades consistentes a sus usuarios, dichos recursos pueden ser elementos tan simples como imágenes, hojas de estilos CSS, páginas HTML estáticas, documentos de texto y casi cualquier tipo de elemento que contenga información. En muchas ocasiones el volumen de información manejada por una aplicación puede ser tan grande que el mantenimiento y administración de estos recursos puede ser muy complejo y evidentemente, propenso a errores, es en ese momento donde pueden ocurrir fugas de información privada o sensitiva que no debería estar expuesta al publico por el contenido de la misma, así como también pueden dejarse fallos sobre la configuración del servidor web o la aplicación. En este punto, un hacker o pentester “entra en escena” recolectando y analizando toda esta información. Se trata del primer paso que siempre se debe realizar, recolectar información del sistema o aplicación objetivo y “encajar” las piezas, como si tratara de un puzzle, cada pieza de información permite tener una imagen global del funcionamiento de la aplicación y por consiguiente, de los fallos que esta puede tener.
Durante el proceso de pruebas de seguridad de una aplicación web, se suele tener la falsa concepción de que la revisión automatizada es eficiente y efectiva, es así como muchos testers y pentesters (especialmente los menos experimentados) suelen anteponer y priorizar los resultados devueltos por scanners de vulnerabilidades en aplicaciones web sobre la inspección manual, con esto no se pretende de ninguno modo desestimar la labor que desempeñan dichas herramientas como scanners y frameworks de penetración, solamente que es necesario comprender que dichas herramientas tienen sus propias LIMITACIONES y que no se puede esperar que una utilidad que ha sido creada para aplicaciones genéricas funcione del mismo modo para aplicaciones con un alto nivel de personalización. Dadas estas premisas, esta claro que el uso de las herramientas no es suficiente para afrontar el reto que implica desplegar una aplicación web segura, es necesario que la persona responsable y el equipo involucrado tenga presentes como mínimo las siguientes técnicas sobre el testing de una aplicación web
Este es el primer artículo de una serie de entradas que se publicarán en este sitio de forma periódica sobre un tema que actualmente se encuentra en constante evolución (y crecimiento), la seguridad en aplicaciones web y pentesting. Se trata de un tema que dada su complejidad y cantidad de información disponible puede abarcar un buen número de entradas (que al momento de escribir este documento no tengo del todo claro), sin embargo intentaré que sea lo más profundo y a la vez fácil de comprender para todo el mundo.