Сеанс NSS + Pam + Tacacs + firs завершается неудачно - PullRequest
0 голосов
/ 17 декабря 2018


У меня есть устройство, которое я хочу авторизовать для использования сервера TACACS +.
У меня есть версия TACACS: версия tac_plus F4.0.4.26
У меня есть сервер tacacs со следующей конфигурацией

accounting file = /var/log/tac_plus.acct
key = testing123
default authentication = file /etc/passwd

user = sf {
default service = permit
login = cleartext 1234
}

user = DEFAULT {
#       login = PAM
        service = ppp protocol = ip {}
}

на устройстве у меня есть NSS с конфигурацией:

/ etc / nsswitch.conf

passwd:     files  rf
group:      files
shadow:     files
hosts:      files   dns
networks:   files   dns
protocols:  files
services:   files
ethers:     files
rpc:        files

и pam.d с файлом sshd в нем

# SERVER 1
auth    required                                                                        /lib/security/pam_rf.so
auth    [success=done auth_err=die default=ignore]      /lib/security/pam_tacplus.so            server=172.18.177.162:49 secret=testing123 timeout=5
account sufficient                                      /lib/security/pam_tacplus.so            server=172.18.177.162:49 service=ppp protocol=ip timeout=5
session required                                    /lib/security/pam_rf.so
session sufficient                                      /lib/security/pam_tacplus.so            server=172.18.177.162:49 service=ppp protocol=ip timeout=5
password required                                                                       /lib/security/pam_rf.so

# PAM configuration for the Secure Shell service

# Standard Un*x authentication.
auth include common-auth

# Disallow non-root logins when /etc/nologin exists.
account    required     pam_nologin.so

# Standard Un*x authorization.
account include common-account

# Set the loginuid process attribute.
session    required     pam_loginuid.so

# Standard Un*x session setup and teardown.
session include common-session

# Standard Un*x password updating.
password   include common-password

и проблема, когда я впервые подключаюсь к устройству через TeraTerm, я вижу, что введенное имя пользователя было добавлено при запуске сеанса в / etc / passwd и / etc / shadow, но регистрация не удалась и на сервере tacacs я вижу в журналах

Mon Dec 17 19:00:05 2018 [25418]: session.peerip is 172.17.236.2
Mon Dec 17 19:00:05 2018 [25418]: forked 5385
Mon Dec 17 19:00:05 2018 [5385]: connect from 172.17.236.2 [172.17.236.2]
Mon Dec 17 19:00:05 2018 [5385]: Found entry for alex in shadow file
Mon Dec 17 19:00:05 2018 [5385]: verify
IN $6$DUikjB1i$4.cM87/pWRZg2lW3gr3TZorAReVL7JlKGA/2.BRi7AAyHQHz6bBenUxGXsrpzXkVvpwp0CrtNYAGdQDYT2gaZ/
Mon Dec 17 19:00:05 2018 [5385]:
IN encrypts to $6$DUikjB1i$AM/ZEXg6UAoKGrFQOzHC6/BpkK0Rw4JSmgqAc.xJ9S/Q7n8.bT/Ks73SgLdtMUAGbLAiD9wnlYlb84YGujaPS/
Mon Dec 17 19:00:05 2018 [5385]: Password is incorrect
Mon Dec 17 19:00:05 2018 [5385]: Authenticating ACLs for user 'DEFAULT' instead of 'alex'
Mon Dec 17 19:00:05 2018 [5385]: pap-login query for 'alex' ssh from 172.17.236.2 rejected
Mon Dec 17 19:00:05 2018 [5385]: login failure: alex 172.17.236.2 (172.17.236.2) ssh

после этого, если я закрою TeraTerm и снова открою его и попытаюсь подключиться, соединение успешно установится, после этого, если я закрою TeraTerm и снова открою, та же проблема появляется при каждой второй попытке.

в чем может быть проблема, я уже схожу с ума

1 Ответ

0 голосов
/ 07 января 2019

после глубокого обнаружения проблемы, я обнаружил, что это была моя ошибка, я скомпилировал мою службу имен, используя g ++ вместо gcc.

Из-за службы имен, используя

#include <pwd.h>

, которая определяетинтерфейс для таких функций, как nss_service_getpwnam_r и других, который был написан на C, поэтому я должен был:

 extern "C" {
   #include <pwd.h>
}

или скомпилировать мою программу с помощью GCC, надеюсь, что если кто-то столкнется с той же проблемой, он поможет ему /ей.удачи

...