GNU/Linux >> Tutoriales Linux >  >> Linux

Administrar clúster de computadoras Linux detrás de firewalls

Solución 1:

Obtener actualizaciones, no empujar

A medida que escala, se volverá inviable hacer empujar actualizaciones de todos sus productos.

  • Tendrás que realizar un seguimiento de cada único cliente, cada uno de los cuales puede tener una configuración de firewall diferente.
  • Tendrás que crear entrantes conexiones a través del cortafuegos del cliente, lo que requeriría el reenvío de puertos o algún otro mecanismo similar. Este es un riesgo de seguridad para sus clientes

En su lugar, haga que sus productos "extraigan" sus actualizaciones periódicamente, y luego podrá agregar capacidad adicional en el lado del servidor a medida que crece.

¿Cómo?

Este problema ya ha sido resuelto, como usted sugirió. Aquí hay varios enfoques que se me ocurren.

  • usando apt :use el sistema apt incorporado con un PPA personalizado y una lista de fuentes. ¿Cómo configuro un PPA?
    • Contra: A menos que utilice un servicio de alojamiento público como Launchpad, configurar su propio sistema de empaquetado apt PPA + no es para los débiles de corazón.
  • usando ssh :Genere una clave pública SSH para cada producto y luego agregue la clave de ese dispositivo a sus servidores de actualización. Luego, simplemente tenga su software rsync / scp los archivos requeridos.
    • Contra: Debe realizar un seguimiento (¡y hacer una copia de seguridad!) de todas las claves públicas de cada producto que envíe.
    • Pro :Más seguro que una descarga sin procesar, ya que los únicos dispositivos que pueden acceder a las actualizaciones serían aquellos que tengan la clave pública instalada.
  • descarga sin formato + verificación de firma :

    • Publique un archivo de actualización firmado en algún lugar (Amazon S3, servidor FTP, etc.)
    • Su producto comprueba periódicamente si se ha modificado el archivo de actualización y, a continuación, descarga/verifica la firma.
    • Contra :Dependiendo de cómo implemente esto, los archivos pueden ser de acceso público (lo que puede hacer que su producto sea más fácil de aplicar ingeniería inversa y piratear)
  • ansible :Ansible es una gran herramienta para administrar las configuraciones del sistema. Está en el reino de marionetas / chef, pero no tiene agente (usa python) y está diseñado para ser idempotente. Si la implementación de su software requiriera un script bash complicado, usaría una herramienta como esta para que sea menos complicado realizar sus actualizaciones.

Por supuesto, hay otras formas de hacer esto... Pero me lleva a un punto importante.

¡Firme/valide sus actualizaciones!

No importa lo que hagas, es imperativo que tiene un mecanismo para asegurarse de que su actualización no haya sido manipulada. Un usuario malintencionado podría hacerse pasar por su servidor de actualización en cualquiera de las configuraciones anteriores. Si no validas tu actualización, tu caja es mucho más fácil de hackear y entrar.

Una buena manera de hacer esto es firmar sus archivos de actualización. Tendrá que mantener un certificado (o pagarle a alguien para que lo haga), pero podrá instalar su huella digital en cada uno de sus dispositivos antes de enviarlos para que puedan rechazar las actualizaciones que hayan sido alteradas.

Seguridad física

Por supuesto, si alguien tiene acceso físico a la implementación del cliente, podría hacerse cargo fácilmente del servidor. ¡Pero al menos no pueden atacar a los otros despliegues! Es probable que la seguridad física sea responsabilidad de su cliente.

Por un momento, imagine lo que sucedería si usara una gran red OpenVPN para las actualizaciones... Entonces podrían usar el servidor comprometido para atacar todas las instancias de la VPN.

Seguridad

Hagas lo que hagas, la seguridad debe estar integrada desde el principio. No tomes atajos aquí:al final te arrepentirás si lo haces.

Asegurar por completo este sistema de actualización está fuera del alcance de esta publicación, y recomiendo encarecidamente contratar a un consultor si usted o alguien de su equipo no tiene conocimientos en esta área. Vale cada centavo.

Solución 2:

¿Realmente necesitas acceder a ellos?

O simplemente actualizarlos? Porque puede hacer que se actualicen solos, de forma similar a cómo se actualiza solo sin supervisión.

Si necesita iniciar sesión

¿Por qué no un demonio OpenSSH escuchando a través del reenvío de puertos? Cada cliente puede tener una clave separada por seguridad y solo se conectaría cuando sea necesario.

De acuerdo con sus clientes

También debe tener en cuenta lo que el cliente está dispuesto a aceptar. Es posible que no se sientan cómodos con ningún acceso remoto a su red, o que solo se sientan cómodos con tecnologías/configuraciones específicas.

Solución 3:

Sugiero una herramienta de orquestación como Puppet o Salt.

Salt es una cola de mensajes y puede realizar una conexión saliente persistente desde su dispositivo a un servidor maestro. Puede usar esto para ejecutar comandos arbitrarios en los dispositivos... como un apt-get .

La otra opción es Puppet, donde aún tiene un servidor maestro y los clientes realizan conexiones salientes desde sus ubicaciones.

Utilizo ambas herramientas para un propósito similar en el que puede que no tenga control administrativo del cortafuegos.


Linux
  1. Cómo actualizar un enlace simbólico de Linux

  2. Programación de actualizaciones en Linux usando yum-cron

  3. Administrar cuentas de grupos locales en Linux

  4. Lanzamiento de la actualización de verano de Kali Linux 1.0.4

  5. Servicio de sistema operativo Linux 'o2cb'

Preparación para aplicar actualizaciones en Red Hat Linux

Introducción a la gestión de contenedores de Linux

Cómo actualizar a Linux Mint 20.2 “Uma”

Cómo actualizar el firmware en Ubuntu y otras distribuciones de Linux

Cómo revertir una actualización de Windows

10 ejemplos de exclusión de Yum para omitir paquetes para la actualización de Yum de Linux (cómo excluir actualizaciones del kernel de Yum)