Bastionar Apache

Instalación

  • Mejor compilar que instalar de binarios.
  • Mejor en un entorno chroot

Actualizaciones.

Hay que mantener el servidor actualizado con las últimas actualizaciones. A la hora de actualizar comprobar el changelog para ver si hay incompatibilidades.

Si lo hemos instalado desde los repositorios podemos hacer <sxh>yum update httpd</sxh>

Desactivar los módulos innecesarios

Para ver los módulos cargados ejecutar <sxh> httpd -t -D DUMP_MODULES</code> o bien <sxh bash>grep LoadModule /etc/httpd/conf/httpd.conf</sxh> <sxh bash>grep LoadModule /etc/apache2/apache2.conf</sxh>

para ver los módulos con los que se compiló<sxh> httpd -V</sxh>

Todos los módulos que hay para Apache están documentados en la siguiente URL: http://modules.apache.org/

Módulos que se suelen cargar por defecto:

  • mod_imap: Que ofrece servicio de mapeo automático de ficheros de índice del lado del servidor.
  • mod_include: Habilita los includes de ficheros del lado del seridor. Los .shtml.
  • mod_info: Da información sobre el servidor. Los escáneres rastrean la información que ofrece. Se suele habilitar en pruebas y desarrollo, pero no en producción.
  • mod_userdir: Para mapear los directories personales de los usuarios. También está el mod-ldap-userdir para hacerlo vía árboles ldap.
  • mod_status: Para tener estadísticas.
  • mod_cgi: Ofrece soporte para ejecución de cgis. Si no tienes programas cgi en tu servidor deshabilítalo.
  • mod_autoindex: Listados de directorio para cuando no hay archivo por defecto.

Para desactivar un módulo y que no se cargue basta con poner un comentario en la línea que carga el módulo en el fichero de configuración Como minimo eliminar o deshabilitar los siguientes módulos

  • mod_negotiation
  • mod_user_dir

En CentOS / Redhat (RHEL) / Fedora para deshabilitar un módulo deberemos de renombrar dicho módulo quitándole la extensión .conf y reiniciamos el servicio del apache

Por ejemplo para deshabilitar el modulo mod_python vamos a la carpeta /etc/httpd/conf.d/ y renombramos el fichero python.conf a python.bak y reiniciamos el servidor apache

Para habilitar un módulo basta con hacer el proceso contrario. Renombramos el fichero a su extensión .conf y reiniciamos el servicio de apache

En Debian / Ubuntu para deshabilitar un módulo podemos usar dos scripts :

  • a2enmod es un script para habilitar un módulo dentro de la configuración del apache2.
  • a2dismod es un script para deshabilitar un módulo

La forma de deshabilitar un módulo sería ejecutarlo <sxh>a2dismod {nombre-módulo}</sxh> y para habilitar un módulo sería con <sxh>a2enmod {nombre-módulo}</sxh>

con el comando apachectl configtest debemos de comprobar que no hemos deshabilitado un módulo que estemos usando

Instalar módulos

Para agregar nuevos módulos mediante el comando config-status.

Ejemplo Instalación de Módulos

Para instalar módulos, el primer módulo que debe ser activado es el módulo para módulos, esto se realiza mediante el comando:

./config.status --activate-module=src/modules/standard/mod_so.c

El comando anterior agrega mod_so (el módulo de módulos) a config.status; para instalar otros módulos se utilizan parámetros similares:

./config.status --enable-module=proxy 

Módulos que pueden aumentar la seguridad

  • mod_rewrite
  • mod_headers
  • mod_setenvif
  • mod_security
  • mod_auth
  • mod_ssl

El mod_security hace las veces de firewall de las aplicaciones web y nos permite además monitorizar el tráfico en tiempo real.

El mod_evasive nos protege de ataques por fuerza bruta y DDos

Para instalar ambos módulos

yum install mod_security mod_evasive

<note>reiniciar el servicio httpd para aplicar los cambios </code>

Permisos

  1. Sólo el administrador debe poder modificar los archivos de configuración para que nadie más pueda manipularlos.
  2. Crear una cta para arrancar y parar los servicios
  3. Crear un grupo para gestionar el servidor

Suministrar la menor información

Modificamos /etc/httpd/conf/httpd.conf

ServerTokens ProductOnly
ServerSignature Off

Quitar el acceso a los listados de directorios

quitar o comentar el acceso a los index

## option indexes FlollowSymLinks

También podemos podemos editar la configuración y usar la orden options

<Directory /var/www/html>
     Options -Indexes
</directory>

Desactivar la directiva de uso como proxy

ProxyRequests off

Directiva FilesMacth Limitar los ficheros a descargar

<FilesMatch "\.(old|bak|tgz|sql|inc|tar\.gz|zip|rar)$">
   Order Deny,Allow
   Deny from All
</FilesMatch>

Fortificar con Varnish

Herramientas

Referencias