Seguridad
Esta sección describe los conceptos de seguridad asociados con el servicio QSen, que permite el ruteo de órdenes a SENEBI.
Servidor de QSen: servidor en control del agente donde se encuentra instalado el software QSen, y desde el cual se realizan las consultas y envíos de órdenes a SENEBI.
Certificado del Agente: certificado generado por el agente para ser utilizado en la comunicación con SENEBI.
La parte privada de este certificado se necesita para comunicarse con el servicio de SENEBI.
La parte pública del certificado debe ser habilitado por BYMA previo a la instalación de QSen.
Ver Generación de Certificado y
Solicitud de Alta de Certificado
Luego de que el Certificado del Agente es habilitado por BYMA se debe tener cuidado donde se almacena y qué personas tienen acceso al certificado, ya que cualquiera que lo tenga puede utilizar SENEBI en nombre del agente (desde una IP habilitada).
El Certificado del Agente se guarda en el servidor de QSen encriptado mediante una clave a la cual solo tendrá acceso Quantex, de este modo:
- Quantex no tendrá acceso a los certificados (ni al servidor con la IP habilitada)
- Ni el Agente ni nadie más, aparte de Quantex, podrá utilizar los certificados instalados en el servidor.
La clave para desencriptar los certificados se envía en cada petición y los certificados se desencriptan solo en memoria.
De esta forma incluso si alguien logra vulnerar la seguridad e ingresar al servidor no podrá utilizar los certificados.
Durante el proceso de instalación de QSen el agente debe proveer el certificado generado. El script de instalación realiza una copia del certificado que es cifrada y subida al Servidor QSen junto al resto del archivos de instalación.
Para el cifrado del certificado se utiliza Encriptación Estándar Avanzada (Advanced Encryption Standard - AES). Este es uno de los algoritmos de cifrado más utilizados y seguros actualmente disponibles. La llave que se utiliza para la encriptación es generada por Quantex de manera aleatoria al momento de realizar la instalación y es única para cada agente.
Al finalizar la instalación el agente seguirá contando con el certificado desencriptado.
Servidor de QSen: Servidor en control del agente donde se encuentra instalado el software QSen, y desde el cual se realizan las consultas y envíos de órdenes a SENEBI.
Plataforma de Quantex: Conjunto de servidores y servicios de software que dan soporte a los servicios ofrecidos por Quantex.
Certificado de QSen: certificado generado durante el proceso de instalación y el cual es utilizado en la comunicación con Quantex. (este certificado es diferente al certificado Agente mencionado en el Anexo I)
Certificado de Quantex: certificado de la plataforma Quantex, utilizado en la comunicación con el Servidor QSen.
Para la comunicación entre la Plataforma Quantex y el Servidor QSen se utiliza autenticación SSL mutua (o bidireccional). Como su nombre lo indica, dicha forma de autenticación permite que tanto el cliente como el servidor en la comunicación se validen mutuamente. De esta forma toda la comunicación será encriptada y
- el Servidor de QSen valida que las peticiones son válidas y provienen de la Plataforma de Quantex,
- la Plataforma de Quantex valida que las peticiones son válidas y provienen del Servidor de QSen.
Para lograr esto ambas partes, además de poseer sus respectivos certificados (clave pública y privada), poseen el certificado (clave pública) de la otra parte. De esta forma durante el handshake TLS se valida que ambas partes sean quienes dicen ser y no un tercero. Luego que ambas partes se autentican correctamente la comunicación es encriptada con una clave simétrica generada durante el handshake, asegurando así la seguridad en la comunicación.
Adicionalmente:
-
Para ver mas en detalle como funciona este tipo de autenticacion: An Overview of One-Way SSL and Two-Way SSL
-
Para analizar un ejemplo sobre cómo lograr dicha autenticación en Golang: A step by step guide to mTLS in Go
En el Servidor de QSen Se configura un firewall (cortafuegos) con una política muy simple:
deny all
open ssh port
open SENEBI port
open qsen port
open kan 1 port
open kan 2 port
open kan 3 port
Particularmente utilizando ufw:
ufw default deny incoming;
ufw default deny outgoing;
ufw allow 52022;
ufw allow 8443;
ufw allow 8444;
ufw allow 8445;
ufw allow 8446;
ufw allow 443;
El puerto por defecto de SSH en el servidor, por cuestiones de seguridad, se cambia a 52022
.
Para el acceso por SSH al servidor el Agente puede optar por usar un password o una llave pública y privada. Adicionalmente el Agente puede agregar reglas de accesos adicionales como permitir el acceso solo desde determinadas IPs.