Pensamento inicial: Por que você não se atém à autenticação baseada em senha tradicional ou, melhor ainda, a chave pública autenticação como todo mundo? Sua solução é basicamente uma senha ainda mais fácil de adivinhar armazenada em texto simples. Os esquemas de autenticação personalizados raramente aumentam e geralmente diminuem a segurança.
Se você não gosta do PAM, pode configurar o SSH para usar um script de login específico para root
. Pode parecer algo assim:
#!/bin/sh
set -eu
while read -rp 'What is your birthday?!' REPLY
do
case "$REPLY" in
'')
# empty input; ask again
;;
'10.10.10')
# Run original command if available or simply the user's log-in shell
exec ${SSH_ORIGINAL_COMMAND-$SHELL -l};;
*)
break;;
esac
done
echo "You're not welcome here. Go away!" >&2
exit 1
Salve o script, e. g. como /root/login-with-birthday.sh
, torne-o executável e certifique-se de que usuários comuns não possam ler o arquivo porque ele contém um segredo ( chmod 0700
). Em seguida, informe sshd
para usá-lo como o comando de login, adicionando uma regra a /etc/ssh/sshd_config
:
Match user root
ForceCommand /root/login-with-birthday.sh