Uso di un comando forzato authorized_keys
con ssh e uno script wrapper come questo:
#!/usr/bin/env bash
case "$SSH_ORIGINAL_COMMAND" in
/var/lib/authorized-scripts/*)
$SSH_ORIGINAL_COMMAND
;;
*)
exit 1
;;
esac
Un utente malintenzionato può in qualche modo incatenare un altro comando dopo /usr/bin/authorized-scripts/
e quindi superare questa misura di sicurezza o è sicuro?
Questo suggerisce che potrei semplicemente usare ssh user@host '/var/lib/authorized-scripts/script.sh && cat /etc/passwd'
, ma questo non ha funzionato nei miei test.
Posso migliorare in qualche modo la sicurezza di questo script pur consentendo più comandi con argomenti forniti dall'utente per una singola chiave SSH?
Sono consapevole che i comandi consentiti dovrebbero naturalmente non consentire alcun tipo di sottotitoli (quindi, find
ad esempio è un nogo ad esempio a causa della sua funzionalità exec
).