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

Проблема аутентификации на сервере Centos 7, присоединенном к AD

С помощью эта ссылка, Я настроил сервер, который правильно присоединен к серверу Active Directory, но по какой-то причине я не могу пройти аутентификацию на этом сервере с билетом Kerberos для нескольких тестовых пользователей, которые я сделал на своем ноутбуке.

Все пользователи на моем локальном ноутбуке имеют одинаковый .ssh / config и все используют один и тот же /etc/krb5.conf; все пользователи также могут успешно получить действительный билет из AD, просто используя kinit. Однако проблемы возникают, когда я пытаюсь подключиться по ssh к вышеупомянутому серверу, который присоединен к AD.

Когда я пытаюсь войти в систему с моей собственной учетной записью, «parkel», он запрашивает у меня мой пароль, я ввожу свой AD-пароль, и я получаю аутентификацию для входа на сервер, при первом входе в систему мой домашний адрес был сделан правильно и меня приписали к группам, указанным в gidNumber в AD; все в мире казалось нормальным. Я тестировал изменение gidNumber в AD, все изменения были активны сразу после переподключения. В мире все еще было хорошо.

Вот тогда и начались проблемы; Увидев свой успех, я сделал две тестовые учетные записи в AD, копии моей собственной учетной записи AD, которая работала раньше, «test1» и «test2». Я перешел на эту учетную запись на своем ноутбуке, сделал кинит и получил билет. Однако, когда я пытался войти на сервер, он только пытался пройти аутентификацию с помощью пароля, и в журналах никогда не упоминается, что он пытается аутентифицироваться с помощью pam_sss, поскольку локальный пользователь не существует, это с треском провалится.

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

Включены некоторые выходные данные из журнала sshd на сервере и моего krb5.conf на сервере и на моем клиенте.

Выход SSHD

Dec 10 11:59:04 ldaptest.vs.lan sshd[2384]: Authorized to parkel, krb5 principal parkel@VS.LAN (ssh_gssapi_krb5_cmdok)
Dec 10 11:59:04 ldaptest.vs.lan sshd[2384]: Accepted gssapi-with-mic for parkel from 192.168.100.2 port 56752 ssh2
Dec 10 11:59:04 ldaptest.vs.lan systemd[1]: Created slice user-2001.slice.
Dec 10 11:59:04 ldaptest.vs.lan systemd[1]: Starting Session 3 of user parkel.
Dec 10 11:59:04 ldaptest.vs.lan systemd[1]: Started Session 3 of user parkel.
Dec 10 11:59:04 ldaptest.vs.lan systemd-logind[776]: New session 3 of user parkel.
Dec 10 11:59:04 ldaptest.vs.lan sshd[2384]: pam_unix(sshd:session): session opened for user parkel by (uid=0)
Dec 10 11:59:10 ldaptest.vs.lan sshd[2410]: Invalid user test1 from 192.168.100.2
Dec 10 11:59:10 ldaptest.vs.lan sshd[2410]: input_userauth_request: invalid user test1 [preauth]

KRB5.conf СЕРВЕР

[libdefaults]
    default_realm = VS.LAN 
    dns_lookup_realm = false
    dns_lookup_kdc = false
    ticket_lifetime = 24h
    renew_lifetime = 7d
    forwardable = yes

[realms]
    VS.LAN = {
        kdc = ad01-test.vs.lan:88
        admin_server = ad01-test.vs.lan:749
        default_domain = vs.lan
    }

[appdefaults]
    pam = {
        debug = true
        ticket_lifetime = 36h
        renew_lifetime = 36h
        forwardable = true
        krb4_convert = false
    }

[logging]
    default = FILE:/var/log/krb5/kdc.log
    kdc = FILE:/var/log/krb5/kdc.log
    admin_server = FILE:/var/log/krb5/kadmind.log

KRB5.conf КЛИЕНТ

includedir /etc/krb5.conf.d/

[logging]
 default = FILE:/var/log/krb5libs.log
 kdc = FILE:/var/log/krb5kdc.log
 admin_server = FILE:/var/log/kadmind.log

[libdefaults]
 dns_lookup_realm = false
 ticket_lifetime = 24h
 renew_lifetime = 7d
 forwardable = false
 rdns = false
 default_realm = VS.LAN 
 default_ccache_name = KEYRING:persistent:%{uid}

[realms]
 VS.LAN = {
  kdc = 172.19.254.5
 }

[domain_realm]
 .vs.local = VS.LAN
 vs.local = VS.LAN

SSSD.conf СЕРВЕР

[sssd]
domains = vs.lan
services = nss, pam, pac
config_file_version = 2

[nss]

[pam]

[pac]

[domain/vs.lan]
## Comment out if you want offline logins
# cache_credentials = true
ldap_id_mapping = False
default_shell = /bin/bash
fallback_homedir = /home/%d/%u

id_provider = ad
auth_provider = ad
access_provider = ad
chpass_provider = ad

ldap_schema = ad

dyndns_update = true
dyndns_refresh_interval = 43200
dyndns_update_ptr = true
dyndns_ttl = 3600

ad_server = ad01-test.vs.lan

В качестве ссылки в будущем эта строка журнала является ключевой:

Dec 10 11:59:10 ldaptest.vs.lan sshd[2410]: Invalid user test1 from 192.168.100.2

Он сообщает вам, что ssh может даже найти пользователя, поэтому следующим шагом в отладке должно быть включение журналов sssd и выяснение, почему getent passwd test1 не работает.

Рад, что теперь у вас работает sssd!

В конце концов я решил свою проблему, установив правильные значения uidNumber, gidNumber, homeDirectory и loginShell в AD для пользователя test1; очевидно, когда я скопировал своего рабочего пользователя, эти значения не были скопированы вместе со всей остальной информацией.