Utilizando un comando authorized_keys
force con ssh y un script de envoltura como este:
#!/usr/bin/env bash
case "$SSH_ORIGINAL_COMMAND" in
/var/lib/authorized-scripts/*)
$SSH_ORIGINAL_COMMAND
;;
*)
exit 1
;;
esac
¿Un usuario malintencionado puede encadenar de alguna manera otro comando después de /usr/bin/authorized-scripts/
y, por lo tanto, superar esta medida de seguridad o es seguro?
Esto sugiere que simplemente podría usar ssh user@host '/var/lib/authorized-scripts/script.sh && cat /etc/passwd'
, pero esto no funcionó en mis pruebas.
¿Puedo mejorar la seguridad de este script de alguna manera y al mismo tiempo permitir múltiples comandos con argumentos proporcionados por el usuario para una sola clave ssh?
Soy consciente de que los propios comandos permitidos, por supuesto, no deberían permitir ningún tipo de subshells (por lo tanto, find
por ejemplo es un nogo, por ejemplo, debido a su funcionalidad exec
).