SSH: desabilite o login de senha para root, mas deixando o prompt

1

Eu gostaria de desativar o login de senha para um usuário. Mas, em vez da mensagem de erro (chave pública), eu não gostaria que o usuário notasse que o login da senha estava desabilitado e solicitando a senha.

Até agora, sei que posso desativar o login de senha para todos os usuários, exceto um com

PasswordAuthentication no
Match User toto
PasswordAuthentication yes

Mas tentar logar como 'not_toto' resultará em uma mensagem de erro do servidor, o que eu não desejo.

Preciso modificar fontes openssh para fazer isso? Ou existe uma opção de configuração que pode fazer o trabalho?

Editar:

Ter dois servidores ssh em execução é uma opção, então matar conexões com iptables ou através de outro método (fora da configuração do ssh) poderia fazê-lo.

Editar 2:

Eu quero fazer isso, já que preciso de duas instâncias ssh, uma na porta oficial para entrar e a outra é um honeypot. Então os bots vão dar sua senha mas nunca deixar eles entrarem (nb: esse é um projeto pessoal eu sou o único usando o servidor e não registrando senhas de colegas nem outras coisas desagradáveis, eu só quero fazer algumas estatísticas em bots)

O servidor do 'honeypot' estará escutando a porta 22 e o servidor 'oficial' para outra, por exemplo, 344.

O primeiro servidor ssh (digamos oficial) é OpenSSH_7.4p1 Debian-10+deb9u1, OpenSSL 1.0.2l 25 May 2017 , instalado com pacotes Debian.

O 'honeypot' é uma versão modificada de Openssh-7.4p1 que registra o nome de usuário e as senhas das tentativas de login. Na verdade, o PAM deve estar habilitado neste, mas vou checar isso. Talvez a sua opção symcbean seja a correta.

    
por LotoLo 25.08.2017 / 10:26

2 respostas

2

Não é exatamente claro o que você está perguntando aqui. Quer dizer que você ainda quer permitir o login do par de chaves para este usuário? Você disse "say root" - mas é o usuário root? O usuário root é sempre um caso especial.

A outra questão gritante é por quê? Se houver alguém que você não queira permitir em seu sistema, a última coisa que você deve fazer é fornecer uma API para que ele ataque.

Lendo nas entrelinhas, parece que você está usando o Opensshd no Linux (seria útil indicar explicitamente quais versões do aplicativo e do sistema operacional você está usando).

Deixando isso de lado ...

O nome de usuário enviado ao servidor pelo cliente é enviado após a criptografia ter sido negociada. Então você não pode simplesmente fazer proxy e redirecionar a conexão.

O que você pode fazer é dizer ao sshd para usar o PAM e configurar uma política apropriada para negar o acesso, independentemente da senha fornecida, a usuários específicos. Embora existam muitas maneiras de fazer isso, usar pam_listfiles significa que você pode mover um monte de configuração para fora da própria pilha de pam (há uma boa chance de você se desligar do servidor, reduzindo a quantidade de ajustes com a configuração do pam mitiga isso).

    
por 25.08.2017 / 12:07
0

Algo que você pode tentar é desabilitar o login de senha para a conta - ou seja, não apenas SSH, mas também impediria que alguém fizesse login como uma conta de usuário no console normal ou com um gerenciador gráfico de janelas em. Para um servidor honeypot que não tenha outro propósito senão coletar tentativas de login do SSH, isso deve ser bom.

No Linux, você pode desativar a senha de uma conta com

# usermod --lock <username>

ou

# passwd --lock <username>

Você ainda poderá fazer login nessa conta com uma chave SSH, se tiver configurado a pubkey, e ainda poderá usar sudo para executar comandos nessa conta, se tiver configurado adequadamente.

Naturalmente, se você for fazer isso na conta raiz, provavelmente deverá configurar sudo primeiro para poder reverter o processo, se necessário. Uma senha bloqueada pode ser desbloqueada usando usermod --unlock ou passwd --unlock (ou em um pitada, editando diretamente /etc/shadow ). Se você não fizer isso, poderá perder o acesso à conta root completamente.

    
por 27.09.2017 / 08:10

Tags