El número de ataques estos días a las páginas web de WordPress está siendo muy significativo.
Hoy os dejamos una manera que tienen los hackers de descubrir los usuarios administradores de tu web de manera rápida: la enumeración de usuarios.
Si alguien quiere probar descubrir el acceso de tu web “a lo bestia” (por fuerza bruta), necesita dos cosas: un usuario administrador y su contraseña. Si consiguen el usuario de manera fácil, tienen el 50% del trabajo hecho.
Aunque no consigan entrar, estos ataques quitan recursos del servidor, que tiene que estar comprobar si son reales, si la combinación de usuario y contraseña coincide o no.
Hay muchas maneras de descubrir los administradores de tu página en WordPress (otros días veremos otras), pero una de ellas es muy sencilla y es la que intentamos resolver hoy.
Solución: enumeración de usuarios en WordPress.
WordPress, por defecto, tiene varios sitios donde muestra usuarios:
- Si pones en tu web la siguiente dirección, cambiando el número (0,1,2,3…) puedes ver el listado de publicaciones de ese autor. Como muchas veces cometemos el error de publicar con el usuario administrador, tenemos un problema. Podremos obtener el usuario administrador.
https://tudominio.es/?author=0
- Tenemos que evitar mostrar el autor de las entradas de nuestro blog. Es algo que viene por defecto, es una información adicional para los hackers y, en la mayoría de los casos, es innecesario.
- La mayoría de los plugins SEO publican los archivos de entradas de autor en los buscadores. La dirección es
tudominio.es/author/usuarioadministador que de nuevo muestra el usuario.
Las soluciones para estos problemas dependen de tu web, pero te damos ideas que suelen servir para todas:
- Vamos a redireccionar cualquier petición a esa dirección a otra página (por ejemplo la portada). Con un código en htaccess como este (que hemos probado y funciona perfectamente):
# Enumeración de usuarios
RewriteCond %{REQUEST_URI} ^/$
RewriteCond %{QUERY_STRING} ^/?author=([0-9]*)
RewriteRule ^(.*)$ http://tudominio.es/tupaginadedestino/? [L,R=301]
O un código en el functions.php de tu tema hijo o plugin de snippets (este no lo hemos probado)
if (!is_admin()) {
// formato de url por defecto
if (preg_match('/author=([0-9]*)/i', $_SERVER['QUERY_STRING'])) die();
add_filter('redirect_canonical', 'smythsys_comprobar_autores', 10, 2);
}
function smythsys_comprobar_autores($redirect, $request) {
// formato de permalink
if (preg_match('/\?author=([0-9]*)(\/*)/i', $request)) die();
else return $redirect;
}
- La mayoría de los temas dejan eliminar esto. Si no, tenemos que ir a plugins que lo hagan como WP Meta and Date Removal.
Nota: no lo quitéis por css, no se ve pero los programas y los robots sí lo pueden encontrar. - Los plugins de SEO como Yoast permiten eliminar esto. En el vídeo lo explico.
Pero además, lo meten en los meta y en el esquema. El tema del meta creo que se arreglará en una versión siguiente, pero por ahora os dejamos un código que elimina ambos.
/*Elimina meta de autor en página */
add_filter( 'wpseo_meta_author', 'my_test_meta_author', 10, 2);
function my_test_meta_author( $author_name, $presentation ) {
return 'Lo que quieras poner';
}
/* Eliminar autor schemaYOast */
add_filter( 'wpseo_schema_needs_author', '__return_false' );
add_filter( 'wpseo_schema_article', 'smythsys_remove_author_wpseo_article_schema' );
function smythsys_remove_author_wpseo_article_schema( $graph_piece ) {
unset( $graph_piece['author'] );
return $graph_piece;
}
Os dejamos un vídeo que lo muestra.
Os recomendamos los siguientes productos relacionados con la informática: