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:
Espero que os guste y sobre todo que os sirva.
Si es así, me harías un favor al compartir en tus redes sociales 😉