LinuxParty
Tanto si ya tienes un blog como si alguna vez te has planteado arrancar uno, una de las decisiones tecnológicas que habrás tomado (o que tendrás que tomar) es la elección de la plataforma a utilizar y si optarás por un servicio gestionado (como Tumblr, Blogger o WordPress.com) o bien asumir la gestión completa desplegando un gestor de contenidos web (como WordPress o Drupal) en un servicio de hosting. Al asumir la gestión, tendremos que velar por la disponibilidad de nuestro blog y, por tanto, estar atentos a parches de seguridad y, sobre todo, optimizar la configuración para evitar accesos de terceros con no muy buenas intenciones. Si usamos un servidor web Apache (uno de los más extendidos), podremos contar con un recurso muy útil pero, a su vez, algo complejo: el archivo .htaccess.
¿Qué es el archivo .htaccess? El archivo .htaccess (hypertext access) es un archivo de configuración muy popular en servidores web basados en Apache que permite a los administradores aplicar distintas políticas de acceso a directorios o archivos con la idea de mejorar la seguridad de su página web y, por tanto, evitar acceso a terceros. Cuando visitamos una página web cualquiera y pulsamos sobre un enlace o queremos descargarnos un archivo, en el proceso de trámite de la petición, el servidor web consulta el archivo .htaccess con la idea de aplicar las directivas y restricciones definidas antes de cursar la petición y, lógicamente, cancelar peticiones que se encuentren prohibidas dentro de este archivo (cuyo ámbito de actuación es el directorio en el que se encuentra y todos los subdirectorios que se encuentran por debajo de éste).
¿Y qué podremos controlar con este archivo? Gracias a este archivo podremos configurar nuestro servidor web para hacerlo algo más seguro pero, además, también podremos realizar redirecciones, crear mensajes de error personalizados, restringir el acceso a carpetas, evitar el listado de directorios de nuestro servidor o permitir el uso de nuestro dominio sin usar las famosas ‘www’.
Poniendo el foco en la seguridad, vamos a dedicar unos minutos a revisar algunos puntos que deberíamos tener en cuenta a la hora de configurar nuestro servidor web:
Evitar el listado del contenido de un directorio
Uno de los primeros indicadores que nos pueden alertar de una configuración insegura de un servidor web es poner en la barra de direcciones del navegador una url que apunte a un directorio del servidor (http://www.dominio.es/images
) y que el navegador nos muestre un listado de las carpetas y archivos que ahí se alojan. Salvo que lo tengamos pensado así de manera expresa, deberíamos evitar que este tipo de cosas sucedan puesto que estamos abriendo el contenido completo de nuestra web a terceros y, precisamente, para controlar este tipo de situaciones podemos usar las directivas DirectoryIndex
u -Indexes
para definir índices que eviten listar el contenido de una carpeta.
Proteger archivos y carpetas importantes
Si bien es importante evitar el acceso a los directorios, también lo es proteger archivos considerados críticos, como por ejemplo los archivos de configuración. Si bien usar un gestor de contenidos web nos facilita mucho las cosas, éstos responden a esquemas fijos que se repiten en cada instalación y, por tanto, los archivos de configuración se encuentran en ubicaciones muy concretas y conocidas.
Si pensamos un momento en WordPress, el archivo wp-config.php
(que se encuentra en el raíz) almacena la dirección de nuestra base de datos, la base de datos que usamos así como el usuario y la contraseña, una información de gran valor para un atacante externo. Para evitar el acceso a este tipo de archivos “singulares” podremos valernos de reglas como la siguiente para evitar que alguien acceda pueda acceder a nuestro archivo:
<files wp-config.php>
order allow,deny
deny from all
</files>
Otro detalle a tener en cuenta es la protección de carpetas críticas a las que nadie, salvo un administrador, debería poder entrar. ¿Y de qué tipo de carpetas estamos hablando? Si retomamos el ejemplo de WordPress, nadie debería poder entrar en la carpeta de los plugins o en la carpeta uploads y así evitar que alguien recopile más información de la cuenta. ¿Y qué podemos hacer en estos casos? Una buena forma, y elegante, de evitar el acceso es forzar una redirección hacia nuestra página principal siguiendo esquemas como:
Redirect 301 /wp-content/index.php http://www.tudominio.com/
Redirect 301 /wp-content/themes/index.html http://www.tudominio.com/
Evitar el hotlink
Dependiendo del tipo de licencia que utilicemos a la hora de publicar nuestros contenidos o si, por ejemplo, queremos evitar que las fotos que colgamos acaben siendo utilizadas en otras páginas, quizás nos interese aplicar algún tipo de regla que evite que alguien pueda insertar una imagen que nosotros estamos hospedando (forzando así a que, al menos, se la tengan que descargar y subir a su servidor).
Restringir el acceso por IP y luchar contra el spam
Si nuestro blog es víctima de algún tipo de ataque y tenemos localizado el origen (una dirección IP o un rango de direcciones), podemos aplicar medidas estrictas de seguridad en el archivo .htaccess
para restringir el acceso y bloquear cualquier tipo de petición que provenga de las direcciones IP que agreguemos a esta lista negra.
Además, si somos algo habilidosos y no tenemos ninguna protección contra el spam (Askimet es una buena opción en WordPress), también podríamos definir reglas que eviten a ciertos usuarios (identificados por su dirección IP o por un rango de éstas) a comentar en nuestro blog (bloqueándoles el acceso a la opción de publicar comentarios).
¿Cómo pasamos de la teoría a la práctica?
Ahora que hemos entrado en materia y somos conscientes de la importancia de este archivo, le pasamos el testigo a nuestro compañero Eduardo que nos ayudará, de una manera práctica, a trabajar con este archivo y nos introducirá en la sintaxis a utilizar (el formato es igual que el fichero de configuración global de Apache) además de mostrarnos algunos ejemplos prácticos de configuraciones seguras.
Un buen archivo .htaccess combinado con unos permisos adecuados en nuestros archivos son una buena barrera de defensa contra ataques y accesos no autorizados, si bien la seguridad total no se puede garantizar, al menos se lo pondremos algo más difícil a aquéllos que no tienen muy buenas intenciones.
-
Apache
- Cómo cambiar el nombre del servidor Apache por cualquier cosa personalizando el servidor
- Cómo instalar Varnish y realizar una evaluación comparativa del servidor web
- 13 consejos para reforzar la seguridad del servidor web Apache en Servidores Linux
- Cómo administrar el servidor Apache usando la herramienta "Apache GUI"
- Crear un sitio web protegido, con usuario y contraseña
- Cómo instalar Joomla en Rocky Linux y AlmaLinux
- Incrementar el rendimiento de su Web usando Nginx como Proxy con Apache
- ¿Cómo usar IPv6 en Apache?
- Cómo configurar HTTPS en Apache Web Server con CentOS
- Usar el comando occ, cómo funciona.
- Redirigir todo tu viejo dominio al nuevo dominio a través de .htaccess
- Ejemplos y Trucos de uso y configuración del htaccess de Apache
- Seguridad de Joomla: Cómo asegurar su sitio web de Joomla durante la instalación
- Securizar tu servidor Web Apache con mod_security
- Asegurar tu servidor Web Apache con ModSecurity