Назад | Перейти на главную страницу

Почему sshd все еще задействует PAM?

Фон / поведение: если вы используете ssh для бокса через и GSSAPI / Kerberos успешно, и у вас есть локальный пользователь в / etc / passwd, вы входите в систему в соответствии с конфигурацией PAM ниже. Все хорошо.

Но если у вас нет локального пользователя в / etc / passwd но вы можете получить билет службы host / XXXXXX (GSSAPI работает), sshd не сможет войти в систему и никогда не получит подсказки для SecurID (наш радиус pam указывает на SecurID). Я это понимаю. Поскольку сервер аутентифицировал пользователя и pam_unix знает пользователь не находится в / etc / passwd, нет необходимости задействовать какие-либо другие методы аутентификации.

Однако у меня вопрос: почему, если я сначала запускаю kdestroy (намеренно сбой GSSAPI) (и все еще не существует в / etc / passwd), я внезапно получаю приглашение Securid (т.е. задействован PAM)?

Запуск sshd с отладкой показывает: отложенное интерактивное взаимодействие с клавиатурой для недопустимого пользователя "user". Во-первых, почему бы просто не потерпеть неудачу? Во-вторых, почему откладывать? pam_radius является «обязательным», а не «обязательным».

Я бы ожидал, что тоже просто потерплю неудачу, потому что, хотя я не прошел аутентификацию, я никогда не смогу пройти мимо pam_unix.

Файлы:

/ и т.д. / SSH / sshd_config

....  
ChallengeResponseAuthentication yes  
GSSAPIAuthentication            yes  
HostbasedAuthentication         no  
KerberosAuthentication          no  
PasswordAuthentication          no  
PubkeyAuthentication            yes  
RhostsRSAAuthentication         no  
RSAAuthentication               yes  
UsePAM                          yes      
....

/etc/pam.d/sshd

auth       requisite        pam_radius_auth.so conf=pam_radius_auth.conf debug retry=3  
auth       required     pam_nologin.so  
auth     required     pam_krb5.so.1  
account  sufficient      pam_radius_auth.so conf=pam_radius_auth.conf  
account    required     pam_stack.so service=system-auth  
password   required     pam_stack.so service=system-auth  
session    required     pam_stack.so service=system-auth  
session    required     pam_limits.so  
session    optional     pam_console.so  

/etc/pam.d/system-auth

auth        required      pam_env.so  
auth        sufficient    pam_krb5.so.1  
auth        sufficient    pam_unix.so  
auth        required      pam_deny.so  
account     required      pam_unix.so  
password    required      pam_cracklib.so retry=3  
password    sufficient    pam_unix.so use_authtok md5 shadow  
password    required      pam_deny.so  
session     required      pam_limits.so  
session     required      pam_unix.so  

Аутентификация GSSAPI не обрабатывается PAM. Модуль PAM для kerberos используется для аутентификации пользователя по паролю, используя протокол kerberos для получения действительного билета.

Есть 3 результата аутентификации GSSAPI.

  1. Ошибка аутентификации, поскольку учетные данные были отправлены, но учетные данные недействительны.
  2. Аутентификация прошла успешно с использованием представленных учетных данных.
  3. Аутентификация игнорируется, поскольку учетные данные не были предоставлены.

Если результат равен 1, запрос отклоняется полностью, поскольку токен был отправлен, но не прошел. SSHD не пытается использовать другие методы аутентификации.

Если результат 3, sshd в следующий раз попытается использовать другие методы аутентификации, включая PAM auth раздел.

Я не знаком с pam_radius но я предполагаю, что он запрашивает токен аутентификации независимо от того, существует ли пользователь по соображениям безопасности. Сбой сразу указывает пользователю / злоумышленнику, что такой пользователь не существуют, поэтому в процессе исключения вы можете перечислить пользователей.

Что касается опции «Requisite», в настройке стека данные «required» и «Requisite» имеют одинаковый эффект. pam_krb в любом случае не может запросить билет без действительного пользователя, поэтому он немедленно завершится неудачей.

Для приведенного конфига pam_unix используется не для аутентификации, а для авторизации, это шаг, который происходит после аутентификации. Чтобы уточнить; аутентификация имеет дело с доказательством того, что вы являетесь тем, кем вы себя называете, в то время как авторизация связана с тем, что у вас есть правильные разрешения для выполнения того, что вы хотите делать (что в данном случае является логином).