Mensagem de erro personalizada para sshd

8

É possível definir uma mensagem de erro personalizada para usuários que não podem acessar um servidor? Na verdade, eu gostaria de exibir esta mensagem apenas se um usuário for rejeitado devido ao filtro IP definido sshd_config. Mas uma mensagem de erro global seria suficiente.

Mikulas Dite
fonte

Respostas:

6

Por "mensagem de erro", acredito que você quer dizer uma seqüência de texto sendo exibida pelo programa cliente. A palavra "mensagem" tem algum contexto no RFC do protocolo de autenticação SSH, que referenciarei mais tarde, mas acho que não é essa a conotação em que você está usando.

Acredito que você esteja pensando no SSH como algo como TELNET, onde 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 transmite mensagens tokenizadas na forma de valores binários entre o cliente e o servidor. Uma dessas mensagens tokenizadas, "SSH_MSG_USERAUTH_BANNER", pode ser usada para instruir o cliente a exibir seqüências de texto arbitrárias (se assim o desejar), mas você teria que modificar seu daemon SSH para enviá-las no momento apropriado. Não acredito que o OpenSSH tenha nenhuma funcionalidade interna para enviar mensagens SSH_MSG_USERAUTH_BANNER durante pontos arbitrários no processo de autenticação.

Gostaria de perguntar por que você deseja fornecer ao invasor remoto informações adicionais sobre o motivo da falha na autenticação. Eles sabem que a falha ocorreu porque o cliente SSH recebe e reage à mensagem tokenizada do daemon SSH sinalizando a falha.

Evan Anderson
fonte
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 faixa no sshd_config. O banner seria exibido a todos os usuários antes do prompt de login e informava 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 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 sequência, mas como um código, para impedir que um invasor colete informações. (Se for uma sequência e personalizável, alguém a definirá como "Falha no login. OpenSSH_3.7_p2 21032004")

Bill Gates
fonte
0

Isso não funcionaria especificamente para o filtro IP sshd_config, mas funcionaria para quaisquer controles de acesso implementados 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.txtecoaria para o padrão antes que a conexão SSH fosse fechada. Se eles passassem na verificação pam_lastlog, a avaliação ignoraria as chamadas pam_echoe pam_denypara continuar avaliando os módulos PAM restantes.

jgibson
fonte