Como configurar o SUDO sem senha se o usuário estiver logado remotamente de um host específico

2

Eu gostaria de configurar o arquivo sudoers da minha caixa Debian da seguinte forma:

  • Se USERNAME for remoteado do IP a.a.a.a: Nenhuma senha é necessária para usar o sudo
  • Se USERNAME for remotado de qualquer lugar ou local: É necessária uma senha para usar o sudo

Eu sei como fazer para que eles sejam sempre necessários ou nunca necessários, mas não sei como configurar para os vários locais.

    
por mrkmg 20.12.2011 / 22:16

2 respostas

2

Acho que você entendeu mal a finalidade da lista de hosts no arquivo sudoers. Ele existe para que você possa usar o mesmo arquivo em vários hosts, sem permitir os mesmos direitos em todos os hosts.

Em vez disso, você deve usar as chaves ssh para permitir login sem senha como root. Você pode criar duas chaves para o usuário em questão. Torne uma das chaves criptografadas com uma frase secreta e mantenha o outro texto não criptografado. No seu servidor, coloque as chaves públicas no arquivo .ssh / authorized keys do root. Em seguida, anexe o from="a.a.a.a" à linha da chave pública sem senha para impedir que alguém o use de outro host.

Isso requer que você permita o login root em ssh, mas você deve permitir somente o login root com chaves ssh. Certifique-se de que seu sshd_config tenha a seguinte configuração:

PermitRootLogin without-password
    
por 20.12.2011 / 22:35
0

Não tenho certeza se já existe um módulo que fará isso, mas você pode definitivamente fazer isso com o sistema PAM.

Um módulo que confirma que o usuário está logado via ssh & está usando o IP correto pode ser inserido na configuração do sudo com a linha sufficient e ele irá conceder acesso.

Eu daria uma olhada na amostra do link e, possivelmente, de lá ou use pam_rhosts como uma amostra.

requisite authorized_user #sudoers file / existing module?
sufficient via_ssh_from_listed_host
required password #usual sudo thing

Esse é o padrão de módulo desejado.

    
por 20.12.2011 / 23:08