Вопрос или проблема
Просто прочитал этот ответ
Запуск сценария каждый раз, когда любой пользователь входит в систему.
Здесь Debian stable.
Мой SSH сервер использует подключение по публичному ключу, а не по паролю.
Тем не менее, я хотел бы запускать скрипт на сервере, когда пользователь подключается, до того, как он получит доступ к машине. Если скрипт возвращает false, пользователю отказывается в доступе, даже если у него есть соответствующий ключ для подключения.
Я понимаю, что /etc/profile может подойти, но есть ли более подходящий способ на момент написания этого вопроса, который может справиться с этой ситуацией? (или более безопасный, или проще? Я не вижу проблем с /etc/profile, но, возможно, кто-то, более опытный в этой области, знает лучше)
Я не хочу, чтобы существовала возможность обойти этот контроль.
Спасибо, ребята
Используйте модуль pam_script в файле /etc/pam.d/sshd
со скриптом onauth
.
auth required pam-script.so onauth=/path/to/script
Ответ или решение
Вопрос, который мы рассматриваем, касается запуска скрипта при каждом подключении пользователя через SSH на сервере Debian. В условии задано, что используется авторизация по публичным ключам и скрипт должен запускаться до того, как пользователь получит доступ к системе. В случае, если скрипт возвращает ошибку, доступ должен быть заблокирован, даже если у пользователя есть правильный ключ. Рассмотрим возможные решения этой задачи.
Теория
SSH (Secure Shell) — это протокол для удаленного управления и передачи файлов, который обеспечивает безопасное подключение к серверу. При подключении пользователей по SSH они могут получить доступ ко всем ресурсам системы, которые им разрешены. В некоторых случаях может быть необходимо выполнять дополнительные проверки или действия перед тем, как пользователь получит доступ к системе.
Один из путей реализации — это использование PAM (Pluggable Authentication Modules), который представляет собой механизм для добавления различных методов аутентификации в систему. PAM позволяет подключать разнообразные сценарии для обработки аутентификации, авторизации и учёта.
Пример
Литературные источники могут предположить использование специфических модулей PAM для достижения указанной цели. Примером может служить pam_script, который позволяет запускать скрипты на различных этапах процесса аутентификации. В данном случае мы можем использовать его, чтобы выполнять скрипт непосредственно перед завершением аутентификации при когнитивной загрузке через SSH.
Добавление строки в файл /etc/pam.d/sshd
может выглядеть следующим образом:
auth required pam-script.so onauth=/path/to/script
Здесь onauth
указывает на скрипт, который будет выполняться при аутентификации. Если скрипт возвращает ненулевое значение, подключение будет прервано.
Применение
Для начала необходимо убедиться, что pam_script установлен в вашей системе. Это можно проверить и установить с помощью менеджера пакетов APT:
sudo apt-get update
sudo apt-get install libpam-script
Далее необходимо создать скрипт, который будет исполнять желаемые действия. Например, он может проверять определенные условия, такие как допустимые IP-адреса или время подключения. Поместите этот скрипт в защищенное место на сервере и убедитесь, что он имеет нужные права исполнения:
#!/bin/bash
# Ваш скрипт на проверку условий
exit 0 # если проверка успешна, верните 0, иначе любое ненулевое число
Проверьте скрипт на правильность работы и действительность хода выполнения до его интеграции в систему аутентификации.
Не забудьте сделать резервную копию текущих PAM конфигураций и обдумайте, что произойдет, если ваш скрипт будет ошибочно блокировать все подключения (в этом случае доступ к системе через консоль или другой механизм может оказаться необходимым для устранения неполадок).
Также следует учитывать, что любые изменения в механизмах аутентификации должны быть хорошо протестированы в тестовой среде перед внедрением в рабочую инфраструктуру, чтобы предотвратить непредвиденные сбои в работе вашей ИТ-системы.
Таким образом, использование pam_script для выполнения сценария на этапе аутентификации предоставляет гибкое средство контроля доступа пользователей через SSH в Debian, при соблюдении всех вышеуказанных рекомендаций гарантируя безопасность и беспрепятственную работу.