Blindar una instalación de wp

Estoy por comenzar un sistema web que a mis ojos es algo ambicioso y requiere de cierta seguridad por que voy a usar wordpress como base de este, así que me he dado a la tarea de recopilar tips para blindad nuestra instalación.

Uno de cada 10 sitios web del mundo usa WordPress. Lo que se dice, una banquete bastante apetecible para quienes se dedican a inundar de virus y programas malignos la red

1. Quitar el usuario admin

Hasta hace poco tiempo las instalaciones de WordPress creaban por defecto el usuario ‘admin’ para el administrador. Con eso, el atacante tenía resuelto el 50% de su problema: solo le queda conocer la clave. Si tu instalación de WordPress tiene tiempo es probable que tengas este usuario que, además, no se puede modificar desde la configuración de WordPress. Hay que hacerlo directamente desde la base de datos.

Con un gestor tipo phpMyAdmin es bastante sencillo. Se hace con el siguiente código (reemplazar ‘nuevousuario’ con el nombre deseado):

update tableprefix_users set user_login='nuevousuario' where user_login='admin';

2. Cambiar el prefijo de la base de datos

La configuración inicial de WordPress agrega el prefijo “wp_” a las tablas de la base de datos. El problema es que si algún día se descubre una vulnerabilidad sería bastante fácil para el atacante adivinar cuáles son las tables presentes en la base de datos si no modificamos este valor. Hacerlo es bastante sencillo: solo hay que abrir el archivo de configuración wp-config.php y modificar el valor presente por uno nuevo:

$table_prefix = 'nuevoprefijo_';

3. Menos detalles de error al fallar el login

La página de login en WordPress brinda demasiada información si uno no ingresa bien la clave. Por ejemplo, asvisa si el error se debe a que el usuario no existe o la clave no corresponde. Para evitar que WordPress revele estos datos basta con agregar un par de líneas al archivo function.php del theme que tenemos activo:

function explain_less_login_issues(){ return 'ERROR: Los datos ingresados son incorrectos.';} add_filter( 'login_errors', 'explain_less_login_issues' );

4. No dejar directorios navegables

Un ABC de las medidas de seguridad es no dejar un directorio navegable porque el atacante puede conocer la estructura del sitio y ver los archivos. Esto suele se maneja directamente en la configuración del servidor pero hay algo que podemos hacer desde WordPress: poner un archivo index.php vacío en cada directorio vacío.

Por defecto WordPress lo hace pero se le ha olvidado uno: donde se suben los archivos. La solución es simple: crear con cualquier editor de texto un archivo vacío, nombrarlo como index.php y subirlo a wp-content/uploads

 5. Mover wp-config 

El archivo más sensible de toda instalación de WordPress es wp-config.php. Tiene la información para conectarse  a la base de datos y cualquiera que acceda a esta información está en condiciones de tomar el control de la web. Lo mejor es moverlo  a una ubicación más segura como puede ser un nivel superior a la raíz del sitio (por encima de la carpeta public_html o www).

Para no tocar el corazón de WordPress -y con ello tener que temer por cada actualización- lo más práctico es hacer un include desde el archivo en cuestión. Es decir, en el wp-config agregar una línea con algo así (cambiar por la ruta propia de cada servidor):

include ('/home/user/config.php');

Y en config.php ponemos todos los datos de conexión como usuario, contraseña y demás.

6. Deshabilitar editor de archivos

WordPress incluye un editor de archivos muy práctico para modificar los archivos del tema. Pero no se trata de una práctica segura por lo cual lo mejor para cambiar algo es ingresar vía FTP, descargar el archivo en cuestión, editarlo y volverlo a subir. Se puede deshabilitar el editor de archivos para evitar manos extrañas de una forma muy sencilla. Hay que añadir esta línea a wp-config.php

define('DISALLOW_FILE_EDIT', true);

7. Quitar versión de WordPress

Punto controvertido. Veamos: Todas las instalaciones de WordPress muestran su número de versión con fines “estadísticos”. El problema es que si el sitio queda desactualizado ese número es casi una invitación a atacar el sitio. Sin embargo, los críticos dicen que de nada vale esconder el número de versión si la instalación de WordPress sigue teniendo agujeros por todas partes.

En fin, esconder la versión no sirve de nada si no se toman medidas de seguridad adicionales. Pero si nos interesa desviar la atención de curiosos hay que abrir el archivo functions.php del tema o escribir esto:

function no_generator() { return ''; } add_filter( 'the_generator', 'no_generator' );

8.Remover archivos innecesarios

Luego instalar WordPress quedan un par de archivos con información sensible: readme.html y wp-admin/install.php. El primero muestra la versión de WordPress que estamos corriendo mientras que el segundo permite instalar el sistema. Mejor borrarlos.

9. Bloquear pedidos de url maliciosas

Un clásico de estas épocas en ataques a web es realizar peticiones desde páginas web maliciosas. El plugin Block Bad Queries se encarga de bloquear cualquier pedido extraño.

10. Permisos de archivos

En los equipos de escritorio no solemos prestar atención a los permismos de archivo pero un servidor es un aspecto de seguridad clave. Esto permite establecer quién puede leer, modificar o eliminar un archivo. La regla general es otorgar el mínimo de permisos posible para evitar que un usuario indeseado puede manipular datos sensible. Algunos consejos del WordPress Codex:

  • wp-config.php con permisos 400 o 440.
  • .htaccess con permisos 644 o 664.

Via>>

Leave a Reply

Your email address will not be published. Required fields are marked *