Cómo establecer un acceso seguro a los servidores en modo remoto



Aquí en Habré ya hay docenas de artículos que cuentan cómo las personas experimentaron la transición a un lugar remoto, cómo experimentaron los primeros días de un sitio remoto, luego cómo fue la primera semana, y así sucesivamente. A veces, algunos consejos prácticos se deslizaron entre la descripción de las emociones. Nosotros, como personas con 12 años de experiencia en la administración remota de servidores, decidimos hablar sobre una herramienta sin la cual el servidor remoto se convierte en un evento bastante peligroso para su negocio. ¿Por qué? - Porque la gente piensa en cualquier cosa (en primer lugar, por supuesto, en los malditos 40 minutos libres en el "zoom"), pero no en la seguridad. Más precisamente, por supuesto, usted pensó en este tema, pero ¿apostamos a que no fue el primero en la fila?

Y la contrapregunta: me pregunto a qué condujeron tus pensamientos. Después de todo, sus colegas, sentados en acogedores apartamentos y casas, van con equipos desprotegidos a través de canales desprotegidos y literalmente tocan todos los servidores de la compañía ...

Queremos compartir con ustedes una versión de código abierto de la herramienta utilizada en nuestra compañía como servidor de bastión. Se llama DevOpsProdigy Isolate Authentication Server .

Cómo funciona


1. Isolate agrega una contraseña de un solo uso y autenticación de dos factores al inicio de sesión SSH. Puede usar el equipo YubiKey o la aplicación Google Authenticator para esto . Incluso si un usuario ha perdido la contraseña de su cuenta, sin una clave OTP, un atacante no puede usarla y acceder al servidor Isolate. Para implementar la autenticación de dos factores, utilizamos el módulo pam. Puedes leer más sobre esto en este viejo artículo .

2. Los usuarios no obtienen acceso directo a los servidores finales: la conexión pasa a través del servidor Isolate y el sistema monitorea y registra toda su actividad.

Todas las acciones del usuario se reducen al uso de dos comandos:

s <search-str>- para buscar información por nombre de proyecto o nombre de servidor, la información se almacena en la base de datos incorporada de Redis, que se cierra por autorización.

g <ip-address> / g <project-name> <server-name>- comienza una llamada a este comando /usd/bin/ssh . Los argumentos para la llamada (por ejemplo, nombre de usuario, dirección IP, puerto, proxy) se toman de la base de datos.

3. Es fácil administrar el acceso al servidor de autenticación: agregar / eliminar usuarios, etc. Puede encontrar una gran cantidad de ejemplos sobre el uso de comandos en el archivo Léame auth-add-user, auth-add-hostetc.

Técnicamente, necesita generar y colocar la clave del servidor Isolate en los servidores de destino, y sus usuarios deben obtener acceso regular al servidor Isolate de sudo a ssh.

Y cuando quieran conectarse al servidor de destino, el sistema ejecutará el comando ssh. A continuación, el cliente ssh, lanzado desde un usuario privilegiado, recibirá una clave, mediante la cual el sistema, a su vez, obtendrá acceso al servidor deseado.

Eso es todo. Isolate se ejecuta en la configuración de CentOS 7 / Ubuntu 16.04 / Debian 9 . También se necesita Ansible 2.3+ .

No puedo dejar de notar que DevOpsProdigy IsolateTambién es útil en "tiempo de paz": puede estar tranquilo con él para sus servidores, incluso si alguien pierde una computadora portátil con una clave SSH. Y cuando un empleado que tenía acceso deja la empresa, no tendrá que apresurarse para cambiar todas las contraseñas y claves. Ahora estamos preparando una lista de mejoras y características para la versión actual de esta herramienta, que se implementan en nuestro sistema interno. Estamos esperando deseos, problemas, relaciones públicas en nuestro repositorio de github . Para discusiones y preguntas, también hay un chat de telegramas y un chat en Slack .

Así que ahora el trabajo remoto en su empresa puede ser un poco más fácil. Y seguro, mucho más seguro. Buena suerte

All Articles