Як заборонити доступ до відключених облікових записів AD через kerberos у пам_krb5?


10

У мене працює каталог AD / Linux / LDAP / KRB5 та налаштування автентифікації з однією невеликою проблемою. Коли обліковий запис вимкнено, автентифікація відкритих ключів SSH все ще дозволяє ввійти в систему.

Зрозуміло, що клієнти kerberos можуть ідентифікувати відключений обліковий запис, оскільки kinit та kpasswd повертають "Клієнтські дані були відкликані" без подальшого пароля / взаємодії.

Чи можна налаштувати PAM (з "UsePAM так" у sshd_config), щоб заборонити вхід для облікових записів з вимкненням, коли аутентифікацію здійснює publickey? Схоже, це не працює:

account     [default=bad success=ok user_unknown=ignore] pam_krb5.so

Будь ласка, не вводьте winbind у своїй відповіді - ми не використовуємо її.

Відповіді:


4

Я читав деінде інші люди, які просять "виправити" SSH, щоб заблоковані акаунти не могли входити через SSH. (див. помилку Debian 219377) Цей запит було відхилено як виправлення, "оскільки воно порушує деякі очікування користувачів [, які] використовувались для passwd-я, лише блокуючи passwd". (див. помилку Debian 389183), наприклад, деякі люди ХОЧУТЬ мати можливість блокувати облікові записи з паролів, але все ж дозволяють SSH-ключ.

PAM не забороняє автентифікацію ключа SSH для щойно заблокованих облікових записів (наприклад, через недійсні спроби пароля, оскільки автентифікація ключа SSH призначена для того, щоб не звертати уваги на поле пароля, звідки зазвичай блокуються облікові записи.)

Я розумію, що введення хеша пароля неявно перевіряється під час pam_authenicate (), а не під час pam_acct_mgmt (). pam_unix.so pam_sm_acct_mgmt () взагалі не перевіряє хеш пароля, а pam_authenticate () під час автентифікації відкритого ключа не викликається.

Якщо ви маєте намір увімкнути централізоване відключення облікових записів від входу, є й інші можливі вирішення проблем, зокрема:

Зміна оболонки для входу.

(повторно) переміщення файлу дозволених ключів.

Іншим варіантом заборонити доступ може бути деяке використання DenyGroups або AllowGroups в sshd_config. (Потім додавання користувача в групу «sshdeny», або видалення їх з групи «sshlogin» , щоб відключити їх від входу в систему ). (Читати тут: https://help.ubuntu.com/8.04/serverguide/user-management .html )

З http://web.archiveorange.com/archive/v/67CtqEoe5MhDqkDmUMuL я читав: "Проблема полягає в тому, що pam_unix перевіряє терміни придатності тіньового запису, а не вміст поля хеша пароля". Якщо це правда, чи закінчується термін дії рахунку, а не блокується, робити все, що вам потрібно?

Відповідь на ваше запитання, можливо, "так, якщо ви їх відключили десь, крім поля пароля"


4

Зробив ще кілька домашніх завдань, і я відповідаю на власне запитання.

У пам’яті pam_krb5 ( pam_krb5-2.3.14-1/src/acct.c) RedHat ( ), якщо модуль не брав участь у етапі аутентифікації, функція pam_sm_acct_mgmt () повертає або PAM_IGNORE, або PAM_USER_UNKNOWN, залежно від конфігурації модуля. Тому потрібно буде змінити код pam_krb5, щоб робити те, що я хочу.

Відповідь JohnGH - це вдале вирішення; використання атрибутів "проксі" для передачі того ж значення, як розрив оболонки або додавання до групи "відключених користувачів".

Ще одне вирішення (частково перевірене) - встановити дату закінчення терміну дії облікового запису в минулому та використовувати модуль, такий як pam_unix, щоб не здійснити перевірку рахунків. Для цього використовується LDAP, а не KRB5, але запити до того ж каталогу, що керується централізовано.


2

Аутентифікація на основі ключа SSH не залежить від PAM. У вас є такі рішення:

  • відключити аутентифікацію на основі клавіш у sshd_config
  • змінити та перекомпілювати sshd та додати гачок, щоб auth на основі кнопок перевіряв також чи дійсний рахунок через pam.

Якщо ви хочете використовувати без пароля вхід через kerberos, переконайтесь, що:

  • ви не використовуєте pam для sshd
  • у вас kerberos правильно налаштований. Наприклад, ти можеш зробитиkinit -k host/server1.example.com@DOMAIN
  • у вас sshd налаштовано на використання gssapi:

    KerberosАутентифікація так GSSAPIAаутентифікація так GSSAPICleanupCredentials yes UsePAM ні

  • ви використовуєте kerberized ssh-клієнт, як PuTTY v0.61 або новіший.


1
Я не погоджуюся з тим, що авторський ключ відкритого ключа SSH не залежить від PAM. Додавання account optional pam_echo.so file=/etc/redhat-releaseдо /etc/pam.d/sshd призводить до друку вмісту файлу під час використання авторизованих авторизованих логінів (спробуйте).
Філ

Я думаю, що пам використовується лише для облікового запису (наприклад, для створення домашньої папки), а не для auth. Я зараз перевіряю цю справу.
Мірча Вутковичі
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.