.NET

Seguridad y servidor multiusuario

Este capítulo reúne lo que hace OmniDB para proteger las credenciales guardadas y un servidor compartido y multiusuario, y lo que eso significa para usted como administrador o usuario. Para instalar y exponer el servidor, consulte Despliegue de omnidb-server; para la gestión de contraseñas desde la línea de comandos, consulte Herramienta de configuración de OmniDB.

En lo sucesivo, «modo servidor» significa omnidb-server iniciado sin -A: una instancia multiusuario en la que las personas inician sesión desde un navegador, tanto si escucha solo en loopback como en una dirección de red (-H). La aplicación de escritorio es siempre monousuario.

Las contraseñas guardadas están cifradas

Las contraseñas de base de datos guardadas en una conexión, las contraseñas/frases de contraseña SSH y las claves privadas SSH se cifran (AES-256-GCM) antes de escribirse en la base de datos de usuario de OmniDB, omnidb.db. La clave de cifrado no se guarda en ese archivo: se conserva en el almacén de secretos del sistema operativo (el llavero de macOS, el Administrador de credenciales de Windows o Secret Service en Linux), de modo que una copia de omnidb.db por sí sola no las revela.

Cuando no hay ningún almacén de secretos accesible (normalmente, un servidor Linux sin entorno gráfico), OmniDB guarda en su lugar la clave en un archivo llamado .connection_secret_key (legible solo por su propietario) en el directorio home de OmniDB; una vez que ese archivo existe, se usa siempre. En ese caso:

Las entradas sin cifrar existentes de versiones anteriores se cifran automáticamente la primera vez que se inicia una versión más reciente. Si prefiere no guardar ninguna contraseña, déjela vacía en el formulario de la conexión: OmniDB se la pide cuando la necesita y la mantiene solo en memoria, durante 30 minutos, para su sesión (consulte Creación de usuarios y conexiones).

La cuenta inicial admin

Una instalación nueva en modo servidor crea un superusuario, admin, con una contraseña aleatoria que se muestra una sola vez en la salida de registro del servidor:

omnidb-server: initialized a new app database — initial login: admin / <password> (shown only once; change it under Settings, or run: omnidb-server --set-password admin)

Inicie sesión con ella y cámbiela en Configuración > Contraseña, o establezca de antemano la contraseña que prefiera desde la línea de comandos:

omnidb-server --set-password admin [-d /path/to/homedir]

La aplicación de escritorio nunca muestra una página de inicio de sesión; inicia sesión automáticamente en su propio servidor local, que solo escucha en loopback.

Protección del inicio de sesión y sesiones

Restricciones en modo servidor

Como todas las conexiones de un servidor multiusuario las abre el proceso del servidor, en la máquina del servidor, se restringen algunas opciones de conexión que leerían archivos del propio servidor:

Estas restricciones no se aplican a la aplicación de escritorio, donde los archivos son suyos.

Conexiones públicas

Una conexión marcada como ¿Conexión pública? puede usarla cualquier usuario de OmniDB del servidor, pero solo su propietario puede editarla. Para todos los demás:

Archivos exportados

Las exportaciones de consultas y de DBML se escriben en la carpeta temp del servidor con nombres aleatorios, y solo puede descargarlas el usuario que las creó. Se eliminan automáticamente pasadas 24 horas.

Claves de host SSH

Los túneles SSH y las conexiones de terminal SSH verifican la clave de host del servidor con el archivo ~/.ssh/known_hosts del usuario del sistema operativo que ejecuta omnidb-server. Una clave de host desconocida o modificada se rechaza: OmniDB no confía en silencio en un host en el primer uso. Añada el host una vez desde esa cuenta, por ejemplo:

ssh [email protected]        # accept the key once
# or
ssh-keyscan ssh-server.example.com >> ~/.ssh/known_hosts

Exposición en la red

No hay TLS integrado. Mantenga omnidb-server en 127.0.0.1 (el valor predeterminado) detrás de un proxy inverso con terminación TLS, en lugar de exponer HTTP sin cifrar con -H 0.0.0.0; consulte Despliegue de omnidb-server. Mientras está vinculado a loopback, el servidor solo responde a solicitudes dirigidas a 127.0.0.1, localhost o [::1] con su propio puerto, lo que lo protege frente a ataques de DNS rebinding desde páginas web. Las cookies de sesión se marcan como Secure cuando la solicitud llega por TLS o con X-Forwarded-Proto: https, y todas las solicitudes que modifican el estado están protegidas contra la falsificación de solicitudes entre sitios (CSRF).