Wordpress

Cómo proteger un sitio WordPress existente en seis sencillos pasos

proteger-wordpress

Proteger un sitio WordPress

Si quieres crear un sitio web flexible hoy en día, es muy probable que utilices un sistema de gestión de contenidos (CMS). Y WordPress es, con diferencia, el más popular.

En el último recuento, WordPress impulsó alrededor del 40% de todos los sitios web en Internet. Eso significa que si eres un programador web, es probable que te encuentres con WordPress en algún momento de tu trabajo.

Pero como WordPress es tan utilizado, cualquier programador que trabaje con él tiene que tener mucho cuidado para endurecerlo contra los ataques externos. Y esos ataques siguen multiplicándose. Sólo en un incidente del año pasado, casi un millón de sitios web fueron atacados en un solo mes.

El problema es que no hay dos sitios de WordPress construidos de la misma manera, lo que significa que hay un número infinito de vulnerabilidades potenciales a las que prestar atención. Y cuando se añaden plugins de terceros a la mezcla, resulta imposible montar una defensa perfecta del sitio web.

Sin embargo, hay algunas cosas que se pueden hacer para reforzar un sitio de WordPress contra los ataques y detener todas las amenazas, excepto las más sofisticadas. Aquí hay seis pasos de seguridad que debe tomar en cada sitio de WordPress con el que trabaja.

Paso uno: Actualizar WordPress a la última versión

Dado que WordPress es una pieza de software, es fundamental mantenerlo actualizado para parchear las vulnerabilidades a medida que se identifican. Sin embargo, un número sorprendente de desarrolladores y propietarios de sitios no lo hacen.

Datos recientes indican que hasta el 70% de las instalaciones conocidas de WordPress siguen utilizando versiones con vulnerabilidades conocidas.

Aunque se podría pensar que esta información haría saltar las alarmas en todo Internet, el problema persiste. Parte de ello se debe a que las empresas no están dispuestas a pagar ayuda profesional para completar el trabajo. Y otra parte se debe a que ciertos sitios dependen de plugins heredados que no funcionan con las nuevas versiones de WordPress.

Pero cualquier desarrollador que trabaje en un sitio así se está buscando problemas. Por lo tanto, sería mejor insistir en una actualización del sitio siempre que se encuentre con una instalación de WordPress obsoleta.

Si te tomas el tiempo de compartir algunas de las estadísticas de las amenazas con el propietario del sitio, acabarán viendo la luz. Sólo asegúrate de hacer una copia de seguridad completa del sitio antes de hacer cualquier cambio.

Si algo sale mal y las páginas se rompen o los plugins fallan, crearás un problema mayor del que resuelves. Según WSI Digital Web, este es un problema con el que se encuentran muchos desarrolladores y que causa daños en el mundo real. Han dicho,

«Hemos tenido que limpiar después de actualizaciones fallidas de WordPress que llevaron a páginas deshabilitadas debido a la ruptura del sitio. Cuando esto ocurre, esas páginas pueden caer en los índices de búsqueda con bastante rapidez, por lo que deshacer los cambios a toda prisa es esencial.»

Segundo paso: Elimine los plugins no utilizados y actualice el resto

Al igual que la instalación principal de WordPress, los plugins también sufren vulnerabilidades que los desarrolladores parchean de vez en cuando. Además, WordPress depende inusualmente de los plugins para proporcionar todo tipo de funcionalidades.

Por ejemplo, cuando trabajé recientemente en el sitio web de un negocio local de fontanería, me sorprendió ver los plugins que se utilizaban, dada la relativa simplicidad del sitio.

Pero la mejor manera de minimizar la superficie de ataque potencial es trabajar primero para eliminar cualquier plugin del sitio redundante o en desuso antes de molestarse en buscar las actualizaciones disponibles. Eso simplificará las tareas de mantenimiento continuo y reducirá el potencial de vulnerabilidades.

Sólo una vez que se haya hecho esto, se debe comprobar el estado de actualización de los plugins restantes.

Después de aplicar las actualizaciones disponibles, no asuma que todo está bien. Comprueba si alguno de los plugins restantes no se ha actualizado desde hace tiempo e intenta averiguar por qué.

Si descubres que el desarrollador de un plugin ha desaparecido o ha dejado de desarrollarlo, busca un sustituto con mantenimiento activo. Cuanto más tiempo pase un plugin sin ninguna actividad de desarrollo, mayores serán las probabilidades de que se convierta en un problema de seguridad.

Tercer paso: Minimizar los permisos de usuario y asegurar los inicios de sesión

Incluso si el sitio de WordPress en el que estás trabajando no contiene vulnerabilidades conocidas, eso no significa que sea seguro. Esto se debe a que los ataques de fuerza bruta a las credenciales son la forma más común en que los hackers obtienen acceso no autorizado a los sitios web de WordPress. Y la mejor manera de prevenir los daños de estos es revisar los permisos de los usuarios y las políticas de contraseñas.

En primer lugar, trate de reducir el número de cuentas que tienen acceso a nivel de administrador. No es raro que las pequeñas empresas designen a casi todo el mundo como administrador, pero eso es un riesgo enorme.

Por lo tanto, revise cada cuenta y asigne el nivel de permiso más bajo posible de los grupos de acceso incorporados:

Superadministradores – superusuarios de WordPress. Intente limitarlos a un máximo de dos.
Administradores – Este es el más alto permiso de usuario general. De nuevo, intente mantenerlos al mínimo.
Editor – Para usuarios que necesitan controlar y hacer cambios en todos los artículos publicados.
Autor – Un usuario que sólo puede publicar y cambiar cosas en su propio nombre.
Colaborador – Puede añadir, pero no publicar artículos en su propio nombre.
Suscriptor – No puede hacer cambios en el sitio excepto en su perfil de usuario.

Si encuentras algún usuario que ya no necesita acceso, elimínalo. Y luego, utilice el plugin Google Authenticator u otro sistema de autenticación de dos factores para asegurar las cuentas restantes.

Paso 4: Desactivar la ejecución de PHP en carpetas no confiables

Hasta ahora, todos los pasos anteriores han girado en torno a la prevención de ataques comunes de bajo nivel.

Pero hay algunas amenazas más sofisticadas para los sitios de WordPress que también deberían preocuparle. Y muchas de ellas implican que los atacantes encuentren formas de ejecutar código en un sitio sin obtener acceso a la cuenta.

Esto es común con WordPress debido a la forma en que gestiona los permisos de las carpetas por defecto.

Por ejemplo, si se instala un plugin que gestiona los medios cargados por el usuario, como imágenes y vídeos, necesitará una carpeta de carga que sea escribible para el mundo exterior. Si un atacante puede acceder a esa carpeta, puede intentar subir un script malicioso y utilizarlo para alterar o tomar el control de todo el sitio.

La buena noticia es que puedes protegerte de esto con un simple archivo de control de acceso en las carpetas necesarias.

Lo que tienes que hacer es crear un nuevo archivo en cada carpeta con permisos de escritura llamado .htaccess. Es un archivo de texto que le dice al servidor web lo que debe permitir o no permitir en un directorio determinado. En él, incluya lo siguiente:

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase
RewriteRule ^index\.php$ - [L] RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L] </IfModule>
# END WordPress
<FilesMatch "\.(php|php\.)$">
Order Allow,Deny
Deny from all
</FilesMatch>

Este archivo .htaccess permitirá a los usuarios subir los tipos de archivos que desee, pero impedirá que nadie suba ningún código ejecutable en el directorio con capacidad de escritura.

Puedes hacer esto en cualquier carpeta orientada al usuario que quieras proteger. Pero tenga cuidado con el uso excesivo de estas restricciones. La mayor parte de WordPress implica la ejecución de PHP, y puedes inutilizar todo tu sitio si pones una de estas en el lugar equivocado.

Paso 5: Desactivar la visualización de errores de PHP

Obtener acceso de escritura y ejecución a los directorios es sólo una de las formas en que un atacante podría intentar ejecutar código malicioso en un sitio web de WordPress. También pueden buscar partes del sitio que ejecuten PHP (que es prácticamente cualquier lugar que no haya bloqueado) y encontrar debilidades allí. Pero usted puede hacer su trabajo mucho más difícil.

Para ello, debe desactivar la visualización de errores PHP para que no puedan ver ningún resultado cuando intenten romper las páginas del sitio a propósito. Si el sitio les da pistas sobre lo que funciona y lo que no, podría proporcionar una hoja de ruta para encontrar una manera de explotar las páginas del sitio existentes.

La buena noticia es que es sencillo desactivar los informes de errores PHP en WordPress. Todo lo que tienes que hacer es editar el archivo wp-config.php del sitio, que está en el directorio raíz y contiene la información de configuración base del sitio.

Sólo tiene que añadir la siguiente línea al archivo:

define( 'WP_DEBUG', false);

Esto desactivará la depuración de PHP en todo el sitio. Sólo haga una nota cuando haga este cambio por si acaso el sitio tiene problemas en el futuro y requiere esfuerzos de depuración autorizados.

Paso seis – Desactivar la edición de temas y plugins

Incluso después de haber hecho todo lo anterior, no puede estar seguro de que nadie vaya a encontrar su camino en un sitio de WordPress con la intención de hacer daño. Por lo tanto, debe lanzar un último conjunto de bloqueos en el camino.

Esto no impedirá que ningún atacante serio cree estragos, pero puede dar a los operadores del sitio el tiempo suficiente para darse cuenta de que algo va mal y tomar medidas para corregirlo.

Lo que deberías hacer es desactivar la capacidad de edición de temas y plugins de WordPress para dificultar que alguien que haya accedido a la interfaz administrativa pueda alterar la codificación base del sitio.

Una vez más, puede hacerlo modificando el archivo wp-config.php del sitio, situado en su directorio raíz. Añade la siguiente línea justo antes de que aparezcan las palabras «¡Eso es todo, deja de editar! Feliz publicación’:

define( 'DISALLOW_FILE_EDIT', true );

Esto ocultará los editores de temas y plugins de la interfaz administrativa y evitará cualquier medio fácil de alterar los archivos del sitio. Para deshacer este cambio, el atacante necesitaría FTP o acceso a nivel de archivo al alojamiento web, lo que al menos le retrasará un poco.

Y como nota final, aunque veas consejos en otros lugares que te indican que uses un plugin de fragmentos de código para hacer estos cambios, no lo hagas. Si lo haces, un atacante podría usar ese mismo plugin para deshacer tus cambios, anulando el valor de seguridad de hacer los cambios en primer lugar.

Las protecciones imperfectas aún valen la pena de ser probadas

La conclusión es que WordPress siempre va a ser víctima de su propio éxito. Hay tantos sitios web que dependen de él que lo convierten en un objetivo grande y atractivo para los atacantes.

Y si bien estas seis medidas no detendrán todos los tipos de amenazas posibles, harán un trabajo decente de defensa contra la mayoría de los ataques comunes.

También puedes (y deberías) intentar proteger las bases de datos de tu sitio cambiando el prefijo de la tabla por defecto a algo oscuro. Pero como eso está un poco fuera del alcance de un sitio web existente, lo he omitido como medida de seguridad aquí.

Deja una respuesta

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