Execute scripts pré-login para o SSH

3

Gostaria de saber como posso executar um script de servidor local, por exemplo, enviar um email usando mailx, quando uma sessão ssh é aberta, estágio de pré-login.

Quando uma conexão ssh entra no servidor, eu gostaria de executar um pré-login do script.

exemplo ...

Client_SSH >> **{server_script_exec}** >> login_prompt  >> Server       [login failed]

Eu tentei pesquisar por isso, mas parece que só consigo scripts que são executados após o login, como .bashrc

Eu sei que estou me preparando para algumas inundações, no entanto, gostaria de aprender sobre o processo de pré-login. O servidor está em um ambiente controlado e não está exposto ao www.

    
por Dusty Boshoff 25.08.2015 / 07:35

1 resposta

2

Você pode usar o PAM para isso. A configuração do PAM para o serviço SSH está em /etc/pam.d/sshd . Para executar um comando antes de qualquer coisa no processo de login, adicione algo como:

auth [default=ignore] pam_exec.so /path/to/some/script

Por exemplo, se eu usar /usr/local/bin/foo.sh contendo:

#! /bin/sh

cat <<EOF >>/tmp/log
PAM_RHOST $PAM_RHOST  
PAM_RUSER $PAM_RUSER  
PAM_SERVICE $PAM_SERVICE  
PAM_TTY $PAM_TTY  
PAM_USER $PAM_USER  
PAM_TYPE $PAM_TYPE  
EOF

E então eu faço ssh muru@localhost , eu recebo:

$ cat /tmp/log
PAM_RHOST localhost
PAM_RUSER
PAM_SERVICE sshd
PAM_TTY ssh
PAM_USER muru
PAM_TYPE auth

Isso não acontece antes que o prompt de senha seja exibido, mas auth modules são os primeiros executados depois que a senha é digitada - eles verificam se o usuário está autenticado, afinal de contas:

   authentication - authenticate a user and set up user credentials.
   Typically this is via some challenge-response request that the user
   must satisfy: if you are who you claim to be please enter your
   password. Not all authentications are of this type, there exist
   hardware based authentication schemes (such as the use of smart-cards
   and biometric devices), with suitable modules, these may be substituted
   seamlessly for more standard approaches to authentication - such is the
   flexibility of Linux-PAM.

Portanto, com efeito, auth modules são executados antes do login e se o primeiro auth module for pam_exec , essa é praticamente a primeira coisa a ser executada.

Observe a [default=ignore] parte - como os módulos auth autenticam o usuário, não queremos que o status de saída do script signifique algo. default=ignore diz ao PAM para ignorar o valor de retorno de pam_exec , qualquer que seja, o que, por sua vez, depende do status de saída do script. Veja man pam.d para mais detalhes.

Advertências:

  • Isso não é executado se o usuário simplesmente sair antes de digitar qualquer senha.
  • Isso não é executado se o usuário tiver uma senha vazia (a configuração SSH padrão tem PermitEmptyPasswords no , portanto, o SSH rejeita essas informações).
  • O SSH precisa ter UsePAM yes para usar o PAM.
por muru 23.01.2016 / 22:52