Fui voluntário pelo meu chefe para ser o administrador de sistemas do nosso servidor redhat de produção. Ele me pediu para reforçar a segurança para evitar acidentes como rm -f *
esse ocorridos há pouco tempo.
No momento, temos 53 usuários fazendo o mesmo na máquina e isso é um pesadelo de auditoria. Gostaria de saber se é possível permitir o acesso do usuário apenas em dias específicos da semana.
Por exemplo, posso ter o usuário 'Joe' autorizado a fazer login apenas às terças e quintas-feiras e 'Jane' apenas aos domingos? Pode etc/sudoers
ser personalizado para permitir isso?
Existe uma maneira melhor em vez de usar sudoers?
permissions
security
sudo
Chris
fonte
fonte
rm -rf /
.Respostas:
sudo
faz sua autenticação através do PAM, como praticamente tudo o resto em uma caixa Linux.Portanto, você deve poder
pam_time.so
fazer isso.Por padrão no Debian, pelo menos, esse módulo não está ativado. Você precisa adicionar uma linha parecida com esta:
para
/etc/pam.d/sudo
habilitar apenas o sudo ou/etc/pam.d/common-account
(após o bloco pam-auth-update) ativar para todos os programas no sistema.Em seguida, edite
/etc/security/time.conf
para definir suas restrições. O nome do serviço deve sersudo
. Por exemplo, para permitir que Fred usesudo
apenas entre as 15h e as 17h na sexta-feira:(NOTA: Eu não testei isso.)
edit: Para ser claro, concordo com a outra resposta e os vários comentadores, você parece ter muitas pessoas executando muitos comandos como root e realmente precisa consertar isso. E, claro, se eles podem se tornar root, eles podem editar a configuração do pam ...
fonte
Eu questionaria por que 53 usuários precisam do sudo para realizar seu trabalho do dia a dia - para a maioria dos usuários (até desenvolvedores), o sudo deve ser uma exceção rara, não uma coisa tão rotineira que alguém execute um
sudo rm -rf *
comando casualmente .Você pode usar permissões de grupo (ou ACLs ainda mais avançadas) para dar às pessoas acesso aos arquivos necessários para realizar seu trabalho, talvez com alguns scripts ou binários configurados ou sudo'ed para permitir que eles façam coisas como reiniciar serviços? (observe que é difícil escrever um script setuid / sudo seguro, por isso é mais importante manter as pessoas honestas honestas).
Mesmo que você possa restringir as pessoas a um dia por semana de acesso ao sudo, ainda há 53 pessoas com acesso ao sudo em uma semana, portanto, isso realmente não ajuda no seu problema principal.
Nesse caso, eu questionaria se muitos usuários precisam acessar um servidor de produção - você pode enviar logs ou quaisquer dados / arquivos necessários para uma máquina que não seja de produção?
fonte
vi/cp/mv/rm
. Somentecd
emore
. Nada mais.A maneira mais simples seria usar suders.d (via inludedir) para sua configuração. Você pode então ter tarefas cron que podem colocar as regras para cada usuário nesse diretório pelos horários desejados.
A diretiva #includedir pode ser usada em / etc / sudoers para criar um diretório sudo.d no qual você pode soltar as regras do sudoers como parte de suas regras. Por exemplo:
#includedir /etc/sudoers.d
O sudo lerá cada arquivo em /etc/sudoers.d, ignorando os nomes de arquivos que terminam em '~' ou contêm um '.' para evitar causar problemas com arquivos temporários / de backup ou gerenciadores de pacotes. Os arquivos são analisados em ordem lexical classificada. Ou seja, /etc/sudoers.d/01_first será analisado antes do /etc/sudoers.d/10_second. Esteja ciente de que, como a classificação é lexical, não numérica, o /etc/sudoers.d/1_whoops seria carregado após o /etc/sudoers.d/10_second. O uso de um número consistente de zeros à esquerda nos nomes dos arquivos pode ser usado para evitar esses problemas.
Observe que, diferentemente dos arquivos incluídos por meio de #include, o visudo não os editará em um diretório #includedir, a menos que um deles contenha um erro de sintaxe. Ainda é possível executar o visudo com o sinalizador -f para editar os arquivos diretamente.
O /etc/sudoers.d/joe estaria presente quando você quiser que joe tenha acesso e você pode simplesmente remover o arquivo para tirar o acesso.
fonte
Você pode adicionar um crontab para colocar usuários em um grupo sudo e, em seguida, um segundo crontab para remover esse usuário.
fonte