CaFe.pm - Perl Mongers de Capital Federal
http://cafe.pm.org/


Review de "Apache Security"

por Leonardo Pigñer (lpigner@gmail.com)


Autor: Ivan Ristic
Editorial: O'Reilly (Primera Edición Marzo del 2005)
ISBN: 0-596-00724-8



Introducción

Cuando este libro llego a mis manos, no tenía demasiadas expectativas con lo que me iba a encontrar, pero tras una breve ojeada al índice, y al contenido en general, eso rápidamente cambio. Mi ansiedad por leerlo fue mayor aun, cuando me di cuenta que el autor del libro, Ivan Ristic, era el mismo que creó el conocido modulo de seguridad para Apache, llamado mod_security, el cual también esta cubierto en esta publicación.

Luego de haber leído este libro, puedo decir que finalmente encontré un recurso sobre seguridad en Apache que es realmente completo, donde por lo general, podemos encontrar numerosos manuales y guías, que nunca terminan de tratar todos los temas correctamente. Para todos los que se dedican al desarrollo, o a la administración de sistemas, este libro es más que recomendable para tenerlo en la biblioteca.

A continuación iremos repasando cada uno de los capítulos de Apache Security:

Capítulo 1 - Apache Security Principles

Muy brevemente, el autor repasa algunas políticas, definiciones, y convenciones de seguridad que se verán a lo largo del libro, nada muy novedoso, pero para los que recién comienzan a meterse en la seguridad les puede venir bien.

Capítulo 2 - Installation and Configuration

Una de las bases para una buena arquitectura de seguridad, de cualquier software que usemos, es una correcta instalación del producto. Sin dudas el autor esta consciente de esto, y hace una detallada explicación de como instalar Apache, como elegir apropiadamente los módulos que necesitamos, y cual es la mejor forma de asegurarlo.

Una de las cosas que me sorprendió, porque raramente lo encontramos en guías y manuales, y a mi juicio es muy importante, es que cubre como ocultar la información que brinda Apache para que sea más difícil identificarlo con respecto a otro servidor web, y que también explica como "encerrar" al servidor, para que en caso de que posea alguna vulnerabilidad y un atacante logre tomar control de el, no pueda salir hacia el sistema operativo.

Capítulo 3 - PHP

Ultimamente PHP se ha vuelto bastante popular para programar aplicaciones web, y junto con Apache, ya son como el fernet con coca. En este capítulo, y en pocas hojas, podemos ver como instalar PHP con Apache de forma segura.

Capítulo 4 - SSL and TLS

Este es un capítulo interesante. Comienza con una primera parte teorica, en donde muy claramente, se explica la necesidad de usar SSL, los diferentes tipos de criptografía, la historia de SSL, las ventajas y desventajas que el protocolo SSL posee, y el funcionamiento de OpenSSL.

En una segunda parte, ya entramos mas a lo técnico, y vemos como instalar el modulo mod_ssl en Apache. Algo que encuentro realmente bueno, es que esta explicado detalladamente, como generar los certificados digitales, y como usarlos de las diferentes formas posibles con entidades certificantes.

Capítulo 5 - Denial of Service Attacks

Para los que no conocen demasiado sobre ataques de denegación de servicio, este capítulo puede ser muy instructivo. No solo cubre los conocidos ataques de DoS remotos, sino también los que se generan a partir de pobres configuraciones de Apache, algunos DoS que se pueden hacer localmente, y varios tips para prevenirlos a todos ellos.

Capítulo 6 - Sharing Servers

Nuevamente un capítulo que me sorprende. El principal foco de este capítulo, es la problemática de tener numerosos usuarios con acceso al sistema, para que puedan actualizar sus websites, y el peligro que representan los scripts que estos puedan usar. Vamos a encontrar muy buenos consejos para setear permisos de directorios correctamente, y para que desde un script subido por un usuario no se pueda comprometer todo el sistema.

Capítulo 7 - Access Control

Un capítulo muy breve, donde encontramos los métodos básicos de autenticación que posee Apache, para acceder a un recurso determinado. También hay un breve ejemplo, de como filtrar el acceso por la IP de origen del cliente, lo que suele ser muy útil.

Capítulo 8 - Logging and Monitoring

La problemática del logging es muy importante, no solo para Apache sino para cualquier sistema, y en este capítulo esta muy bien tratado. De una manera clara y concisa, el autor explica como interpretar los logs, que cosas loguear, las diferentes formas en que podemos realizar el logging, como mantener los logs y las estrategias que podemos usar para ello. También muestra algunas herramientas para realizar estadísticas y monitoreo de los logs, y hasta el código de algunos scripts que nos pueden servir, por supuesto en Perl!

Capítulo 9 - Infrastructure

Este es un capítulo bastante teórico. En una primera parte, vamos a encontrar una serie de políticas de seguridad básicas, que todo buen admin de sistemas (yo no conozco a ninguno) debería conocer, para mantener a sus servidores seguros.

La segunda parte, se vuelve un poco mas entretenida, y encontramos por ejemplo, diferentes diseños que podemos realizar para situar nuestros servidores web dentro de la arquitectura de seguridad de nuestra red. También es muy interesante el trato que se le da a los Proxys Reversos, que no suelen ser muy populares, pero si extremadamente útiles.

Capítulo 10 - Web Application Security

La programación segura de aplicaciones, es un tema que daría para libros completos, y es imposible de cubrir en un simple capítulo. El autor consciente de ello, describe los errores más comunes que se pueden cometer al programar una aplicación web, y brinda una gran cantidad de links a diferentes recursos, para que el lector pueda seguir investigando sobre ello.

Capítulo 11 - Web Security Assessment

Otro capítulo interesante, el autor describe como comprobar la seguridad de nuestro servidor web, utilizando las mismas técnicas que un atacante externo usaría. Luego, explica lo mismo pero con una metodología diferente, en donde al realizar los ataques ya poseemos información interna, como el código fuente de las aplicaciones, o la configuración del Apache, por ejemplo.

Capítulo 12 - Web Intrusion Detection

Finalmente llegamos a la salsa del autor, mod_security. El capítulo comienza con un poco de teoría sobre los IDS (Intrusion Detection System), y luego se vuelca de lleno a mod_security. Este módulo le brinda a una instalación de Apache, un valor agregado inmenso, en lo que respecta a su seguridad, y debería ser tenido en cuenta por cualquier buen admin de sistemas que se precie de serlo.