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 obtener un sitio web protegido a prueba de balas con WordPress. No es necesario realizar todos los pasos siguientes palabra por palabra y punto por punto exactamente como se describe. Pero sí recomiendo que 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 los archivos directamente en las carpetas de WordPress. Recomiendo ignorar cualquier tipo de complemento, ya que su uso puede generar muchos problemas y problemas de seguridad de inmediato o en el futuro, cuando los piratas informáticos estudien los orificios de los complementos o el tema que está 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 está utilizando alojamiento compartido. Es necesario tener, al menos, un sitio alojado VPS.

Requisitos: acceso de root al servidor Linux donde se aloja su sitio web. Si no tiene acceso de shell con privilegios de root, no puede hacer nada útil para crear un sitio web protegido real. No hay forma ni ningún complemento que pueda proteger WordPress y los archivos en sus directorios a un nivel PRO. Todos los complementos de seguridad tienen el mismo nivel de privilegios (permisos) que tienen los hackers y los robots. 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 malintencionado 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 diferentes valores
  • No debemos usar complementos o temas que funcionen con e intentar cambiar los archivos PHP o .htaccess en las carpetas de WordPress

Paso uno. Instalando WordPress

No utilice el prefijo wp_ predeterminado para las tablas de base de datos. Use la pareja 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 de SQL.

Segundo paso. Endurecer el sitio web a nivel de WordPress

  1. Mueva la carpeta de cargas un nivel, desde la carpeta / wp-content / a la raíz de su carpeta de instalación de WordPress.
  2. Cambie el nombre de la carpeta de archivos a medios (o algo así, lo que quiera).
  3. Cambie el nombre de la carpeta de contenido de wp a contenido (o algo así, lo que quiera).
  4. Renombra la carpeta de plugins a mod (o algo así, lo que quieras).
  5. Agregue las siguientes líneas al comienzo del archivo wp-config.php , no se olvide de cambiar los medios , el contenido , el mod a los valores reales que eligió anteriormente .
     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'); // no FTP por supuesto
    define ('WP_HTTP_BLOCK_EXTERNAL', true);
    definir ('CARGAS', ' medios '); // cambiamos el nombre de las subidas y lo subimos de nivel
    define ('WP_CONTENT_DIR', '/ path / to / wordpress / dir / content '); // sin nombre de host, sin barra diagonal
    define ('WP_CONTENT_URL', 'http://example.com/ content ');
    define ('WP_PLUGIN_DIR', '/ path / to / wordpress / dir / content / mod '); // sin nombre de host, sin barra diagonal
    define ('WP_PLUGIN_URL', 'http://example.com/ content / mod ');
    ini_set ('display_errors', 0); // Desactivar mostrar errores de PHP en el front-end

Paso tres. Cambiar el nombre predeterminado de las cookies.

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

 define ('USER_COOKIE', 'my_user_cookie'); // cambiarlo por algo diferente 
define ('PASS_COOKIE', 'my_pass_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. Ocultar y cerrar esta puerta con WP Cerber.

Paso cinco Endurecer el sitio web a nivel de servidor.

En este paso, asumo que está utilizando el 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 hayas creado para este propósito anteriormente. Digamos que este usuario es cerber .

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

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

  2. Para el directorio completo del sitio web (/ path / to / wordpress / dir) cambie el propietario y los permisos para todos los archivos. Para ello ejecutamos los siguientes comandos en el shell.
     encontrar / ruta / a / wordpress / dir-exec chown cerber: root {} + 
    busque / ruta / a / wordpress / dir-tipo d-exec chmod 755 {} +
    busque / ruta / a / wordpress / dir -type f -exec chmod 644 {} +

  3. Para el directorio de cargas (/ ruta / a / wordpress / dir / media ) necesitamos establecer permisos especiales. Vamos a hacer eso usando comandos exec en el shell
     encontrar / ruta / a / wordpress / dir / media- exec chown cerber: apache {} + 
    busque / ruta / a / wordpress / dir / media- tipo d-exec chmod 775 {} +
    busque / ruta / a / wordpress / dir / media -tipo f -exec chmod 664 {} +

  4. Configure la estructura de enlace permanente en la configuración de WordPress y luego cambie el permiso para que el archivo .htaccess lo proteja contra escritura.
     chown cerber: root /path/to/wordpress/dir/.htaccess 
    chmod 644 /path/to/wordpress/dir/.htaccess

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

Paso seis Endurecer el sitio web a nivel de servidor NGINX

Lea aquí: Endurecer WordPress con WP Cerber y NGINX

Paso siete. Endureciendo 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.