Выполните сценарии перед входом в систему для SSH

Я хотел бы знать, как я могу выполнить сценарий локального сервера, например, отправьте почту с помощью mailx, когда ssh сессия открыта, этап перед входом в систему.

Когда соединение SSH входит в сервер, я хотел бы к действию предварительный вход в систему сценария.

пример...

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

Я попытался искать это, но я только, кажется, получаю сценарии, которые выполняются после входа в систему, как через .bashrc

Я знаю, что открываю меня некоторая лавинная рассылка, однако я хотел бы узнать о процессе перед входом в систему. Сервер находится в управляемой среде, и не выставлен www.

4
задан 25 August 2015 в 08:35

1 ответ

Можно использовать PAM для этого. Конфигурация PAM для сервиса SSH находится в /etc/pam.d/sshd. Для выполнения команды перед чем-либо в процессе входа в систему добавьте что-то как:

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

Например, если я использую /usr/local/bin/foo.sh содержа:

#! /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

И затем я делаю ssh muru@localhost, Я добираюсь:

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

Этого не происходит, прежде чем подсказка пароля обнаруживается, но auth модули являются первыми, бежит за паролем, вводится - они проверяют, аутентифицируется ли пользователь, в конце концов:

   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.

Так, в действительности, auth модули, выполненные перед входом в систему, и если первое auth модуль pam_exec, это - в значительной степени первая вещь работать.

Отметьте [default=ignore] часть - с тех пор auth модули аутентифицируют пользователя, мы не хотим, чтобы статус выхода сценария означал что-либо. default=ignore говорит PAM игнорировать pam_execвозвращаемое значение, независимо от того, что это может быть, который в свою очередь зависит от статуса выхода сценария. Посмотрите man pam.d для получения дополнительной информации.

Протесты:

  • Это не работает, если пользователь просто вышел прежде, чем ввести какой-либо пароль.
  • Это не работает, если пользователь обеспечил пустой пароль (конфигурация SSH по умолчанию имеет PermitEmptyPasswords no, таким образом, SSH отклоняет тех, которые из руки).
  • SSH должен иметь UsePAM yes чтобы это использовало PAM.
5
ответ дан 1 December 2019 в 09:35

Другие вопросы по тегам:

Похожие вопросы: