Cómo he hecho los logs de mi servidor inmutables con Polygon
Sellat es una herramienta que permite certificar cualquier archivo en blockchain. Hoy os explico cómo la he aplicado a mi propio servidor para hacer los logs de Nginx inmutables.
El problema: logs vulnerables
En el mundo de la ciberseguridad, se suele decir que «si no hay logs, no ha pasado». Pero, ¿qué pasa cuando no puedes confiar en tus propios logs porque alguien con suficientes permisos podría haberlos editado?
En cualquier VPS, los logs son ficheros de texto plano. Un administrador o un atacante puede modificarlos para borrar rastros de un acceso o cambiar una IP. Sin una referencia externa, es imposible saber si lo que lees hoy es lo que realmente se escribió ayer.
La solución: Sellat + Blockchain
Sellat actúa como una capa de verificación externa que conecta la realidad de mi servidor con la inmutabilidad de la red Polygon.
Mediante la creación de huellas criptográficas (hashes) encadenadas y su publicación en Polygon, cualquier intento de modificar el pasado del servidor deja una marca indeleble. Ya no se trata solo de almacenar datos, sino de darles una capa de verdad matemática.
Cómo funciona el flujo de trabajo
1. Rotación horaria: Un script de Bash en el VPS hace una «foto» del log de Nginx cada hora, lo archiva y vacía el original. Así convertimos un flujo constante de datos en piezas estáticas y manejables.
2. Hashing externo: El script calcula el hash SHA-256 del fichero de log y envía solo esta huella a la API de Sellat. El servidor nunca lee el log original, protegiendo la privacidad.
3. Encadenamiento (Chaining): Cada vez que Sellat recibe un hash, lo vincula con el hash del sellado anterior creando un chainHash. Es como un ADN que une cada hora de log con toda la historia previa. Si mueves un eslabón, todos los posteriores se rompen.
4. Ancla en Polygon: Un worker procesa la cola y registra el chainHash en Polygon. Esta es la última palabra: una prueba pública e inmutable que sirve de referencia para cualquier auditoría.
La clave: la verificación
Mucha gente piensa que la blockchain lo soluciona todo como por arte de magia. En el sistema que he montado, la blockchain es el ancla final, no la solución mágica.
Si quiero verificar todo un día de logs:
- Recalculo los hashes de cada fichero
.loglocalmente - Reconstruyo la cadena de hashes (
chainHash) - Comparo el último valor de mi cadena con el que hay registrado en Polygon
Si un solo bit ha cambiado en las últimas 24 horas, la cadena se rompe y el hash final no coincidirá con el de la blockchain.
Aquí es donde reside la elegancia del sistema: no necesito verificar cada hora individualmente. Con comprobar el último eslabón, valido automáticamente toda la cadena anterior. Es escalable y muy eficiente en coste de gas.
El estado del proyecto
Quiero ser transparente: la API de Sellat ya es plenamente operativa. Mi servidor se conecta cada hora y el sellado en la blockchain es una realidad constante y automatizada.
El siguiente paso es la interfaz de verificación pública. Aunque la cadena de hashes ya está en la blockchain, estoy desarrollando la herramienta que permitirá a cualquier auditor confirmar que la cadena no se ha roto con un solo clic.
En resumen: la «notaría» (la API) ya está abierta y firmando documentos; ahora estamos puliendo la «lupa» (el verificador) para poder leerlos sin esfuerzo.
Conclusiones
Con Sellat, he pasado de «confiar» en mis logs a poder auditarlos matemáticamente.
No impido que un root malintencionado borre datos, pero le quito el poder de mentir sobre lo que ha pasado. Cualquier manipulación deja un rastro de inconsistencia que ahora puedo detectar en segundos.
Si os interesa probar Sellat para vuestros propios casos de uso, podéis acceder en sellat.app.