Sí, este es uno de los problemas con las claves SSH sin contraseña. Si almacena una clave privada en el servidor A que le permite conectarse al servidor B, obtener acceso al servidor A está efectivamente obteniendo acceso al servidor B. (No es lo contrario, no es cierto: obtener acceso al servidor B no daría como resultado un compromiso inmediato del servidor A, suponiendo que no haya configurado las claves SSH para permitir inicios de sesión sin contraseña en esa dirección.
Hay algunas cosas que puede hacer para mitigar esto:
- Si el proceso no necesita ser completamente automatizado, agregue una contraseña a sus claves SSH. (Esto probablemente no funcionará para usted, ya que nota que es para una copia de seguridad)
- Para inicios de sesión sin contraseña bajo su propia cuenta en varias máquinas, le recomiendo crear una clave con contraseña para cada máquina que escriba físicamente, y use un agente SSH para almacenar la clave en la memoria mientras la usa. El reenvío de agentes debería permitirle "saltar" de host a host sin crear claves en cada host remoto.
- Para las claves SSH automáticas y sin contraseña, recomiendo restringir los comandos que la clave puede ejecutar. En su
authorized_keys
archivo, prefije cada una de sus claves con:
command="<allowed command line here>",no-port-forwarding,no-X11-forwarding,no-agent-forwarding,no-pty
Hace 8-9 años trabajé en un entorno de usuario compartido con cientos de usuarios locales, y los inicios de sesión basados en claves SSH se deshabilitaron porque no había forma de aplicar políticas de contraseña en las claves. Mientras controle el escenario por completo, hoy en día las claves SSH son definitivamente mejores que solo usar contraseñas.
En cualquier entorno sobre el que he tenido control, siempre he sido muy exigente con el mínimo privilegio posible para las cuentas de servicio.
En este caso, sugeriría asegurarse de que la cuenta de usuario en el servidor remoto solo pueda ejecutar un conjunto pequeño y bien definido de ejecutables. Puede usar varias cuentas en el lado remoto y sudo para lograr esto.
Incluso en este caso, aún está sujeto a los errores de escalada de privilegios locales, así que sea meticuloso y realice un seguimiento estricto de los errores de seguridad.
fuente