Security Blog
Security Blog
Posted By Gregory

Convierte tu WordPress en Fort Knox

How to turn WordPress into a protected fortress like Fort Knox


English version: Turn your WordPress into Fort Knox


Este artículo asume que queremos obtener un sitio web protegido a prueba de balas con tecnología de WordPress. No es necesario seguir todos los pasos siguientes palabra por palabra y punto por punto exactamente como se describe. Pero lo recomiendo si quieres crear tu propio Fort Knox.

Algunos de los siguientes pasos pueden ser la causa de algunos problemas de incompatibilidad con algunos complementos extraños que intentan modificar archivos directamente en las carpetas de WordPress. Recomiendo ignorar cualquier complemento de ese tipo, porque su uso puede generar muchos problemas y problemas de seguridad inmediatamente o en el futuro, cuando los piratas informáticos estudien agujeros en los complementos o el tema instalado en su sitio. He creado este artículo con la esperanza de que sea útil, pero sin ninguna garantía.

Nota: este artículo no es aplicable si utiliza alojamiento compartido. Es necesario tener, al menos, un sitio alojado en VPS.

Requisitos: acceso root al servidor Linux donde está alojado su sitio web. Si no tiene acceso de shell con privilegios de root, no podrá hacer nada útil para crear un sitio web protegido real. No hay forma ni complemento que pueda proteger WordPress y los archivos en sus directorios a nivel PRO. Todos los complementos de seguridad tienen el mismo nivel de privilegios (permisos) que los piratas informáticos y los bots. Sin excepción. Si algún complemento de seguridad realizó algunos cambios en los archivos de su sitio web para protegerlos, cualquier pirata informático o código malicioso puede DESHACER esos cambios o eliminar la protección.

Aquí hay algunos puntos importantes sobre mi enfoque.

  • Todos los archivos de código (código PHP) y todos los archivos .htaccess deben estar protegidos contra escritura. Sin excepción
  • Necesitamos cambiar todos los valores predeterminados (carpeta, cookies, ruta de inicio de sesión, cualquier otro punto de referencia) a valores diferentes.
  • No debemos utilizar complementos o temas que operen e intenten cambiar archivos PHP o .htaccess en las carpetas de WordPress.

Paso uno. Instalación de WordPress

No utilice el prefijo wp_ predeterminado para las tablas de la base de datos. Utilice un par o tres símbolos del alfabeto en su lugar. Algunos ataques y atacantes específicos de WordPress suponen que el prefijo de la tabla es wp_ . Cambiar el prefijo nos ayuda a bloquear algunos ataques de inyección SQL.

Segundo paso. Fortalecer el sitio web a nivel de WordPress

  1. Mueva la carpeta de cargas hacia arriba un nivel, desde el interior de la carpeta /wp-content/ hasta la raíz de su carpeta de instalación de WordPress.
  2. Cambie el nombre de la carpeta de cargas a medios (o algo así, como quiera).
  3. Cambie el nombre de la carpeta wp-content a contenido (o algo así, como quiera).
  4. Cambie el nombre de la carpeta de complementos a mod (o algo así, lo que quiera).
  5. Agregue las siguientes líneas al comienzo del archivo wp-config.php , no olvide cambiar media , content , mod a los valores reales que eligió previamente .
     define('AUTOMATIC_UPDATER_DISABLED', verdadero); // sí, es seguro hacerlo manualmente
    define('DISALLOW_FILE_EDIT', verdadero); // nunca permitimos que nadie toque tus archivos
    define('DISALLOW_FILE_MODS', verdadero); // sí, es seguro hacerlo manualmente
    define('FS_METHOD', 'directo'); // sin FTP por supuesto
    define('WP_HTTP_BLOCK_EXTERNAL', verdadero);
    define('CARGAS', ' medios '); // cambiamos el nombre de las cargas y las subimos de nivel
    define('WP_CONTENT_DIR', '/ruta/a/wordpress/dir/ contenido '); // sin nombre de host, sin barra diagonal
    define('WP_CONTENT_URL', 'http://example.com/ contenido ');
    define('WP_PLUGIN_DIR', '/ruta/a/wordpress/dir/ contenido / mod '); // sin nombre de host, sin barra diagonal
    define('WP_PLUGIN_URL', ' http://example.com/content/mod ' );
    ini_set('display_errors',0); // desactivar la visualización de errores de PHP en el front-end

Paso tres. Cambiar el nombre de las cookies predeterminadas.

Agregue estas líneas al comienzo del archivo wp-config.php

 define('USER_COOKIE', 'my_user_cookie'); // cambiarlo por algo diferente
define('PASS_COOKIE', 'mi_contraseña_cookie'); // cambiarlo por algo diferente
define('AUTH_COOKIE', 'my_auth_cookie'); // cambiarlo por algo diferente
define('SECURE_AUTH_COOKIE', 'my_sec_cookie'); // cambiarlo por algo diferente
define('LOGGED_IN_COOKIE', 'my_logged_cookie'); // cambiarlo por algo diferente
define('TEST_COOKIE', 'my_test_cookie'); // cambiarlo por algo diferente

Paso cuatro. Instale un complemento de seguridad inmediatamente después de instalar WordPress

Proteja su página de inicio de sesión con WP Cerber Security . Incluso con los pasos de protección anteriores, los piratas informáticos intentarán aplicar ataques de fuerza bruta (intentos de inicio de sesión) para abrir la puerta de su sitio web de WordPress. Oculta y cierra esta puerta con WP Cerber.

Paso cinco. Fortalecimiento del sitio web a nivel de servidor.

En este paso asumo que está utilizando un servidor con Apache como servidor http. Necesitamos cambiar el propietario de todos los archivos de WordPress, incluidos los complementos y los temas. Por defecto este usuario es apache . Necesitamos cambiarlo a otro usuario que haya creado para este propósito anteriormente. Digamos que este usuario es cerber .

  1. Coloque el archivo .htaccess en la carpeta multimedia (su nueva carpeta de cargas) con la siguiente directiva. Eso evita que el sitio web ejecute código PHP malicioso cargado.
     motor php_flag apagado

    Nota: El archivo de configuración de Apache debe contener la directiva AllowOverride Options para su carpeta de cargas o cualquiera de sus carpetas principales para que esta directiva funcione.

  2. Para todo el directorio del sitio web (/ruta/a/wordpress/dir), cambie el propietario y los permisos de todos los archivos. Para hacer eso, ejecute los siguientes comandos en el shell.
     buscar /ruta/a/wordpress/dir -exec chown cerber:root {} +
    buscar /ruta/a/wordpress/dir -tipo d -exec chmod 755 {} +
    buscar /ruta/a/wordpress/dir -tipo f -exec chmod 644 {} +

  3. Para el directorio de cargas (/ruta/a/wordpress/dir/ media ) necesitamos establecer permisos especiales. Hagámoslo usando comandos ejecutivos en el shell.
     buscar /ruta/a/wordpress/dir/ media -exec chown cerber:apache {} +
    buscar /ruta/a/wordpress/dir/ media -type d -exec chmod 775 {} +
    buscar /ruta/a/wordpress/dir/ media -type f -exec chmod 664 {} +

  4. Configure la estructura del enlace permanente en la configuración de WordPress y luego cambie el permiso del archivo .htaccess para protegerlo contra escritura.
     chown cerber:raíz /ruta/a/wordpress/dir/.htaccess
    chmod 644 /ruta/a/wordpress/dir/.htaccess

  5. Mueva el archivo wp-config.php al directorio encima de su directorio de instalación de WordPress.

Paso seis. Reforzar el sitio web a nivel del servidor NGINX

Lea aquí: Fortalecimiento de WordPress con WP Cerber y NGINX

Paso siete. Reforzando el sitio web con Fail2Ban

Lea aquí: Cómo proteger WordPress con Fail2Ban


I'm a team lead in Cerber Tech. I'm a software & database architect, WordPress - PHP - SQL - JavaScript developer. I started coding in 1993 on IBM System/370 (yeah, that was amazing days) and today software engineering at Cerber Tech is how I make my living. I've taught to have high standards for myself as well as using them in developing software solutions.

View Comments
There are currently no comments.