Mensagem de erro personalizada para o sshd

8

É possível definir uma mensagem de erro personalizada para usuários com acesso negado a um servidor? Na verdade, gostaria de exibir apenas essa mensagem se um usuário tiver sido rejeitado devido ao filtro IP definido em sshd_config . Mas uma mensagem de erro global seria suficiente.

    
por Mikulas Dite 01.07.2011 / 23:37

3 respostas

6

Por "mensagem de erro", acredito que você queira dizer que uma string de texto está sendo exibida pelo programa cliente. A palavra "mensagem" tem algum contexto na RFC do protocolo de autenticação SSH que eu irei referenciar mais tarde, mas eu não acho que essa seja a conotação na qual você está usando.

Eu acredito que você esteja pensando em SSH para ser algo como TELNET, onde as seqüências de texto arbitrárias enviadas pelo daemon do servidor serão exibidas pelo cliente. O SSH usa um protocolo de autenticação que passa mensagens tokenizadas na forma de valores binários para frente e para trás entre o cliente e o servidor. Uma dessas mensagens simbólicas, "SSH_MSG_USERAUTH_BANNER", pode ser usada para instruir o cliente a exibir cadeias de texto arbitrárias (se assim o desejar), mas você teria que modificar seu daemon SSH para enviá-las no momento apropriado. Eu não acredito que o OpenSSH tenha alguma funcionalidade embutida para enviar mensagens SSH_MSG_USERAUTH_BANNER durante pontos arbitrários no processo de autenticação.

Eu questionaria por que você gostaria de fornecer a um invasor remoto qualquer informação adicional sobre o motivo da falha na autenticação. Eles sabem que ele falhou porque o cliente SSH recebe e reage à mensagem tokenizada do daemon SSH sinalizando a falha.

    
por 02.07.2011 / 00:33
1

EDIT: Evan Anderson digita mais rápido do que eu e parece confirmar que a mensagem não é personalizável no tamanho do servidor.

Você pode especificar um arquivo de banner no sshd_config. O banner será exibido para todos os usuários antes do prompt de login e declarará que apenas logins de determinados domínios e endereços são permitidos.

O SSH pode passar o login para o comando unix / bin / login. Dependendo do seu sistema operacional, você pode ter uma opção para personalizar os prompts e erros?

Qualquer outra coisa em que eu possa pensar provavelmente significaria editar código e recompilar. E é possível que a mensagem de falha não seja enviada do servidor para o cliente como uma string, mas como um código, para evitar que um invasor colete informações. (Se é uma string, e personalizável, alguém irá configurá-lo para "Login Failed. OpenSSH_3.7_p2 21032004")

    
por 02.07.2011 / 00:51
0

Isso não funcionaria especificamente para o filtro de IP em sshd_config , mas funcionaria para qualquer controle de acesso implementado pelo PAM usando pam_echo.so .

Por exemplo:

account [success=2 default=ignore] pam_lastlog.so inactive=30
account optional pam_echo.so file=/path/to/lastlog_error_message.txt
account requisite pam_deny.so
account ...

Nesse cenário, se um usuário autenticado não tivesse efetuado login nos últimos trinta dias, o conteúdo de /path/to/lastlog_error_message.txt seria ecoado para o padrão antes de a conexão SSH ser fechada. Se eles passassem a verificação de pam_lastlog , a avaliação ignoraria as invocações pam_echo e pam_deny para continuar avaliando os módulos PAM restantes.

    
por 19.09.2017 / 18:59

Tags