DEV Community

Francisco Javier Guerrero Martinez
Francisco Javier Guerrero Martinez

Posted on

Un análisis de cómo vulneraron mi servidor de pruebas de PostgresSQL y cómo proteger tu

Un análisis de cómo vulneraron mi servidor de pruebas de PostgresSQL y cómo proteger tu instalación si eres nuevo con este motor de base de datos.

Recientemente inicié a trabajar con una base de datos PostgreSQL fuera del ambiente seguro de los contenedores, esto On Promise en un servidor virtual, ya se la saben primero hago explotar mis experimentos en casa y ya luego al mundo laboral.
No han pasado menos de tres días que empecé y me había percatado de que la CPU estaba al máximo y se me creaban una serie procesos que consumían todos los núcleos.

Sin comprender porque sucedía el día de hoy empecé a indagar por cuenta propia y descubrí una “vulnerabilidad” del propio gestor, “PgMiner Botnet Attacks PostgreSQL” hasta este punto debo reconocer lo noob que vengo siendo y el pecado de la inocencia, mi experiencia se desarrolla más en Percona con base MySQL.

Después de estar leyendo diversos artículos de cómo deshacerme de este “Malware” llegué a las entradas de Sanchistsharman Investigation into Postgres malware (hack?) - DEV Community, pero antes de describir todo esto te explico.
Siempre que instalo un nuevo servidor Linux por defecto va Glances and Htop para tener una vista más clara se los procesos que se están ejecutando.

UFW to Rescue

El proveedor actual no nos da un firewall administrable así que lo primero que realicé fue habilitar ufw, actualmente trabajo con Ubuntu Server 20.04.

En este punto dejo abierto solo los puertos que requiero para administrar el servidor.
Una vez aplicadas las reglas al firewall procedí a deshabilitar el logueo de usuario postgresql y revocar los accesos a las bases de datos.

Como siguiente punto cambiar el puerto 5432 por uno diferente, esto lo recomiendo para todos los servicios a excepción de los puertos 80 y 443, el resto de los servicios puede ser cambiado.
En este punto tanto el uso de la CPU como de la Memoria había disminuido.

image

Lo mismo de agradecido hasta ahora con las conexiones al servidor

image

Te recomiendo seguir esta guía Cómo configurar un firewall con UFW en Ubuntu 20.04 | DigitalOcean

Posteriormente regresando al post de Sanchistsharman me he puesto a leerlo todo y trate de entender el cómo lo había hecho.

En mi caso particular estoy trabajando con la versión 12 del motor y el manual no funcionó como tal sin embargo al navegar en /var/lib/postgresql/12 había encontrado un “binario llamado k” pero lo que el indicaba en el manual no.

Retrocedí un directorio y ejecuté el comando ls -f para mostrar los archivos ocultos y me encontré con el siguiente archivo .systemd-private-2OossFop8vSbHI1fjSzMJoolZfE29S.sh cuyo contenido no es más que una cade hasheada a base 64

A continuación la imagen

image

Acorde a lo que indica el post de sanchistsharma hay que navegar en los directorios del archivo ya desencriptado para removerlo.

Después de una batalla de tres horas así luce nuevamente mi servidor de pruebas

image

Conclusiones.

Después de esta vulnerabilidad recomendaría que, aunque tengas una instalación en Windows revisaras el estado de tus procesos (así sea para pruebas), si vas a trabajar con un servidor fuera de contenedores:

  • Cambiar los puertos, deshabilitar el logueo para el usuario postgresql y crear otro rol que pueda administrar el motor

  • Utilizar una contraseña de más de 16 caracteres algo como wt2Ut/rF)asd3412-*--x~FZ.!*V((k4ry podría ayudar

  • No dar por sentado que la instalación por defecto mitigará errores o vulnerabilidades, así sea la última versión.

  • Linux es un sistema seguro, los errores los comete el administrador sorry

  • Aventurarse a trabajar y aprender cosas nuevas es divertido dentro de un entorno seguro, cuando vayas a producción asegúrate de haber aprendido todo y conocer realmente la tecnología que vas a implementar y sus vulnerabilidades, hoy lo aprendí a la mala.

  • Siempre pregúntate ¿qué pasó aquí? Y cómo poderlo resolver, recuerda que en producción se vuelve más complicado, ten ese espíritu de batalla e investigación.

  • Duerme a tus horas.

Referencias

Top comments (0)