¿Debería WordPress añadir opciones para mejorar la seguridad o dejarlo en manos de los desarrolladores de plugins?
Basado en la pasión generada por las respuestas a esta pregunta. Parece que la respuesta es un rotundo "¡Nada!" o "déjalo en manos de los desarrolladores de plugins, WP ya es lo suficientemente seguro"...
¿Así que supongo que estoy completamente equivocado con la pregunta? Parece que he removido un avispero y ese no era el objetivo. Sin embargo, aquí está el resultado en el mundo real...
Acabo de recibir un correo de uno de mis clientes que tuvo 12 de sus sitios hackeados porque un atacante descifró su contraseña. Sus comentarios me abrieron los ojos a posibilidades de algunas opciones muy sencillas que podrían añadirse al núcleo de WordPress para ayudar a que los sitios WP sean menos propensos a este tipo de ataques.
Lo más simple que un usuario puede hacer es cambiar el nombre de usuario predeterminado. Supongo que más del 90% de los sitios WP en vivo tienen un perfil de usuario "admin" que puede o no estar en uso, pero que obviamente tiene todos los derechos y permisos. ¡El trabajo de un atacante ya está medio hecho!
Pero el núcleo de WP podría mejorarse con algunas opciones de seguridad muy simples también. ¿Qué tan difícil sería añadir...
- Bloqueo por intentos de inicio de sesión fallidos (configuración definida por el usuario)
- Regular el tiempo entre intentos de inicio de sesión fallidos (configuración definida por el usuario en segundos)
- Restricción por rango de IP (establecer una lista de IPs desde las que se aceptan inicios de sesión)
Estas son solo algunas ideas que se me ocurren. Estoy seguro de que ustedes también tienen mejores opciones.
Y el punto de mi pregunta no es lo que los "usuarios" deberían hacer para mejorar la seguridad, eso es otra cuestión completamente diferente. Pregunto qué pasos podría tomar WP para proporcionar algunas OPCIONES, nada obligatorio, pero cosas que los desarrolladores de plugins actualmente tienen que suplir donde deberían ser parte de cada instalación predeterminada de WP (en mi opinión).
¿Están planeadas alguna de estas mejoras para las próximas versiones de WP?
RESPUESTA: Nombre de usuario - admin
Desde la versión 3.0, el instalador solicita al usuario que proporcione un nombre de usuario para la cuenta principal, obviamente no obtendrás esta opción si actualizas desde una versión anterior (porque no es una nueva instalación).
Puedes ver una imagen de esto aquí:
http://codex.wordpress.org/Installing_WordPress#Step_5:_Run_the_Install_Script
RESPUESTA: Bloqueo de usuarios malintencionados
No hay una forma realmente efectiva de hacerlo, ya que cualquier información que puedas obtener y almacenar sobre un usuario puede ser falsificada y cambiada en cuestión de momentos, corres el riesgo de bloquear usuarios legítimos.
RESPUESTA: Intentos de inicio de sesión fallidos
Esto podría ser útil, pero siempre existe la posibilidad de que un usuario malintencionado bloquee a un administrador (u otro usuario) de su propia instalación simplemente intentando iniciar sesión en la cuenta de ese usuario con credenciales inválidas. Regular el tiempo entre intentos de inicio de sesión podría ayudar, pero honestamente, cualquier hacker inteligente automatizaría el procedimiento de todos modos y esto se vuelve un punto discutible hasta cierto punto (pero sí, seguro, detendrá a algunos).
Esa es solo mi opinión sobre esos puntos específicos, tómalo como quieras.. :)

@t3los: la mayoría de los sitios WordPress tienen un único usuario administrador. El inicio de sesión del administrador es a lo que propongo agregar opciones de fortalecimiento. Solo lo propongo como una opción, al igual que cambiar los enlaces permanentes. Gracias por ofrecer sugerencias.

@Scott B - ¿Qué sugerirías que se hiciera para proteger aún más las cuentas de administrador?

@t3los: creo que las 3 cosas que he enumerado en la pregunta serían suficientes para comenzar. Y serían cosas que simplemente podría "aconsejar" a los clientes que activen. Nada obligatorio. Y cuando digo que la mayoría de los sitios tienen un solo usuario administrador, generalmente ese es el ÚNICO usuario que tiene acceso al panel de WordPress en mi experiencia.

@t3los: Solo para aclarar sobre los usuarios administradores. Tengo ~1k clientes que usan WP (y más de 10k instalaciones de WP entre esos clientes). Más del 95% de ellos tienen exactamente 1 usuario en la tabla Usuarios, y en casi el 100% de esos casos, es el usuario admin.

Sí, pero como dije antes, existe el potencial de que algunas medidas tengan impactos negativos en la experiencia de un usuario legítimo (y poca inconveniencia para un hacker experto). Cambiar el nombre de la cuenta principal siempre vale la pena, como se menciona en la documentación de Hardening WordPress: http://codex.wordpress.org/Hardening_WordPress, que es una buena fuente de información para proteger un servidor (bueno, al menos es un buen punto de partida).

Supongo que nunca has tenido que manejar una base de usuarios considerablemente grande con un sistema de inicio de sesión con estrictas medidas de seguridad? No es bonito... :)
Los cambios de inicio de sesión que propones:
Harán poco por la seguridad, porque la mayoría de los hackeos provienen de versiones desactualizadas y mala seguridad del servidor, no de intentos de fuerza bruta en los inicios de sesión.
Generarán más comentarios negativos de los usuarios que los problemas de seguridad jamás lo han hecho o lo harán.
El asunto es que WordPress solo funciona como parte de un stack de servidor web. Hay un límite en lo que puede hacer respecto a la seguridad y las medidas generales harán más daño que bien en la mayoría de los casos.
WordPress se encarga de todo lo que puede y está impulsado por plugins para agregar y configurar lo que específicamente necesitas. Es difícil superar esto.

En la mayoría de los casos, estos son sitios pequeños con un solo usuario administrador. Las opciones que estoy proponiendo no son obligatorias y serían definidas por el usuario como un nivel adicional de seguridad. En el caso de mi cliente, cualquiera de las 3 opciones que sugerí probablemente habría evitado el simple robo de la contraseña de administrador. No puedo decir que el hacker simplemente se habría "ido", sin embargo, fue demasiado fácil.

@Scott B ¿en qué se diferencia habilitar una opción no obligatoria de instalar un plugin que hace lo mismo? Entiendo tu punto de que podría incluirse en el núcleo. Pero también entiendo que esto no es algo que WordPress deba hacer y tampoco es algo que no se pueda hacer ya.

tiene que ver con el nivel de sofisticación del usuario. Cierto, deberían saber estas cosas, pero la mayoría dan por sentado que WP ya está protegiendo sus sitios contra el pirateo simple de contraseñas. Así que si supieran lo fácil que es, con una instalación predeterminada de WP, descifrar la contraseña de administrador, tal vez harían lo que sugieres y buscarían el plugin y lo instalarían. La mayoría no lo sabe hasta que es demasiado tarde.

Si tu cliente tuvo 12 sitios hackeados, entonces una de dos cosas debe suceder: o necesita un mejor host, o debe dejar de crear agujeros de seguridad en sus sitios.
WordPress no necesita hacer ninguna de las cosas que sugeriste porque ya las tiene (puedes elegir tu propio nombre de usuario de administrador durante la instalación), o el caso de uso no lo justifica. Como señaló t31os, aunque esas cosas podrían ser útiles, también podrían ser utilizadas por hackers como un arma contra los administradores.
No hay suficientes personas que necesiten o deseen esas medidas de seguridad como para justificarlas como una opción en el núcleo.
Técnicamente, son una opción en el núcleo:
Ve a Plugins --> Añadir nuevo, busca 'Login Lockdown' e instálalo.

gracias por la sugerencia de "Login Lockdown". Consideraré recomendarla a mis usuarios. Aunque creo que debería estar integrado en el núcleo como una "Opción" en la configuración.

WordPress es la plataforma de blogs más popular y utilizada. Soporta cualquier tipo de sitio web, desde un simple blog hasta un sitio empresarial con todas las funciones. El veintiséis por ciento de todos los sitios web a nivel mundial utilizan WordPress. Como resultado de esta popularidad, los hackers y spammers han mostrado un gran interés en romper la seguridad de los sitios operados con WordPress.
Solo en enero de 2017, WordFence reportó un promedio de 26 millones de ataques de fuerza bruta contra sitios WordPress por día. En el mismo informe registraron ataques más complejos y dirigidos con un promedio de 4.7 millones por día durante el mismo período. Eso es mucha gente y bots con malas intenciones. La seguridad de tu sitio WordPress es muy importante, y un buen lugar para comenzar a protegerlo es en la pantalla de inicio de sesión, así que comencemos a hacer que la página de inicio de sesión de tu sitio WordPress sea un poco más segura.
1. No uses "admin" como nombre de usuario Este es quizás el paso más básico de seguridad en WordPress que puedes tomar como usuario. No te cuesta nada, y la instalación lo hace fácil de realizar. La mayoría de los ataques actuales se dirigen a tus puntos de acceso wp-admin / wp-login usando una combinación de "admin" y alguna contraseña en lo que se conoce como ataques de fuerza bruta. El sentido común indicaría que si eliminas "admin", también detendrás el ataque de inmediato.
Simplemente crea un nuevo usuario en WordPress en Usuarios > Añadir nuevo y asígnalo con derechos de Administrador. Después de eso, elimina el usuario "admin". No te preocupes por las publicaciones o páginas que el usuario "admin" ya ha creado. WordPress te preguntará amablemente: "¿Qué se debe hacer con el contenido propiedad de este usuario?" y te dará la opción de eliminar todo el contenido o asignarlo a un nuevo usuario, como el que acabas de crear.
2. Usa una contraseña fuerte
Los ataques de fuerza bruta a páginas de inicio de sesión son una de las formas más comunes de ataques web que probablemente enfrentará tu sitio. Si tienes una contraseña o nombre de usuario fácil de adivinar, tu sitio web casi seguro no solo será un objetivo, sino eventualmente una víctima.
Experimenta con las contraseñas del sitio web y cámbialas regularmente. Mejora su fortaleza añadiendo letras mayúsculas y minúsculas, números y caracteres especiales. Obliga a todos tus usuarios a utilizar contraseñas fuertes.
3. Limita los intentos de inicio de sesión Esta es una técnica increíblemente simple para detener los ataques de fuerza bruta en tu página de inicio de sesión. Un ataque de fuerza bruta funciona intentando adivinar tu nombre de usuario y contraseña probando múltiples combinaciones una y otra vez.
Si se rastrea la IP particular que está perpetrando el ataque, entonces puedes bloquear los intentos repetidos de fuerza bruta y mantener tu sitio seguro. Configura "Limit Login Attempts" para prevenir ataques de fuerza bruta.
4. Mantente actualizado Un porcentaje muy grande de los hackeos de sitios web provienen de versiones desactualizadas y vulnerables de plugins.
Cada buen producto de software es soportado por sus desarrolladores y se actualiza de vez en cuando, pero WordPress se actualiza con mucha frecuencia. Estas actualizaciones están destinadas a corregir errores y a veces tienen parches de seguridad vitales.
Así que actualiza tu WordPress, plugins y temas regularmente.
5. Haz copias de seguridad de tu sitio regularmente No importa cuán seguro sea tu sitio web, siempre hay margen de mejora. Pero al final del día, mantener una copia de seguridad externa en algún lugar es quizás el mejor antídoto sin importar lo que suceda.
Si tienes una copia de seguridad, siempre puedes restaurar tu sitio WordPress a un estado funcional en cualquier momento. Hay algunos plugins que pueden ayudarte en este aspecto.
El plugin WP All Backup te ayuda a crear copias de seguridad y restaurarlas fácilmente con un solo clic. Copias de seguridad manuales o automatizadas y también almacena las copias de seguridad en un lugar seguro como Dropbox o FTP.
Crea una copia de seguridad de todo tu sitio web: eso incluye tu base de datos, el núcleo actual de WP, todos tus temas, plugins y archivos subidos.
WP ALL Backup le da a los administradores de WordPress la capacidad de migrar, copiar o clonar un sitio de una ubicación a otra. Si necesitas mover WordPress o hacer una copia de seguridad de WordPress, este plugin puede ayudar a simplificar el proceso.
6. Establece contraseñas fuertes para tu base de datos Una contraseña fuerte para el usuario principal de la base de datos es imprescindible - el que WordPress usa para acceder a la base de datos.
Como siempre, usa mayúsculas, minúsculas, números y caracteres especiales para la contraseña.
7. Configura el bloqueo del sitio y prohíbe usuarios Una función de bloqueo por intentos fallidos de inicio de sesión puede resolver un gran problema, es decir, no más intentos continuos de fuerza bruta. Cada vez que haya un intento de hackeo con contraseñas incorrectas repetitivas, el sitio se bloqueará y se te notificará sobre esta actividad no autorizada.
El plugin WP User para WordPress tiene un mecanismo para ralentizar los ataques de fuerza bruta, limitar los intentos de inicio de sesión, notificar sobre bloqueos, expresiones regulares para contraseñas, Google reCAPTCHA, registro de inicios de sesión, aprobar/denegar usuarios, aprobación automática o por correo electrónico de usuarios.
