Mi estrategia de Seguridad del Blog

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.

These bottons respect your privacy