Veja como lidamos com isso em um trabalho anterior.
Primeiro, tivemos um host de bastião seguro que administra o login para todos os acessos raiz às máquinas de destino. Este host tinha uma conta especial keymaster
configurada que possuía chaves privadas correspondentes à raiz nos hosts de destino. (Também tínhamos um sistema em que novos hosts se registravam automaticamente. Mas isso está fora do escopo aqui.)
Os administradores fazem login nesse host bastion com contas em nível de usuário e, em seguida, conectam-se aos sistemas de destino.
Exceto para poucos de nós com acesso ao root no próprio host do bastião, nenhum administrador pode acessar as chaves diretamente; em vez disso, eles usaram um comando connect
executado sob sudo (como keymaster
, não raiz) para se conectar. Esse comando connect configurou a variável de ambiente REMOTE_ADMIN
para ser o nome do usuário de conexão e conectado como raiz ao sistema de destino.
Então , os sistemas remotos foram configurados para ter AcceptEnv=REMOTE_ADMIN
em sshd_config
e arquivos .bashrc para definir BASH_HISTORY
para ~/.bash_history-$REMOTE_ADMIN
.
Com essa configuração, os diferentes arquivos .bash_history
não são registros seguros, mas são, pelo menos, distintos para fins de visualização não maliciosa do que aconteceu. O registro de segurança está no host bastião, mostrando quem se conectou quando. (Usamos 2FA para o comando sudo connect
também.)
Além disso, além de subverter os hosts, não há necessidade de se preocupar com o acesso root fora do sistema designado (seja malicioso ou apenas por "conveniência"). E, embora as chaves possam ser removidas, não há necessidade de fazê-lo apenas porque o nível de acesso de alguém mudou.
Você pode usar toda ou parte dessa solução; simplesmente ter .bash_history-$SUDO_USER
pode ser suficiente, dependendo do que você realmente está tentando realizar.