Security Blog
Security Blog
Posted By Gregory

Convierte tu WordPress en Fort Knox

Cómo convertir WordPress en una fortaleza protegida como Fort Knox


English version: Turn your WordPress into Fort Knox


Este artículo asume que queremos un sitio web a prueba de balas con WordPress. No es necesario seguir todos los pasos al pie de la letra, punto por punto, tal como se describe. Pero sí lo recomiendo si quieres crear tu propio Fort Knox.

Algunos de los siguientes pasos podrían causar problemas de incompatibilidad con plugins extraños que intentan modificar archivos directamente en las carpetas de WordPress. Recomiendo ignorar cualquier plugin de este tipo, ya que su uso puede causar muchos problemas de seguridad, tanto de inmediato como en el futuro, cuando los hackers investiguen vulnerabilidades en los plugins o temas instalados en tu sitio. He creado este artículo con la esperanza de que sea útil, pero sin garantía alguna.

Nota: Este artículo no aplica si usas hosting compartido. Necesitas, al menos, un sitio alojado en un VPS.

Requisitos: acceso root al servidor Linux donde está alojado tu sitio web. Si no tienes acceso de shell con privilegios root, no podrás crear un sitio web verdaderamente protegido. No hay ningún plugin que pueda proteger WordPress y los archivos de sus directorios con un nivel PRO. Todos los plugins de seguridad tienen los mismos privilegios (permisos) que los hackers y bots. Sin excepción. Si algún plugin de seguridad realizó cambios en los archivos de tu sitio web para protegerlos, cualquier hacker o código malicioso puede deshacerlos 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 usar plugins o temas que operen con e intenten cambiar archivos PHP o .htaccess en las carpetas de WordPress

Paso uno. Instalación de WordPress

No uses el prefijo predeterminado wp_ para las tablas de la base de datos. Usa dos o tres símbolos alfabéticos en su lugar. Algunos ataques y atacantes específicos de WordPress asumen que el prefijo de la tabla es wp_ . Cambiar el prefijo nos ayuda a bloquear algunos ataques de inyección SQL.

Paso dos. Fortalecimiento del sitio web a nivel de WordPress

  1. Mueva la carpeta de cargas un nivel hacia arriba, desde el interior de la carpeta /wp-content/ a la raíz de su carpeta de instalación de WordPress.
  2. Cambie el nombre de la carpeta de cargas a media (o algo similar, lo que desee).
  3. Cambie el nombre de la carpeta wp-content a content (o algo similar, lo que desee).
  4. Cambie el nombre de la carpeta de complementos a mod (o algo similar, lo que desee).
  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', true ); // sí, es seguro hacerlo manualmente
    define('DISALLOW_FILE_EDIT', true ); // nunca permitimos que nadie toque tus archivos
    define('DISALLOW_FILE_MODS', true ); // sí, es seguro hacerlo manualmente
    define('FS_METHOD', 'direct'); // sin FTP, por supuesto
    define('WP_HTTP_BLOCK_EXTERNAL', verdadero );
    define('UPLOADS', ' media ' ); // renombramos las cargas y las movimos a un nivel superior
    define('WP_CONTENT_DIR', '/ruta/a/wordpress/dir/ contenido '); // sin nombre de host, sin barra diagonal final
    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 final
    define('WP_PLUGIN_URL', 'http://example.com/ contenido / mod ');
    ini_set('display_errors',0); // Desactivar la visualización de errores de PHP en el frontend

Paso tres. Cambiar el nombre predeterminado de las cookies.

Añade estas líneas al comienzo del archivo wp-config.php

 define('USER_COOKIE', 'my_user_cookie' ); // cámbialo a algo diferente
define('PASS_COOKIE', 'my_pass_cookie' ); // cámbialo a algo diferente
define('AUTH_COOKIE', 'my_auth_cookie' ); // cámbialo a algo diferente
define('SECURE_AUTH_COOKIE', 'my_sec_cookie' ); // cámbialo a algo diferente
define('LOGGED_IN_COOKIE', 'my_logged_cookie' ); // cámbialo a algo diferente
define('TEST_COOKIE', 'my_test_cookie' ); // cámbialo a algo diferente

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

Protege tu página de inicio de sesión con WP Cerber Security . Incluso con las medidas de protección mencionadas, los hackers intentarán usar ataques de fuerza bruta (intentos de inicio de sesión) para acceder a tu 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 usas un servidor con Apache como servidor HTTP. Necesitamos cambiar el propietario de todos los archivos de WordPress, incluyendo plugins y temas. Por defecto, este usuario es apache . Necesitamos cambiarlo a otro usuario que hayas creado previamente para este propósito. Supongamos que este usuario es cerber .

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

    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 ello, ejecute los siguientes comandos en el shell.
     buscar /ruta/a/directorio/de/wordpress -exec chown cerber:root {} +
    buscar /ruta/a/directorio/de/wordpress -type d -exec chmod 755 {} +
    buscar /ruta/a/directorio/de/wordpress -type f -exec chmod 644 {} +

  3. Para el directorio de subidas (/ruta/a/wordpress/dir/ media ), necesitamos establecer permisos especiales. Lo haremos usando comandos de ejecución en el shell.
     buscar /ruta/al/directorio/de/wordpress/ media -exec chown cerber:apache {} +
    buscar /ruta/al/directorio/de/wordpress/ media -type d -exec chmod 775 {} +
    buscar /ruta/al/directorio/de/wordpress/ 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:root /ruta/al/directorio/de/wordpress/.htaccess
    chmod 644 /ruta/al/directorio/de/wordpress/.htaccess

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

Paso seis. Fortalecimiento del sitio web a nivel de servidor NGINX

Lea aquí: Cómo reforzar WordPress con WP Cerber y NGINX

Paso siete. Fortalecimiento del sitio web con Fail2Ban

Lee 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.