Hoy voy a hablar sobre la seguridad del Blog, por razones de seguridad muchas personas no hacen esto, pero yo creo en el valor de compartir.
Al tener un sitio de wordpress hay que tener presente que si no se siguen las recomendaciones de seguridad tarde o temprano te van a hackear, porque no importa quien seas, hay miles de bots buscando páginas de wordpress que hackear y poder llenarlos de spam con fines maliciosos. Así que compartiré mis sencillas soluciones, disculpen que si son un poco rústicas y sencillas.
Algún día utilizaré algo avanzado, a penas estoy aprendiendo.
Mi estrategia de seguridad:
1. Abandonar el login por contraseña (Con plugins)
2. Eliminar la contraseña:
Hacerlo directamente en el valor de contraseña de la base de datos con una herramienta como PHPmyadmin
Es sabido que la función que valida la contraseña marca error al ingresar una contraseña en blanco, y como si fuera poco nos dicen que una contraseña en blanco también puede generar un hash.
Claro que lo dudé porque me parecía bastante dificil de creer, y si de verdad era cierto, entonces debía poder reproducir el mismo valor en mi terminal de Linux: d41d8cd98f00b204e9800998ecf8427e
¿Pero como? con /dev/null
md5sum /dev/null
Utilizando el comando md5sum pude reproducir exactamente el hash de una contraseña vacía generado con la función md5 del lenguaje PHP.
Con un poco de lógica, al tener el campo de la contraseña vacía en la base de datos, lo que en realidad está vacio es el valor de hash, puesto que las contraseñas no se almacenan. Y es claro que no hay contraseña que pueda generar un hash vacío.
Sin embargo el demostrar esa afirmación depende todo; así que fui más lejos y ejecuté este comando:
for p in $(compgen -c | egrep sum$) ; do echo "$p": ; $p /dev/null ; echo; done
Este comando busca entre todos los comandos disponibles en el Shell de Linux los programas de Hash disponibles, y hace que todos traten de generar el hash del valor vacio, estos son mis resultados:
sha512sum: cf83e1357eefb8bdf1542850d66d8007d620e4050b5715dc83f4a921d36ce9ce47d0d13c5d85f2b0ff8318d2877eec2f63b931bd47417a81a538327af927da3e /dev/null md5sum: d41d8cd98f00b204e9800998ecf8427e /dev/null sha224sum: d14a028c2a3a2bc9476102bb288234c415a2b01f828ea62ac5b3e42f /dev/null sum: 00000 0 sha384sum: 38b060a751ac96384cd9327eb1b1e36a21fdb71114be07434c0cc7bf63f6e1da274edebfe76f65fbd51ad2f14898b95b /dev/null sha1sum: da39a3ee5e6b4b0d3255bfef95601890afd80709 /dev/null shasum: da39a3ee5e6b4b0d3255bfef95601890afd80709 /dev/null sha256sum: e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855 /dev/null cksum: 4294967295 0 /dev/null innochecksum: InnoDB offline file checksum utility.
Finalmente gracias a varios foros de programación aprendí que cada HASH tiene su propio valor nulo, es un principio de la criptografía. Así que no hay resultado vacio como valor de HASH.
Conclusión:
A mi punto de vista, una hash vacío (y no contraseña) representa un gran obstáculo de crackear porque los métodos de fuerza bruta quedan totalmente descartados al ser virtualmente imposible.
Segundo, en alguna circunstancias podría ser un obstáculo adicional puesto que también habría que hackear la función que verifica que la contraseña no esté vacía.
Pero yo no sé programación, así que estaré consultando con varios programadores para pedirles su opinión. En el canal de irc me recomendaron que probara. Es lo único que me digeron.
3. Firewall
El plugin wordfence
Esta es mi etapa de la protección favorita, porque baneo las ips de los que cometan un sólo error , si alguien intenta logearse con una cuenta que no existe, su ip es baneada automáticamente por 2 meses.
Si alguien ingresa mi cuenta de usuario e intenta logearse con una contraseña incorrecta (todas son incorrectas punto 2) ; su ip queda baneada automáticamente por 2 meses.
Este plugin es bastante bueno porque todos los días hace un análisis de seguridad de todos los plugins y archivos de wordpress comparándolos con los de su base de datos. Antes trataban de hackearme todos los días como unas 100 veces, y ahora esta muy tranquilo todo ^o^
4. Esconder la dirección de login
Con un plugin hago que la url de login sea cambiada a otra a mi gusto; para poder acceder a la dirección de login usaría:
VBFMOC2ufDFAZt3eDEBKEQ como página de login
Este plugin es su versión premium ofusca todo el sitio de forma en que no es posible para los botssaber que es wordpress. Característica que me gustó mucho, y quisiera preguntarles que si no hay una alternativa gratuita para considerar comprarlo.
5. Habilitar la actualización automática de todo
Esto también se puede con wordfence, pero es sacrificar estabilidad por seguridad.
6. Hacer copias de seguridad automáticas
Siempre se nos dice, y es lo más básico en lo que puedes pensar, crear una estrategia de seguridad bien elaborada.
7. Robots.txt
Este punto también es bastante importante y lo pasamos por alto, wordpress incluye un archivo robots muy pobre, y si utilizan una herramienta de terceros para subir su sitemap entonces les pueden reescribir su archivo robots.txt, así que tengan mucho cuidado. Cuando no tenemos el archivo robots los robots nos van a indexar mucho contenido indebido, esto es malo porque se van a indexar y aparecer en los resultados de Google.
Traten que su archivo robots tenga mínimo esto:
User-agent: * Disallow: /wp-admin Disallow: /wp-includes Disallow: /wp-content/plugins Disallow: /wp-content/cache Disallow: /wp-content/themes Disallow: /wp-includes/js
Esto fue todo por ahora ;), es lo que creo que es más práctico para mantener la seguridad de un sitio. Posiblemente me vean como paranoica, pero no , para mi es sólo un juego de reglas.