¿Cómo mover la página de inicio de sesión wp-admin a otra ubicación?

23 feb 2011, 04:36:29
Vistas: 41.6K
Votos: 3

Quiero mover la página de inicio de sesión físicamente (no virtualmente). Por favor, sugiere una forma mediante plugin que pueda alterar los códigos del núcleo al vuelo (incluso después de una actualización del código del núcleo). Puede ser una capa adicional de seguridad.

2
Comentarios

¿Llegaste a una conclusión sobre esta pregunta? ¿Qué hay de las respuestas más votadas?

brasofilo brasofilo
21 jul 2012 14:47:41

También puedes probar este plugin: http://wordpress.org/extend/plugins/ozh-simpler-login-url/

wpmayor wpmayor
19 mar 2011 00:10:35
Todas las respuestas a la pregunta 12
0

Puedes deshabilitar la página wp-login desde tus funciones enganchándote a login_head:

add_action( 'login_head', 'wp_die');

(obviamente esta es una forma muy tosca de hacerlo, pero evita que cualquiera pueda iniciar sesión a través de esa página. Podrías convertirlo en una función de redirección o un mensaje de advertencia, en lugar de simplemente terminar la ejecución).

Y copia el archivo wp-login existente a otra ubicación, asegurándote de actualizar la ruta relativa a wp-load.php cerca de la parte superior (y cualquier otra ruta relativa que pueda haber allí, incluyendo los enlaces a sí mismo y las acciones del formulario.

(Obviamente tendrás que eliminar la acción que agregaste a login_head aquí, de lo contrario tampoco podrás iniciar sesión desde esta página).

Luego, solo necesitarás agregar un filtro a login_url que devuelva la dirección de tu nueva página de inicio de sesión, de lo contrario las solicitudes de archivos wp-admin serán redirigidas a la antigua página de inicio de sesión, que ahora está deshabilitada.

19 mar 2011 01:05:23
4

Esta no es una gran idea de seguridad porque la página wp-login o wp-admin en sí misma no representa una amenaza de seguridad. Aunque se podría argumentar que si alguien tuviera tu contraseña/nombre de usuario, quizás no podría encontrar dónde iniciar sesión, lo que sería seguridad a través de la oscuridad.

Como kronus mencionó, probablemente podrías hacer algunos redireccionamientos sofisticados, aunque no estoy seguro de qué tan bien escalaría esto con futuras versiones o si vale la pena el esfuerzo. Personalmente, no creo que valga la pena y yo tomo la seguridad muy en serio.

Sugeriría algunas ideas mejores para tu inicio de sesión:

Habilitar SSL para el login/admin (https).

Proteger tu página con contraseña usando .htaccess (tendrías un doble inicio de sesión).

Usar un plugin como Limit Login Attempts, que bloquea a un usuario después de varios intentos fallidos.

23 feb 2011 08:20:58
Comentarios

Gracias por tus buenas sugerencias, pero quiero mover la página de inicio de sesión a otra ubicación.

user931 user931
23 feb 2011 08:42:35

Es absolutamente una buena idea. Ocultar el hecho de que tu sitio funciona con WordPress desalienta a las personas de intentar hackear la estructura principal. Si estuviera buscando blogs de WordPress y www.site.com/wp-login.php me mostrara un error 404, seguiría adelante sin intentar vulnerabilidades conocidas de PHP. Cada medida de seguridad ayuda a que tu sitio sea más a prueba de balas.

kristina childs kristina childs
14 dic 2012 21:55:31

¿Y una vulnerabilidad conocida del núcleo sería? No, no tienes ni conoces ninguna, así que estás hablando por hablar. Los profesionales de seguridad realmente protegen las aplicaciones y no ocultan cosas, eso es para niños.

Wyck Wyck
14 dic 2012 22:22:08

Nunca mencioné exploits del núcleo. Hay hacks en abundancia para plugins de WordPress, temas, etc. Solo echa un vistazo a cualquier sitio de reporte de exploits. Al revisar los registros de solicitudes HTTP fallidas, los sitios que administro reciben ataques de fuerza bruta y XSS dirigidos específicamente a WordPress todo el día, cada día. Según tu lógica, tampoco deberías mover wp-content fuera de la carpeta raíz de instalación, wp-config.php por encima de la carpeta raíz, eliminar el "powered by wordpress" en el pie de página, cambiar el prefijo predeterminado wp_ de las tablas o borrar la cuenta de administrador por defecto. Modificar los valores predeterminados sí es una forma de seguridad, y la página de login no es diferente.

kristina childs kristina childs
25 abr 2013 01:38:06
1

Ninguna de estas respuestas fue especialmente útil. Pongo en duda los motivos del OP, pero aquí está cómo hacerlo. Agrega esto a tu functions.php, pero asegúrate de reemplazar "$login_page_id":

// Esto redirigirá la página de inicio de sesión real a tu nueva página
add_action( 'login_redirect', 'custom_login_redirect' );
function custom_login_redirect()
{
    if ( 'wp-login.php' == $GLOBALS['pagenow'] )
    {
        // Establece tu $login_page_id
        wp_redirect( get_permalink($login_page_id) );
        die;
    }
}

// Esto reemplazará la URL de inicio de sesión utilizada por Wordpress
add_filter( 'login_url', 'custom_login_url', 10, 2 );
public function custom_login_url( $login_url='', $redirect='' )
{
    // Establece tu $login_page_id
    return get_permalink($login_page_id);
}

En tu nueva página de inicio de sesión, simplemente puedes agregar esta función para mostrar un formulario de inicio de sesión:

<?php wp_login_form(); ?>

http://codex.wordpress.org/Function_Reference/wp_login_form

21 feb 2013 08:44:06
Comentarios

Terminé creando un plugin que maneja esto. https://wordpress.org/plugins/sewn-in-template-log-in/

Jake Jake
23 feb 2016 03:29:39
1

OP, lo mejor que podrías hacer en este caso es filtrar por IP y permitir solo aquellas redes que tienen acceso al área de WP-Admin (ej. la IP de tu oficina, IPs de desarrolladores, etc.).

## .htaccess dentro de la carpeta wp-admin
order deny,allow
deny from all
allow from xxx.xxx.xxx
allow from xxx.xxx.xxx
allow from xxx.xxx.xxx
6 mar 2014 05:42:32
Comentarios

Con versiones recientes de Apache, esto se reemplazaría simplemente por require ip xx.xx.xx.xx, creo.

jfklein jfklein
10 feb 2019 23:22:29
2

En los cinco años que esta pregunta ha estado aquí, nadie ha abordado el problema central: La seguridad por oscuridad es una técnica válida para evitar bots automatizados y mantener los registros limpios. El objetivo de mover/ocultar wp-admin es hacer parecer a un bot que esto no es un sitio WordPress.

La forma en que yo oculto (pero no muevo) wp-admin es mostrar a los bots la página 404 estándar cuando intentan acceder a esa URL. Solo el acceso desde mi IP de casa permite que la página wp-admin se muestre correctamente. Este método hace parecer a un atacante/bot que wp-admin no existe, sin embargo, no rompe el código principal de WP ni los plugins que codifican directamente la ruta wp-admin. Este código en .htaccess lo hace posible:

RewriteEngine On
RewriteCond %{REMOTE_ADDR} !^12\.34\.56\.78$
RewriteRule ^/?wp-admin - [R=404,L]

Por supuesto, al usar el código reemplaza 12.34.56.78 con tu propia dirección IP. No olvides escapar los caracteres . ya que la dirección IP se interpreta como una expresión regular.

21 jul 2015 17:09:51
Comentarios

Esta no es una solución ya que la gran mayoría de las personas tienen IP dinámica y también podría querer acceder al panel de administración desde mi teléfono

okainov okainov
19 ene 2020 22:51:40

@TheGodfather: Entonces actualiza la RewriteCond según corresponda

dotancohen dotancohen
21 ene 2020 16:07:35
0

Se me ocurrió una solución para mover el inicio de sesión de WordPress desde /login/, /wp-admin/ o /wp-login.php a /cms usando solo reglas de reescritura en .htaccess.

¡No se necesita ningún plugin!

Pega esto en el archivo .htaccess en la raíz del proyecto:

<IfModule mod_rewrite.c>
      # Mover el inicio de sesión a /cms.
      RewriteCond %{REQUEST_URI} ^(.*)?wp-login\.php(.*)$
      RewriteCond %{HTTP_REFERER} !/cms(.*)$
      RewriteCond %{REQUEST_METHOD} POST
      RewriteRule ^(.*) ./cms?message=wrong_login_path [R=302,L]
      RewriteCond %{REQUEST_URI} ^(.*)?wp-login\.php(.*)$
      RewriteCond %{QUERY_STRING} !^cms=unlocked
      RewriteCond %{REQUEST_METHOD} !POST
      RewriteRule ^(.*) ./cms?message=redirect_to_custom_login_path [R=302,L]
      RewriteRule ^cms wp-login.php?cms=unlocked [L]
</IfModule>

¡Saludos!

Actualización: He mejorado algunas reglas para que incluso las solicitudes POST a /wp-login.php generen un error 403 prohibido. Esto ayudará contra los bots que intentan iniciar sesión en el panel de control usando métodos de fuerza bruta. Siéntete libre de comentar en esta publicación si tienes alguna mejora para estas reglas.

31 ene 2018 12:01:21
0

Crea nuevas páginas de inicio de sesión en subdirectorios. Copia la página existente de wp-login en un nuevo directorio dentro de tu raíz web (por ejemplo "/login"), renómbrala como index.php, agrega el bootstrap de WordPress al inicio de la página y haz los cambios que desees (temas, etc.).

Necesitarás ajustar un poco el código predeterminado de la página de inicio de sesión, principalmente para buscar/reemplazar enlaces codificados y redirecciones a "wp-login.php". Pero siempre y cuando dejes todos los hooks y filters en su lugar, este enfoque no afectará la integración con plugins. Las actualizaciones del núcleo de WordPress no serán un problema, a menos que la actualización incluya cambios en la página wp-login en sí (lo que rara vez ocurre en versiones menores).

También puedes crear páginas de cuenta de usuario de esta manera (yo las coloco en el directorio "/profile"). Una vez hecho esto, los usuarios con nivel de suscriptor nunca deberían necesitar acceder a wp-admin, por lo que puedes protegerlo con un archivo htaccess. Esta es la parte que realmente te brinda la seguridad adicional que buscabas. Solo asegúrate de hacer una excepción en tu htaccess para el archivo admin-ajax, ya que algunos plugins lo utilizan en el frontend.

Estoy bastante seguro de que no vas a encontrar una solución basada únicamente en plugins. Pero si lo haces, ¡avísanos!

18 abr 2011 07:15:40
0

Podrías usar este plugin:

http://wordpress.org/extend/plugins/wp-login/

Puedes simplemente crear una página y decirle al plugin que ahí es donde está el inicio de sesión. Pero básicamente lo que hace es redirigir wp-login.php a tu "página". Así que cualquier bot que busque wp-login.php simplemente será redirigido a tu "página".

Para proteger tu página de inicio de sesión de bots, deberías usar una combinación de una cookie y .htaccess, ya que la mayoría de los bots no usan cookies. Algo como esto:

RewriteCond %{HTTP_COOKIE} !^PHPSESSID=\w+ [OR]
RewriteCond %{HTTP_REFERER} !^https?://([^.]+\.)?example\.com/ [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ^$
RewriteRule ^wp-(comments-post|login|register)\.php http://example\.com [R=301,L,NS]

En el ejemplo anterior estoy usando una Cookie de Sesión PHP, ya que es la más fácil de implementar.

9 jul 2012 02:55:40
0

Esta respuesta es un complemento a dotancohen porque está incompleta. La respuesta de dotancohen no tiene en cuenta wp-login.php, lo cual deberías considerar si estás intentando ocultar WordPress.

Aquí te mostramos cómo devolver un error 404 tanto para wp-admin como para wp-login.php:

RewriteEngine On
RewriteCond %{REMOTE_ADDR} !^12\.34\.56\.78$
RewriteCond %{THE_REQUEST} \ /+wp-(admin|login)
5 may 2017 11:54:56
4

Podrías intentar editar el archivo .htaccess y realizar una redirección hacia otra ruta de tu conveniencia.

23 feb 2011 05:34:09
Comentarios

¿Estás hablando de reescritura de URL usando .htaccess? ¿No romperá las funciones internas del núcleo?

user931 user931
23 feb 2011 08:15:30

Bueno... si lo haces correctamente no debería romper nada. Leyendo tu actualización, te sugiero renombrar (o mover) tus elementos de inicio de sesión a otro directorio/ruta. ¿Qué tienes en mente? ¿Otro subdominio? ¿O simplemente otra ruta?

konus konus
23 feb 2011 17:40:17

Solo otra ruta...

user931 user931
26 feb 2011 00:01:31

Entonces puedes hacer un Buscar y Reemplazar en todos los archivos de WordPress, luego renombrar los archivos que tengan el mismo patrón, y después renombrar la carpeta wp-admin. Es un poco complicado y quedarás atado a esa versión (cualquier actualización romperá estos cambios)

konus konus
26 feb 2011 08:57:46
0

Para modificar la URL de cierre de sesión (en el administrador) edita tu archivo functions.php:

add_filter( 'logout_url', 'custom_logout_url');
function custom_logout_url( $login_url)
{
   $url = str_replace( 'wp-login', 'tu_archivo_logout', $login_url );
   return $url;
}
25 abr 2013 13:34:56
0
-5

Resolví este problema eliminando tres de mis blogs y cambiando los parámetros de limit-login a los máximos posibles: 9999.

Para ese despreciable spammer de la IP 208.91.199.94 que ha atacado mi página de inicio de sesión 750 veces en los últimos dos días, estoy trabajando en eliminarlo por otros medios.

8 jul 2012 20:30:38