Mas há uma solução na qual você pode estar mais interessado - registro de terminal.

Mas há uma solução na qual você pode estar mais interessado - registro de terminal.

Eu edito minha pergunta para dar o objetivo e não uma suposição da solução.

  • Distribuições baseadas em RHEL
  • O usuário root nunca é usado e sua senha é mantida em segredo

Todos os comandos executados sudoestão registrados em /var/log/secure. Quando um usuário muda para root usando sudo su/sudo -i, todos os comandos executados na sessão não são registrados.

Meu objetivo é ficar de olho no que os administradores estão fazendo.


Exemplo

Se um usuário fizer:

alexis$ sudo visudo   # this is logged
alexis$ sudo su       # this is logged
root# visudo          # this isn't logged since it's run under root

O comando visudoe então sué registrado como iniciado pelo usuário, alexismas executado com root. No entanto, todos os comandos a seguir não serão registrados porque são executados como root em um shell root.

1º de novembro 13:28:29 3020m sudo[6906]: Alexis: TTY=pts/0 ; PCD=/home/alexis ; USUÁRIO=raiz;COMANDO=/bin/su


Em resumo,Não quero que um usuário (admin in wheel) possa mudar para um shell root. Se alguém quiser rodar um shell root, ele/ela precisa saber a senha do root.

Responder1

Não é possível - leia até o final. Se o usuário tiver acesso total ao sudo, ele sempre poderá usar sudo -i -u root, sudo /usr/bin/bashou sudo /usr/bin/{ANY_OTHER_SHELL}escrever seu próprio script/programa que usará alguns comandos para obter acesso total ao shell. É trivial. Eles também podem reverter quaisquer alterações de configuração feitas, etc. Você pode obscurecer um pouco alterando o shell raiz padrão para /sbin/nologin.

[vagrant@eurolinux8-vbuilder ~]$ sudo chsh root -s  /sbin/nologin 
Changing shell for root.
chsh: Warning: "/sbin/nologin" is not listed in /etc/shells.
Shell changed.
[vagrant@eurolinux8-vbuilder ~]$ sudo -i
This account is currently not available.

Mas qualquer usuário avançado pode usar a invocação do bash "nua" com o sudo:

[vagrant@eurolinux8-vbuilder ~]$ sudo /usr/bin/bash
[root@eurolinux8-vbuilder vagrant]# 

Portanto, ocultar o acesso /usr/sbin/nologinnão é muito potente.

Você também pode adicionar algum script ao bash ou qualquer outra configuração de shell para verificar se o usuário rootimprimirá mensagens como Please use sudoe sairá. Mas, mais uma vez, usuários avançados poderão usar coisas como --norce --noprofile/ou apontar suas próprias configurações para o bash. Resumindo - de acordo com meu melhor conhecimento, não é possível. Eu até verifico se há alguns casos excepcionais [por exemplo, com PAM] ao usar um usuário que normalmente é apenas daemon (como httpd). Mas com httpdinstalado você também pode usar o sudo -u apache /usr/bin/bash. Talvez exista alguma solução baseada em PAM, mas com o google-fu não consegui encontrá-la. Também é difícil porque você está interessado em desabilitar o acesso interativo. Em outro caso (desativando totalmente o acesso ao root), você bloqueará o sistema e terá que consertá-lo no modo de recuperação.

Mas há uma solução na qual você pode estar mais interessado - registro de terminal.

Você deseja conhecer o histórico do terminal, não limitar totalmente o acesso. Enquanto isso, você deve saber que usuários com acesso total de administrador podem remover seus logs - portanto, por precaução, você deve usar o rsyslog ou outra solução de log para colocar logs em um servidor diferente.

Como você está usando uma distribuição baseada em RHEL - você pode ler o seguinte. https://www.redhat.com/sysadmin/terminal-logging

Responder2

Reverta as alterações para PAM. Você não precisa deles.

Em vez disso, use visudopara editar o arquivo /etc/sudoerse comentar as linhas que começam com %wheele/ou %sudo. Isso impedirá que usuários que estejam nesses grupos usem sudo.

Você deve adicionar uma linha para si mesmo antes de escrever as alterações. Caso contrário, certifique-se de ter uma senha de root funcional (para susem sudo) ou algum outro meio de uso sudopara obter privilégios de root!

informação relacionada