sql >> Base de Datos >  >> RDS >> Sqlserver

Conexión de un servidor Bastion a un servidor PostgreSQL a través del túnel SSH

PostgreSQL es un conocido sistema de administración de bases de datos relacionales que cuenta con un entorno seguro para desarrolladores y usuarios. Pero a medida que el trabajo remoto continúa siendo parte de la nueva normalidad de todas las empresas, los profesionales de TI se enfrentan a una nueva serie de desafíos cuando se trata de administrar la seguridad y la accesibilidad de sus servidores.

El uso de un servidor bastión para acceder a una base de datos PostgreSQL agrega una capa adicional de seguridad. Pero debido a que los servidores bastión deberían actuar como cortafuegos, es necesario usar un túnel Secure Shell (SSH) para reducir el nivel de exposición de la red privada.

Muchas herramientas de administración de bases de datos de PostgreSQL pueden automatizar este proceso de conexión, pero la interacción con el shell requiere la creación manual de un túnel SSH. Comprender el proceso y las precauciones seguramente puede ayudar a su empresa a mantener bases de datos seguras.

Beneficios de crear y usar un túnel SSH Secure Shell

La tunelización SSH se ha utilizado en las comunicaciones de red durante más de treinta años y es igual de relevante para las necesidades informáticas actuales.

Los desarrolladores recurren constantemente a los protocolos SSH Secure Shell para administrar el acceso a la base de datos en todo tipo de servidores, incluido PostgreSQL. El acceso remoto seguro es fundamental hoy en día, especialmente cuando el 50 % de los dispositivos del lugar de trabajo son móviles (los dispositivos móviles se encuentran entre los más vulnerables a los ataques cibernéticos). Esto hace que sea aún más importante que las organizaciones puedan administrar de forma remota los dispositivos y el acceso de los usuarios a sus redes.

Las empresas que manejan grandes cantidades de datos necesitan dar a los empleados acceso rápido a las principales bases de datos y adoptar un enfoque proactivo para la seguridad de la base de datos. El uso de protocolos SSH es el número uno para proporcionar acceso seguro a los usuarios desde servidores remotos. También simplifica la autenticación de programas automatizados. Por lo tanto, las empresas pueden ejecutar sus tareas diarias de manera más eficiente.

A medida que los estándares de seguridad finalmente se están poniendo al día con los dispositivos móviles y los servidores remotos, también podemos esperar que mejoren los protocolos de encriptación y autenticación. La flexibilidad y la interoperabilidad son el futuro de la seguridad de IoT. Aún así, los protocolos SSH seguirán siendo una parte estándar en el futuro previsible.

¿Cómo funciona SSH?

Los protocolos SSH le permiten controlar de forma remota el acceso a sus servidores a través de Internet en un entorno seguro. No solo la conexión inicial es altamente segura, sino también toda la sesión de comunicación entre las dos partes. Los usuarios pueden iniciar sesión en un servidor remoto utilizando un túnel SSH Secure Shell abierto u otros clientes SSH Secure Shell.

El servidor busca una conexión de puerto abierto. Una vez que encuentra uno, el servidor debe autenticar la conexión. Determina si se ha establecido un entorno seguro para la comunicación y la transferencia de archivos. Si la conexión la inicia el cliente, el cliente debe autenticar el servidor además de proporcionar sus credenciales.

Cuando ambas partes se autentican y se establece la conexión, el protocolo de cifrado SSH garantiza la privacidad continua de todas las transmisiones de datos entre el servidor y el cliente.

Hay tres tipos de encriptación que utilizan los túneles SSH para proteger las conexiones:

  • cifrado simétrico
  • cifrado asimétrico
  • hashes.

Cifrado simétrico se utiliza durante la duración de la conexión para mantener la comunicación segura. Tanto el cliente como el servidor comparten la misma clave secreta para cifrar y descifrar datos. Este algoritmo es seguro porque nunca se intercambia una clave real. Más bien, ambas partes comparten información pública de la que pueden obtener la clave de forma independiente.

Cifrado asimétrico , por el contrario, requiere tanto una clave pública como una privada. Se utiliza al comienzo del proceso de tunelización para autenticar los servidores. El servidor utilizará una clave pública para cifrar esos datos y el cliente debe autenticarlos con una clave privada. Dado que una clave privada en particular es lo único que podría descifrar los mensajes cifrados con la clave pública, esto ayuda a autenticar a las partes que buscan la conexión.

Hashing criptográfico crea una firma única para el conjunto de datos. Esto es útil en una conexión SSH porque permite que el servidor sepa si una MAC es aceptable. Un hash coincidente solo puede ser creado por la pieza de datos idéntica a la que creó el original. Por lo tanto, el hashing se puede usar para verificar la entrada y asegurarse de que sea la correcta.

Autenticación SSH

Después de establecer el cifrado, se lleva a cabo un proceso de autenticación. La forma más simple de autenticación es usando una contraseña. Aunque esta es una forma fácil para los clientes, también es muy fácil para los scripts automatizados maliciosos. Incluso una contraseña cifrada tiene una complejidad limitada. Lo vuelve inseguro. Usar claves asimétricas es una medida común en lugar de usar contraseñas.

Una vez que se establece una clave pública, el cliente debe proporcionar la clave privada que acompaña a la clave pública. Sin esta combinación, la autenticación falla. Esto ayuda a garantizar que un intruso no pueda descifrar los datos cifrados.

Todo el proceso de autenticación se negocia durante la configuración y solo las partes con claves complementarias pueden comunicarse. Este proceso también hace que el proceso de inicio de sesión sea rápido. Por lo tanto, es óptimo para procedimientos automatizados.

El proceso de autenticación variará según los siguientes factores:

  • el tipo de base de datos que se protege
  • la relación y ubicación del servidor
  • los permisos del usuario dentro del servidor.

Lo bueno de usar un protocolo SSH es que todo el proceso está encriptado y altamente seguro.

Configurar túnel SSH

Si desea interactuar con una base de datos utilizando el shell, debe saber cómo crear un túnel SSH. Si bien el uso de una aplicación de administración de SSH automatizada puede ser conveniente, muchos administradores de bases de datos prefieren configurar herramientas de administración de bases de datos desde cero porque interactuar con el shell es la mejor manera de depurar, auditar y tener el máximo control.

El uso de un túnel SSH es una forma muy segura de abrir una sesión sin temor a perder datos o ser pirateado (siempre que cierre sus sesiones y supervise sus servidores).

Aquí se explica cómo crear un túnel SSH:

Verificar el servidor bastión

Para crear un túnel SSH Secure Shell, debe conocer los nombres de host del servidor bastión y la base de datos PostgreSQL, así como su nombre de usuario en el servidor bastión. Ejecute el comando:

$ ssh <username>@<bastion_server>

Luego ingrese su contraseña cuando aparezca la ventana correspondiente.

Túnel SSH abierto

Abra el túnel usando este comando:

$ ssh -L localhost:port_number:<sql_server>:port_number<username>@<bastion_server>

Deje la ventana abierta para mantener la conexión. Los números de dos puertos son para su computadora y el servidor remoto, respectivamente.

Verifica tu conexión

Para asegurarse de que su túnel esté abierto y conectado al servidor PostgreSQL, use el siguiente comando:

$ psql --port=X --host=localhost -c "SELECT * FROM pg_catalog.pg_tables"

A ver si se devuelven las tablas. Si es así, entonces su conexión fue exitosa y segura.

Un par de pasos opcionales pueden aumentar la eficiencia de su acceso desde el host bastión al servidor SQL. Sin embargo, tenga en cuenta que automatizar el acceso todo el tiempo no es una estrategia segura. Es aconsejable iniciar sesión siempre que desee abrir un túnel SSH para mantener las sesiones completamente privadas.

Crear perfil de usuario

Para evitar la necesidad de ingresar contraseñas cada vez, puede crear un perfil en el servidor bastión. Para hacer esto, debe agregar su clave SSH al servidor usando el siguiente comando:

$ ssh-copy-id <username>@<bastion_server>

Luego, su clave se usará automáticamente cada vez que desee iniciar sesión. Sin embargo, tiene aspectos tanto positivos como negativos. Es más conveniente, pero debe asegurarse de tener otros protocolos de seguridad para proteger la máquina contra malware o robo. Si alguien más obtiene acceso a su máquina, es posible que pueda iniciar sesión automáticamente en sus servidores porque su clave está guardada.

Actualice su archivo de configuración SSH

Puede ser complicado recordar los nombres exactos y los números de puerto de los servidores a los que desea conectarse. Es por eso que es parte del protocolo de túnel SSH Secure Shell.

Está realizando un seguimiento de los nombres de host y se autentica con su nombre de usuario. Es parte de lo que hace que la conexión SSH sea segura en primer lugar. Pero hay una manera de configurar su procedimiento para que el acceso sea más rápido y fácil sin automatizar completamente el proceso. Puede agregar una entrada a su archivo de configuración SSH:

Host bastión-producción

  • Nombre de host
  • Usuario
  • LocalForward localhost:número_puerto:número_puerto

Luego, ejecuta el comando:

$ ssh bastion-production 

Ahora puedes conectarte en un solo paso.

Consejos de privacidad de SSH

Es imperativo mantener las bases de datos seguras. Los datos son la moneda más valiosa del mundo y, con el aumento del ransomware y otros delitos cibernéticos, no proteger los datos de los clientes es un error inaceptable.

El objetivo principal de usar el servidor bastión en primer lugar es proteger su base de datos. Sin embargo, algunos pasos en falso dejarían sus servidores completamente abiertos para que cualquiera entrara.

Estos son algunos consejos para mantenerse seguro al usar túneles SSH para conectarse a servidores PostgreSQL:

Autenticar adecuadamente a los trabajadores remotos

Si su organización usa SSH para conectarse de forma remota, todos deben conocer los conceptos básicos de la higiene digital. Utilice una autenticación basada en claves que esté protegida por una contraseña segura. La verificación en dos pasos para cada inicio de sesión también es un buen punto de partida, además de garantizar que las claves SSH públicas sean auténticas.

Limite los inicios de sesión SSH solo a aquellos que los necesitan y establezca privilegios que reflejen las tareas de los usuarios.

Deshabilitar el reenvío de puertos

Solo alrededor de la mitad de los desarrolladores aplican procedimientos de prevención de reenvío de puertos. El reenvío de puertos puede dejarlo abierto a comunicaciones encriptadas con usuarios y servidores no aprobados. Por lo tanto, los piratas informáticos pueden acceder directamente a su base de datos. Filtre todas sus conexiones a través del servidor bastión y considere usar el puerto golpeado antes de permitir una conexión.

Asegúrese de estar ejecutando el software más reciente y que sus conexiones SSH cumplan con los estándares de cumplimiento más recientes.

Auditoría frecuente

Use una herramienta de monitoreo continuo además de las auditorías manuales periódicas. Limite sus conexiones solo a aquellas que sean necesarias y asegúrese de verificar si hay cambios en sus ajustes de configuración que no hayan sido aprobados de antemano.

Al vigilar quién inicia sesión y qué tipo de actividad está realizando, puede limitar la superficie de ataque y facilitar la identificación de vulnerabilidades desde el principio.

Conclusión

El uso de túneles SSH cifrados es una forma segura de acceder a bases de datos PostgreSQL desde servidores remotos. El proceso mantiene el cifrado durante la duración de las sesiones conectadas. Aunque los programas SSH automatizados son útiles para tareas recurrentes y otros procesos administrativos del sistema, abrir un túnel SSH manualmente puede ser beneficioso. En ese caso, puede identificar fácilmente todo el tráfico y la comunicación en lugar de usar una versión o un cliente automatizado.

Si usa PostgreSQL o cualquier sistema de administración de base de datos SQL, necesita saber cómo utilizar el túnel SSH. Puede ser crucial para monitorear y administrar los procesos del sistema y las transferencias de datos.

Los protocolos SSH brindan una conexión altamente segura, y seguir precauciones adicionales ayudará a mantener la integridad de las conexiones de su servidor.