Quanto ao forçar um comando, sshd
tem uma opção ForceCommand
:
Forces the execution of the command specified by ForceCommand, ignoring any command supplied by the client and ~/.ssh/rc if present. The command is invoked by using the user's login shell with the -c option.
This applies to shell, command, or subsystem execution. It is most useful inside a Match block. The command originally supplied by the client is available in the SSH_ORIGINAL_COMMAND environment variable.
Então, ao ler isso, se você definir ForceCommand
para script
, isso deve fazer aproximadamente o que você deseja.
Para manter a trilha de auditoria segura, uma solução em um sistema com vários servidores seria aprender com o syslog e enviar as entradas pela rede para um host físico diferente. Isso praticamente evita que os usuários acessem os registros depois de gerados. Na falta de qualquer outra coisa, você provavelmente poderia improvisar algo apenas para enviar os logs para uma porta diferente no host local, onde um daemon os coleta e armazena. (Tendo tentado o óbvio, você não pode script -f /dev/tcp/localhost/8888
, pois /dev/tcp/...
precisaria ser tratado pelo bash, então eu acho que você precisaria de mkfifo
um caminho de comunicação como no exemplo de manual para script -f
)