viernes, 21 de mayo de 2021

Postgres en Mac: primeros pasos de ciberseguridad

La instalación de postgreSQL crea automáticamente un usuario postgres para uso interno del sistema, no para uso del usuario DBA.

Cuando uno piensa en ciberseguridad, generalmente uno se imagina en las más recientes técnicas de ciberescudos, vacunas y escaneos profundos de las computadoras; algo así como las mejores tecnologías de contraespionaje. Dejando todo lo hollywoodense a un lado, el 90-95% de la ciberseguridad es puro sentido común y utilizar una configuración pensada en técnicas recomendadas, nada más.
La ciberseguridad en PostgreSQL empieza con una configuración correcta.

Esto se puede comprobar en la terminal con el comando:

dscl . list /Users | grep -v '_'

Y se puede comprobar su "accesibilidad" al usuario final en Preferencias del Sistema → Usuarios y Grupos. Los usuarios que aparecen ahí son los llamados "accesibles" al usuario:

La instalación original de EDB instala un usuario postgres solamente accesible para el sistema. Yo creé un usuario postgres antes de la instalación para evitar problemas.

El problema de "accesibilidad" puede evitarse creando un usuario postgres antes de empezar el proceso de instalación y, de hecho, ejecutar la instalación con este usuario.

Otra característica de la instalación mediante el paquete EDB de postgrreSQL en Mac es que instala y configura scripts para el inicio automático del servidor (también llamado motor de DB) de PostgreSQL. Esto es deseable a veces y a veces no. Casi siempre es deseable que el servidor de PostgreSQL inicie automáticamente con la máquina y además que el DBA tenga control sobre el inicio o parada (reseteo) del servidor.
El archivo de inicio automático es:

     /Library/LaunchDaemons/com.edb.launchd.postgresql-13.plist

los. archivos .plist en macOS son archivos de configuración y son simplemente archivos de texto en formato XML 1.0. Se pueden editar manualmente con cualquier editor de texto. Las líneas de texto que controlan el inicio automático del servidor PostgreSQL son:
 <key>RunAtLoad</key>

     <true/>

si se quiere cambiar la configuración de default, arrancando al inicio, se debe cambiar la línea <true/> a <false/>.


Hay que notar que el archivo pertenece a root, si se quiere editar este archivo, hay que iniciar sesión como administrador del sistema, habilitar el usuario root, iniciar como usuario root, entrar a terminal y editar el archivo. Técnicamente la edición podría hacerse con la sesión de cualquier otro usuario mediante su o sudo, pero hacerlo directamente en sesión de root es más fácil y directo.

Pantalla de inicio de sesión del usuario root.

Nota: hay que recordar que en macOS el usuario root está deshabilitado por default. Para poder iniciar sesión con root primero hay que habilitarlo. Apple proporciona esta facilidad en macOS para poder hacer administración en el sistema, pero también hay que deshabilitarlo cuando se termina de usar. Dejarlo habilitado es una grave violación a la ciberseguridad.

Una vez editado el archivo .plist de postgresql, se puede reiniciar la Mac y revisar procesos en la terminal, el servidor postgres ya no debe estar arriba. O se puede reiniciar el motor de postgres mediante

     pg_ctl stop -D/Library/PostgreSQL/13/data y
  pg_ctl start -D/Library/PostgreSQL/13/data

Reinicio del servidor PostgreSQL en macOS; una de las ventajas  del arranque mediante comando, es que uno puede controlar los diversos parámetros de apertura, por ejemplo, la creación de logs.


Fecha espacial 6746.97