Una vez que un sistema de código abierto se vuelve tan popular como WordPress con mucha frecuencia, se vuelve vulnerable a los ataques. Me pregunto por qué la gente de WordPress no ha hecho nada para mejorar la seguridad del sitio de administración, que, de forma predeterminada, puede acceder yendo a /wp-admin.
El problema es que si cambias el nombre del directorio, tu instalación de WordPress se daña. Lo busqué y no pude encontrar un complemento que te permitiera asegurar la carpeta wp-admin a otra cosa, o al menos ocultarla. El único resultado que encontré sobre cómo hacer esto es por Michi Kono. Sin embargo, la solución propuesta tiene algunos inconvenientes, como algunos enlaces que ya no funcionan. Por supuesto, tienes la opción de restringir el acceso a direcciones IP seleccionadas a través de .htaccess, pero si eres como la mayoría de los suscriptores de Internet no comerciales, no tiense una IP estática, lo que hace las cosas más complicadas.
Así que aquí hay otra solución para hacer que WordPress sea más seguro mientras se mantiene toda la funcionalidad de WordPress. Lo primero que debemos hacer es elegir qué “nombre” queremos para tu sección de administración. Para los propósitos de este “tutorial” lo llamaremos “inicio de sesión seguro”.
Note: You are about to modify crucial files in your wordpress installation. So do this at your own risk, and please, please backup your files before you do this.
Nota: Estás a punto de modificar archivos cruciales en tu instalación de WordPress. Haz esto bajo tu propio riesgo y, por favor, haz una copia de seguridad de tus archivos antes de hacerlo.
Ahora, abre tu archivo .htaccess y agrega la siguiente línea después de la línea “RewriteBase”.
RewriteRule ^secure-login$ wp-login.php [L,NC,QSA]
entonces tu .htaccess debería verse así.
# BEGIN WordPress <IfModule mod_rewrite.c> RewriteEngine On RewriteBase / RewriteRule ^secure-login$ wp-login.php [L,NC,QSA] RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME} !-f RewriteRule . /index.php [L] </IfModule> # END WordPress
Esto le dice a tu servidor que cuando solicites “inicio de sesión seguro” deberías ser llevado a wp-login.php
Ahora necesitamos editar wp-login.php, que se encuentra en la raíz de tu instalación. Agrega esto antes que nada.
session_start();
//See what file is being requested by the web client, also store the arguments just in case.
list($file,$arguments) = explode("?", $_SERVER['REQUEST_URI']);
//if the user just logged out, destroy this session and redirect them to root
if("/wp-login.php?loggedout=true" == $file ."?" .$arguments || "action=logout" == substr($arguments, 0, 13))
{ session_destroy(); header("location: /"); }
//If our sentinel variable is set and true do nothing, allow normal script execution
if(isset($_SESSION['valid_entrance']) && $_SESSION['valid_entrance'] == true) { /* As they say, "Silence is golden" */ }
//Now if the user is requesting wp-login.php and our sentinel is not true, redirect the "attacker" to root.
elseif(stripos($file, 'wp-login') && !isset($_SESSION['valid_entrance']))
{ header("Location: /"); exit(); }
//If the user is requesting the right login entrance set the sentinel to true
elseif ($file == "/secure-login")
{ $_SESSION['valid_entrance'] = true; }
Eso es todo lo que necesitas hacer. Tu instalación de WordPress se volvió más segura. No olvides subir tus archivos actualizados a tu servidor.
Puedo hacer un plug-in cada vez que encuentre el tiempo.
También recomendaría usar Login Lockdown de Michael VanDeMar.
Avísame si tienes alguna pregunta o recomendación para esto.