Historias cortas de la vida real (I)

Hace un tiempo una amiga mía me contactó ya que a su vez un amigo suyo le escribió por un correo que le había llegado donde le pedían cierta cantidad de dinero en bitcoin, el motivo: tenían su contraseña y si no pagaba, iban a usar su cuenta para enviarle a todos sus contactos un video en la que hacía cosas poco decorosas y que escandalizarían al familiar más liberal mientras visitaba un sitio con contenido pornográfico. El temor de esta persona radicaba en que en efecto esa era la contraseña de uno de los dispositivos y aunque no tenía planeado pagar, no sabía qué hacer, ni como sabían su contraseña.

Esta es un tipo de estafa (entendiéndola también como una extorsión) muy común en la red y se aprovecha de tres situaciones: la primera, la fea costumbre que tienen la gran mayoria de personas de reciclar contraseñas, es decir, usar la misma contraseña para todas sus cuentas; la segunda, obtuvieron su contraseña no porque en realidad lo hayan hackeado, sino porque en algún lugar del basto mundo de internet, su correo electrónico y contraseña estaba expuesta y por último, estaban tratando de aplicar ingeniería social con un comportamiento bastante común en la red.

¿Cómo procedí?

Cuando vi el mensaje por primera vez, supe de inmediato que era una estafa y sospeché que en algún lado podría estar publicada esa contraseña, así que hice uso del servicio de Have I Been Pwned, sitio que permite verificar si un correo aparece en alguna de las filtraciones de datos de la web (de esto hablaré más adelante).

Efectivamente, alguno de los sitios en los que esta persona estaba registrado había sido hackeada y los registros de la base de datos expuestos en internet, sitios que nisiquiera recordaba que se había inscrito. Tomándome un poco de libertad, intenté ingresar a estos sitios y en uno, aún funcionaba la contraseña filtrada.

Con el misterio ya resuelto, le transmití un par de recomendaciones, debía cambiar todas las contraseñas de sus cuentas, no sobra revisar el estado del antivirus de los dispositivos, poner una contraseña que sea fácil de recordar pero no fácil de adivinar, de complejidad alta y lo más importante no reciclar contraseñas.

Espero esta experiencia sirva de reflexión para todos y nos ayude a prevenir estafas en la red.
Saludos.

¿Cómo construí este sitio?

Como lo comenté en las generalidades acerca de este blog, uno de mis obejtivos es enseñar las cosas que he aprendido y sobre las que me vaya formando.

La existencia de este espacio obedece a algo sobre lo que he ido estudiando: el proyecto docker y también a la época de cuarentena por los estragos que causó el COVID-19 (A la fecha en la que escribo esta entrada, aún nos encontramos en cuarentena). Hace un tiempo había oído hablar del proyecto Docker, pero nunca había despertado en mí ningún tipo de interés.

Un día me encontraba buscando la forma de realizar transmisiones en vivo a múltiples plataformas en mi faceta como DJ y hallé una solución que significaba bajar una imagen de Docker y correrla en un contenedor, no entendía muy bien de lo que me estaban hablando así que me dispuse a aprender en el camino y voilá, fracasé rotundamente, no lograba hacer correr la aplicación que necesitaba.

Yo siempre he sido alguien de la vieja escuela, fanático de las máquinas virtuales y los entornos de pruebas, no concebía que alguien me ahorrara todo el trabajo de instalar requerimientos, configurarlos y poner a andar la aplicación tan sólo con unas cuantas de líneas de comando. Finalmente después de mucho investigar, logré poner a andar el servidor que necesitaba, claro no sin antes descargar la ISO del sistema operativo, instalar la máquina virtual, configurar repositorios, actualizar el sistema base, instalar la aplicación, bajar los módulos adiciones. Con mi aplicación ya corriendo, estaba feliz, sin embargo, me quedó el mal sabor de boca del fracaso con Docker.

Otro buen día, estaba buscando una documentación acerca de una solución que estaba implementando en el lugar donde trabajo y me encontré con que tenía una imagen en Docker, pero esta vez era diferente, porque había un paso a paso muy completo descrito por Pelado Nerd en su canal de youtube. Y no sólo eso, explorando sus vídeos encontré un completísimo curso de introducción a Docker, que en últimas es lo que hizo posible que construyera este sitio.

No entraré en muchos detalles acerca de la instalación de Docker y Docker compose, ni su uso, el Pelado nerd ya lo hizo y no creo que sea capaz de superar su explicación, así que sin más preambulo, vamos a la obra.

Decidí usar como motor de base de datos mariadb y como CMS wordpress, junto con un certificado SSL generado por letsencrypt, así que el archivo docker-compose en YAML se ve más o menos así:

docker-compose.yaml
version: "2"
services:
#Todos los servicios que se monten están detrás del proxy
 nginx-proxy:
  image: jwilder/nginx-proxy
  restart: always
  ports:
   - "80:80"
   - "443:443"
  volumes:
  #Socket de docker y volúmenes necesarios para el proxy
   - /var/run/docker.sock:/tmp/docker.sock:ro
   - /ruta/de/certificados:/etc/nginx/certs:ro
   - /etc/nginx/vhost.d
   - /usr/share/nginx/html
  #Etiquetas  
  labels:
   - com.github.jrcs.letsencrypt_nginx_proxy_companion.nginx_proxy
#Imagen para generar los certificados gratuitos con letsencrypt
 letsencrypt:
  image: jrcs/letsencrypt-nginx-proxy-companion
  restart: always
  volumes:
   - /ruta/de/certificados:/etc/nginx/certs:rw
   - /var/run/docker.sock:/var/run/docker.sock:ro
  volumes_from:
   - nginx-proxy:rw
#Motor de la base de datos
 db:
  image: mariadb:10.5.2
  volumes:
   - /ruta/de/basedatos:/var/lib/mysql
  restart: always
  environment:
   MYSQL_ROOT_PASSWORD: XXXXX
   MYSQL_DATABASE: nombre_base_datos
   MYSQL_USER: usuario_wordpress
   MYSQL_PASSWORD: password_usuario
#CMS del blog
 wordpress:
  depends_on:
   - db
  image: wordpress:php7.4-apache
  expose:
   - "80"
   - "443"
  restart: always
  environment:
   WORDPRESS_DB_HOST: db:3306
   WORDPRESS_DB_USER: usuario_wordpress
   WORDPRESS_DB_PASSWORD: password_usuario
   WORDPRESS_DB_NAME: nombre_base_datos
  volumes:
   - /ruta/de/archivos/cms:/var/www/html/
#Variables de entorno para el proxy y letsencrypt
  environment:
   - VIRTUAL_HOST=computadoresycafe.com,www.computadoresycafe.com
   - LETSENCRYPT_HOST=computadoresycafe.com,www.computadoresycafe.com
   - [email protected]

Y ya está, luego de editar el archivo, corremos el docker-compose con el siguiente comando:

Sin título
docker-compose up -d

Y ya con esto tenemos una copia de wordpress lista para trabajar con mariadb en menos de 20 minutos, solo basta con que accedan desde el navegador al dominio del sitio, finalicen las configuraciones requeridas.

Al ingresar por primeza vez a la URL del sitio vermos algo así

Espero haya sido bastante constructiva esta entrada, nos vemos en la próxima.