Qualquer programa como 'sudo' para ganhar raiz com dois usuários digitarem uma senha?

6

Eu rodei um servidor que é usado por um grupo de pessoas para e-mail, listas de e-mail, residências particulares, etc.

Pensei em maneiras de fornecer acesso root a outros membros para permitir que eles lidassem com problemas no servidor. Mas eu não gosto de dar privilégios totais a todos.

E sobre a ideia de que dois usuários devem inserir a senha em sudo style para abrir um shell de root? Isso impediria que um único usuário sequestrasse o servidor inteiro. Para aumentar a segurança, qualquer número de senhas de usuário necessárias acima de 1 poderia ser usado. Como eu vejo agora, esta pode ser uma boa maneira de fornecer acesso root dentro de um grupo de pessoas que se conhecem muito bem e vivem nas proximidades.

  • Você conhece esse programa?
  • o que você acha do conceito em geral?
por Daniel Böhmer 24.06.2011 / 15:47

7 respostas

6

A exigência de aprovação dupla para determinadas ações é parte de algumas políticas de segurança; por exemplo:

  • No setor bancário, transações muito grandes normalmente exigem validação por dois gerentes.
  • O lançamento de armas pesadas como armas nucleares requer validações de dois ou mais oficiais de alta patente ou tomadores de decisão.
  • Aprovar ou rejeitar um edição sugerida em O estouro de pilha exige que dois usuários tenham reputação suficiente para concordar.

Você notará que não se trata de autenticação (por exemplo, digitar uma senha para mostrar que você é quem você fingir ser), mas sobre a autorização , ou seja, decidir se uma determinada ação é permitida.

Para leitura em segundo plano, eu recomendo Engenharia de Segurança por Ross Anderson . Compre a edição mais recente, se puder, mas, caso contrário, a primeira edição estará disponível on-line. O capítulo mais relevante é o “Controle de Acesso”; há exemplos nos capítulos sobre o comando bancário e nuclear.

O Unix oferece um modelo de segurança simples, com apenas dois níveis: usuário e superusuário. Isso é tanto uma força (simples significa menos espaço para erros no projeto e na implementação do sistema em si e das políticas de segurança) quanto uma fraqueza (políticas de segurança complexas não podem ser expressas nativamente). Se você está preocupado com um invasor que está ganhando root, não dê a ele permissões de root. Existem muito poucas verificações sobre o que a raiz faz; a única restrição seria que a ação de obter raiz pudesse ser registrada remotamente, assim como certas ações externas (tráfego de rede). Um usuário desonesto pode fingir que quer ganhar raiz para fazer uma certa coisa e fazer outra enquanto esconde suas ações do outro usuário. Assim, você não obteria muita segurança exigindo que o acesso root seja examinado por outro usuário. Por outro lado, você perderia a segurança reduzindo a disponibilidade do acesso root (percebo que você quer dar aos usuários menos confiáveis acesso à raiz servir de back-ups se algo der errado; aprovação dupla aumentaria muito a carga).

A aprovação dupla é útil para ações específicas: Alice diz "por favor autorize-me fazer X", Bob diz "eu autorizo Alice a fazer X" e o sistema executa X (X pode ser por exemplo transferir US $ 1.000.000.000 de uma conta bancária para outro, ou nuking Moscou, ou rejeitar uma edição). Se Alice disser "por favor autorize-me a fazer o que eu quiser" e Bob concorda, tudo o que Bob está fazendo é ecoar o que você (o formulador de políticas) já disse, a saber, que Alice pode ser autorizada a fazer qualquer coisa. Você também pode fazer de Alice um sudoer.

Não conheço nenhum sistema existente no unix para que vários usuários aprovem comandos específicos em uma estrutura semelhante ao sudo.

    
por 25.06.2011 / 00:46
2

Isso pode ser o que você está procurando: link

sudo_pair is a plugin for sudo that requires another human to approve and monitor privileged sudo sessions.

    
por 07.06.2018 / 22:13
1

Eu não sei de nenhum programa desse tipo.

Acho que, em geral, é falho e não oferece mais segurança do que permitir que um único usuário tenha acesso confiável a comandos limitados.

Pessoalmente, eu não daria a ninguém que eu não conheça pessoalmente o acesso ao sudo, nem mesmo a um subconjunto de comandos, porque é muito fácil perder algo e dar a eles o acesso que você não prevê.

Confie neles ou não confie neles, construir camadas de não confiar nelas não ajuda.

    
por 24.06.2011 / 16:01
1

A única maneira que posso pensar em fazer isso seria criar uma conta em /etc/passwd (e /etc/shadow ) com uid 0 (para acesso total) ou que pertence ao (s) grupo (s) que fornecem acesso.

Em seguida, defina a senha, informando a primeira pessoa os cinco primeiros caracteres e a segunda pessoa os outros cinco caracteres. Como as senhas não têm mais um limite de oito caracteres (como nos velhos tempos), você pode fazer isso para quantas pessoas quiser (por exemplo, uma charada de 20 caracteres com quatro caracteres sendo atribuída a cada uma das cinco pessoas).

É claro que, uma vez na conta, eles poderiam apenas redefinir a senha para algo que qualquer um deles pudesse usar (no caso de uid = 0). Então, se você realmente tem problemas de confiança como esse, então você tem problemas maiores do que isso.

    
por 24.06.2011 / 16:41
1

Apenas um pequeno comentário sobre as questões matemáticas aqui. Um problema em dividir a senha é que ter metade da senha facilita a quebra do restante. No entanto, existem maneiras de especificar duas informações que combinam para fornecer uma chave de forma que uma única informação por si só não dê nenhuma ajuda.

Um exemplo bastante simples disso é dizer: "A chave é a soma dos dois números, módulo 10". Então cada pessoa recebe um número entre 0 e 9, mas esse número por si só não lhes dá informação. Se Alice tem 3, então a chave ainda pode ser absolutamente qualquer coisa entre 0 e 9, então ela ainda não tem vantagem em decifrar o código. É só quando Bob aparece e tem 9 que juntos eles podem acessar o sistema com a chave 2.

É claro que, em uma situação prática, você gostaria de ter uma maneira de garantir que Alice e Bob pudessem inserir suas chaves sem que o outro as visse.

Para esta situação, eu concordaria com os outros. Acesso restrito via sudo (leia o manual) junto com um bom registro. Então, se eles tentarem fazer algo ruim, você terá os logs (que eles não acessaram , porque você só deu acesso restrito a eles!).

    
por 24.06.2011 / 18:46
1

Você pode ter um processo executado em segundo plano como root, que verifica determinadas condições que os dois usuários devem preencher e, em seguida, copia em / etc / sudoers e o remove novamente após alguns minutos. Ambos os usuários poderiam ter que tocar um arquivo com a data de hoje como o nome do arquivo em seu diretório inicial, por exemplo. O processo em segundo plano pode remover esse arquivo ou desconsiderá-lo depois de ser usado uma vez.

Eu também acho que o PAM tem suporte para tipos exóticos de autenticação (como impressões digitais e cartões), então vale a pena investigar o PAM.

    
por 24.06.2011 / 19:28
0

Provavelmente é fácil implementar isso criando um superusuário por que uma senha longa, a primeira metade do primeiro usuário autorizado, o segundo de outro (algo como paul_john onde paul e john são usuários comuns).

A desvantagem é que você precisaria de uma conta desse tipo para cada par de usuários, mas isso não exigiria nenhuma alteração no software. Essas contas podem ser listadas em / etc / sudoers, autorizando-as para as ações necessárias.

Certifique-se de que a política da conta deve ser imediatamente desconectada se um dos usuários autorizados se afastar do terminal.

    
por 01.03.2014 / 06:46