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 parte de la base de que queremos crear un sitio web a prueba de balas con WordPress. No es necesario seguir todos los pasos al pie de la letra. Pero sí lo recomiendo si quieres crear tu propio Fort Knox.
Algunos de los siguientes pasos podrían causar problemas de incompatibilidad con ciertos plugins que intentan modificar archivos directamente en las carpetas de WordPress. Recomiendo ignorar este tipo de plugins, ya que su uso puede generar muchos problemas de seguridad, tanto de inmediato como en el futuro, si los hackers encuentran vulnerabilidades en los plugins o el tema instalado en tu sitio. He creado este artículo con la esperanza de que sea útil, pero sin ninguna garantía.
Nota: este artículo no aplica si utiliza alojamiento compartido. Necesita tener, como mínimo, un sitio web alojado en un servidor VPS.
Requisitos: acceso de superusuario (root) al servidor Linux donde se aloja tu sitio web. Si no tienes acceso a la consola con privilegios de superusuario, no podrás crear un sitio web realmente protegido. No existe ningún plugin que proteja WordPress y sus archivos a nivel profesional. Todos los plugins de seguridad tienen el mismo nivel de privilegios (permisos) que los hackers y bots. Sin excepción. Si algún plugin de seguridad modifica los archivos de tu sitio web para protegerlos, cualquier hacker 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 usar plugins o temas que operen con archivos PHP o .htaccess en las carpetas de WordPress e intentar modificarlos.
Primer paso. Instalación de WordPress
No utilice el prefijo predeterminado wp_ para las tablas de la base de datos. En su lugar, utilice dos o tres caracteres alfabéticos. Algunos ataques específicos de WordPress y los atacantes asumen que el prefijo de la tabla es wp_ . Cambiar el prefijo ayuda a bloquear algunos ataques de inyección SQL.
Segundo paso. Reforzar la seguridad del sitio web a nivel de WordPress.
- Mueva la carpeta de subidas un nivel hacia arriba, desde el interior de la carpeta /wp-content/ hasta la raíz de la carpeta de instalación de WordPress.
- Cambia el nombre de la carpeta de subidas a media (o algo parecido, lo que prefieras).
- Cambia el nombre de la carpeta wp-content a content (o algo parecido, lo que prefieras).
- Cambia el nombre de la carpeta de plugins a mod (o algo parecido, lo que prefieras).
- Agregue las siguientes líneas al principio del archivo wp-config.php , no olvide cambiar media , content , mod por 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', true );
define('UPLOADS', ' media ' ); // Hemos renombrado uploads y lo hemos movido un nivel más arriba.
define('WP_CONTENT_DIR', '/ruta/al/directorio/de/wordpress/ contenido '); // sin nombre de host, sin barra diagonal final
define('WP_CONTENT_URL', 'http://example.com/ contenido ');
define('WP_PLUGIN_DIR', '/ruta/al/directorio/de/wordpress/ contenido / mod '); // sin nombre de host, sin barra diagonal final
define('WP_PLUGIN_URL', 'http://example.com/ content / mod ');
ini_set('display_errors',0); // Desactiva la visualización de errores PHP en el frontend
Paso tres. Cambiar el nombre de las cookies predeterminadas.
Agregue estas líneas al principio del archivo wp-config.php
define('USER_COOKIE', 'my_user_cookie' ); // cámbialo por algo diferente
define('PASS_COOKIE', 'my_pass_cookie' ); // cámbialo por algo diferente
define('AUTH_COOKIE', 'my_auth_cookie' ); // cámbialo por algo diferente
define('SECURE_AUTH_COOKIE', 'my_sec_cookie' ); // cámbialo por algo diferente
define('LOGGED_IN_COOKIE', 'my_logged_cookie' ); // cámbialo por algo diferente
define('TEST_COOKIE', 'my_test_cookie' ); // cámbialo por algo diferente
Paso cuatro. Instale un complemento de seguridad inmediatamente después de haber instalado WordPress.
Proteja su página de inicio de sesión con WP Cerber Security . Incluso con las medidas de protección anteriores, los hackers intentarán realizar ataques de fuerza bruta (intentos de inicio de sesión) para acceder a su sitio web de WordPress. Proteja su sitio con WP Cerber.
Quinto paso. Reforzar la seguridad del sitio web a nivel de servidor.
En este paso asumo que estás usando un servidor con Apache como servidor HTTP. Necesitamos cambiar el propietario de todos los archivos de WordPress, incluidos los plugins y los temas. Por defecto, este usuario es apache . Necesitamos cambiarlo a otro usuario que hayas creado previamente para este propósito. Digamos que este usuario es cerber .
- Coloca el archivo .htaccess en la carpeta de medios (tu nueva carpeta de subidas) con la siguiente directiva. Esto impide que el sitio web ejecute código PHP malicioso subido.
php_flag motor apagado
Nota: Para que esta directiva funcione, el archivo de configuración de Apache debe contener la directiva
AllowOverride Optionspara la carpeta de subidas o cualquiera de sus carpetas principales. - Para todo el directorio del sitio web (/ruta/al/directorio/wordpress), cambie el propietario y los permisos de todos los archivos. Para ello, ejecute los siguientes comandos en la consola.
find /path/to/wordpress/dir -exec chown cerber:root {} +
find /path/to/wordpress/dir -type d -exec chmod 755 {} +
find /path/to/wordpress/dir -type f -exec chmod 644 {} + - Para el directorio de subidas (/ruta/al/directorio/de/wordpress/ media ) necesitamos establecer permisos especiales. Hagámoslo usando comandos exec en la consola.
find /path/to/wordpress/dir/ media -exec chown cerber:apache {} +
find /path/to/wordpress/dir/ media -type d -exec chmod 775 {} +
find /path/to/wordpress/dir/ media -type f -exec chmod 664 {} + - Configura la estructura de enlaces permanentes en los ajustes de WordPress y, a continuación, cambia los permisos del archivo .htaccess para protegerlo contra escritura.
chown cerber:root /ruta/al/directorio/de/wordpress/.htaccess
chmod 644 /ruta/al/directorio/de/wordpress/.htaccess - Mueva el archivo wp-config.php al directorio superior al directorio de instalación de WordPress.
Sexto paso. Reforzar la seguridad del sitio web a nivel del servidor NGINX.
Lea aquí: Cómo reforzar la seguridad de WordPress con WP Cerber y NGINX
Séptimo paso. Reforzar la seguridad del sitio web con Fail2Ban.
Lee aquí: Cómo proteger WordPress con Fail2Ban