Posso obter o sshd do OpenSSH para aceitar um login para um usuário inexistente?

4

Estou tentando configurar o sshd para fazer algumas coisas divertidas em um servidor dedicado. (Ou seja, não se preocupe com o motivo de eu estar fazendo uma pergunta tão estranha; estou apenas experimentando para ver como posso abusar do OpenSSH.)

Gostaria de permitir que um usuário faça login no sistema usando um nome inventado. Por exemplo:

$ ssh [email protected]

onde não há nenhum usuário (UNIX) no sistema chamado joeschmoe .

Quando eles se conectam, eu gostaria que eles estivessem logados como um usuário que existe, chamado guest , e ter algo no ambiente definido como joeschmoe , para que eu saiba com quem eles se conectaram.

É possível dissociar as noções de usuário UNIX e usuário ssh?

    
por Peeja 05.09.2012 / 16:09

3 respostas

1

Se você quiser permitir que todos os usuários façam login, ignore a verificação de senha e crie uma conta para eles quando eles tentarem fazer login pela primeira vez:

  1. Instale libpam-script . Por exemplo:

    sudo apt-get install libpam-script

  2. Na seção de autorização de /etc/pam.d/sshd , substitua pam_unix.so por pam_script.so . Algumas distribuições do Linux farão essa mudança automaticamente para você. Por exemplo, no Ubuntu 14.04, pam_script.so será adicionado a /etc/pam.d/common-auth , que está incluído em /etc/pam.d/sshd .

  3. Crie /usr/share/libpam-script/pam_script_auth com o seguinte conteúdo:

    #!/bin/bash adduser $PAM_USER --disabled-password --quiet --gecos "" exit 0

  4. Torne o script executável via:

    chmod +x /usr/share/libpam-script/pam_script_auth

  5. Seja feliz.

por 22.08.2014 / 18:56
1

Eu tenho trabalhado em um caso bem parecido. No meu caso, decidi implementar isso como autenticação baseada em host. Você só tem que entender onde você tem que criar o usuário e o melhor lugar é getpwnam chamada implementada na troca de serviços de nome. Na minha opinião, não é possível implementar a criação do usuário no PAM, acho que o SSH requer detalhes do usuário antes que ele realmente chame os módulos PAM, no entanto, pode depender do tipo de autenticação.

Minha postagem no blog descrevendo como fazer isso com autenticação baseada em host e login no mesmo nome de usuário: link
Projeto Github com a biblioteca de serviços NSS implementando o getpwnam de maneira apropriada: link

Se você quiser registrar cada um como convidado, você pode verificar a outra biblioteca do NSS (ato stands for all to one): link

    
por 29.01.2018 / 23:16
0

Infelizmente, não é possível fazer o que o OP deseja. Eu tenho procurado a mesma coisa recentemente, e o que eu descobri é que o OpenSSH sempre usa o nome de usuário que o usuário digita, ignorando qualquer mudança no nome de usuário que o PAM pode tentar introduzir. Se esse usuário não existir em / etc / passwd, o OpenSSH não permitirá que eles efetuem login, já que ele não pode pesquisar algumas informações importantes (incluindo UID, GID e shell de login).

Referência: link

Uma alternativa é criar o usuário em tempo real durante o estágio de autenticação do PAM, como David descreveu em sua resposta. Eu testei esta solução e achei que fosse viável. Como os UIDs são normalmente de 32 bits, você não ficará sem eles.  No entanto, suponho que o desempenho do sistema pode se tornar mais lento e mais lento à medida que os arquivos / etc / passwd e / etc / shadow ficam mais longos e longos.

    
por 04.08.2017 / 05:23

Tags