Securizar un poquito nuestro servidor web Apache

En este pequeño tutorial os voy a explicar un par de configuraciones de seguridad para Apache, mi servidor web preferido.

Imagen de pixabay.com

Evitar listado de directorios

Concretamente cómo evitar que se liste el contenido de una carpeta si no existe el archivo servido por defecto, normalmente index.html o index.php, marcado por la directiva DirectoryIndex:


DirectoryIndex index.php


Si no establecemos este tipo de configuración puede pasar que un usuario malintencionado escriba una url, como suele ocurrir en un WordPress, de forma que pueda ver todos los contenidos que hemos subido a alguna de las subcarpetas donde se suben las imágenes:

Tenemos dos posibilidades según las características de nuestro alojamiento:

1 – Si tenemos acceso a los VirtualHost ubicados en /etc/apache2/sites-available, en las distribuciones basadas en Debian, editamos el que corresponda, por ejemplo default:

nano /etc/apache2/sites-available/default

Y deshabilitamos los listados estableciendo la opción -Indexes en el Directory adecuado:

        <Directory /var/www/vhost/>
                Options -Indexes FollowSymLinks MultiViews
                AllowOverride None
                Order allow,deny
                allow from all
        </Directory>

Recordad que siempre que hagamos un cambio en la configuración, hay que reiniciar el servicio correspondiente, en este caso apache2:

service apache2 restart


o para los más puristas, como el presente, simplemente recargar la configuración de apache2, sobre todo si es un servidor en producción:

service apache2 reload

2 – Si no tenemos acceso a los VirtualHost, pero nos permiten utilizar .htaccess, caso de la mayoría de los shared hosting, para lo cual es necesario un AllowOverride All, que habrán establecido los administradores del mismo:

        <Directory /var/www/vhost/>
                Options Indexes FollowSymLinks MultiViews
                AllowOverride All
                Order allow,deny
                allow from all
        </Directory>

A lo que vamos, en la carpeta en cuestión, raíz de WordPress en este caso, y así lo heredan todas las subcarpetas, crearemos si no existe un fichero .htaccess. Para ello primero nos ubicamos en la carpeta correcta:

cd /var/www/vhost/wordpress/

Editamos con nuestro editor preferido el mencionado archivo, de forma que si no existe lo creará vacío:

nano .htaccess

Y en el escribiremos o añadiremos esta directiva:

Options -Indexes

Y como siempre, reiniciamos o recargamos el servicio:

service apache2 restart | reload

Ocultamos información comprometida

La segunda configuración que podemos aplicar para ponérselo un poco más difícil a los posibles atacantes tiene que ver con no revelar información sensible, como:

  • el Sistema Operativo, en mi caso Debian, 
  • o la versión de Apache, 

Para ello tocaremos las directivas ServerTokens estableciéndola a Prod, y ServerSignature estableciéndola a Off.

Necesitamos en este caso editar el fichero security ubicado en la carpeta /etc/apache2/conf.d/

cd /etc/apache2/conf.d/
nano security

y dejamos así las mencionadas directivas:

ServerTokens Prod
ServerSignature Off

Espero que os guste y sobre todo que os sirva.
Si es así, me harías un favor al compartir en tus redes sociales 😉

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.