Комментарии 37
Если вынуть сетевой провод из рабочей станции, залогинится скоре всего можно будет.
Нет, тут, к сожалению, не получится, не отработает pam_krb5, а с точки зрения pam_unix учетная запись заблокирована. Но ваш вопрос навел на мысль, что можно, например, при создании учетной записи, таки назначить ей локальный пароль, тогда да, будет можно логиниться доменной учеткой без доступа к домену. Но тогда надо обязательно решать вопрос с удалением локальных учеток, при удалении их в домене.
Атак, достаточно в pam_script_auth добавить в конце:
echo "$PAM_USER:$PAM_AUTHTOK" | /usr/sbin/chpasswd
Здравствуйте, @valvalva
делал по инструкции выше, Керберос работает (логин-данные получаются - kinit+klist работают), но в конце на последнем шаге "проверяем" после команды sudo login не может залогиниться с ошибкой "Authentication failure", а в логе "/var/log/auth.log" пишет, что не может найти модуль "/usr/share/libpam-script/pam_script_acct" (что логично, мы же только **_auth скрипт создавали) хотя, насколько я понимаю, триггер этого модуля не должен затрагиваться - только pam_script_auth должен вызываться? Насколько я это вычитал на гитхабе проэкта: github.com/jeroennijhof/pam_script )
Может быть можно как-то выключить "лишний" *acct или dummy-образец для acct подсунуть? (на пустой файл тоже ругается)
Исходные:
сервер с АД, с доменом и керберосом на CVT.UNI-TEST.RU
подключаю компьютер с Убунтой "primeline-ubnt"
логинюсь в АД и керберос юзером "tstusr"
Лог /var/log/auth.log:
primeline@primeline-ubnt:~$ sudo tail /var/log/auth.log
Aug 2 13:31:56 primeline-ubnt login[56536]: pam_krb5(login:auth): user tstusr authenticated as tstusr@CVT.UNI-TEST.RU
Aug 2 13:31:56 primeline-ubnt pam-script[56537]: script /usr/share/libpam-script/pam_script_acct exec failure
Aug 2 13:31:56 primeline-ubnt login[56536]: pam_unix(login:account): could not identify user (from getpwnam(tstusr))
Aug 2 13:31:56 primeline-ubnt login[56536]: Authentication failure
Aug 2 13:31:56 primeline-ubnt pam-script[56532]: can not stat /usr/share/libpam-script/pam_script_ses_close
Aug 2 13:31:56 primeline-ubnt sudo[56532]: pam_unix(sudo:session): session closed for user root
Aug 2 13:32:07 primeline-ubnt pam-script[56540]: script /usr/share/libpam-script/pam_script_acct exec failure
Aug 2 13:32:07 primeline-ubnt sudo: primeline : TTY=pts/2 ; PWD=/home/primeline ; USER=root ; COMMAND=/usr/bin/tail /var/log/auth.log
Aug 2 13:32:07 primeline-ubnt pam-script[56539]: can not stat /usr/share/libpam-script/pam_script_ses_open
Aug 2 13:32:07 primeline-ubnt sudo[56539]: pam_unix(sudo:session): session opened for user root(uid=0) by primeline(uid=1000)
Статья не актуальна /s
Сейчас востребовано как развернуть контроллер домена на Линукс и мигрировать на него с AD :)
Нет важных предустановок на клиенте:
Настройка синхронизации времени с контроллером домена(The Kerberos protocol requires the time of the client and server to match: if the system clocks of the client does not match that of the server, authentication will fail) Если разница будет более 5 минут.
Аутентификация в Kerberos
Чтобы аутентифицироваться в области Kerberos, требуются пакеты krb5-user и libpam-krb5, а также некоторые другие, которые не являются необходимыми, но делают жизнь проще:
sudo apt-get install krb5-user libpam-krb5 libpam-ccreds auth-client-config
Пакет auth-client-config позволяет просто настроить PAM для аутентификации множества сервисов.
libpam-ccreds будет кэшировать параметры аутентификации, позволяя вам подключаться когда центр распространения ключей (KDC) недоступен.
Этот пакет также полезен для переносных компьютеров, которые могут авторизовываться с использованием Kerberos в корпоративной сети, но также должны быть доступны и вне сети.
Для настройки клиента наберите в терминале:
sudo dpkg-reconfigure krb5-config
Спасибо, за комментарий, действительно синхронизация времени очень важна, а вот FQDN, в данном случае, не играет роли, как и остальное ПО (можно проверить экспериментально). Если эта статья зайдет, продолжу описание решения нашего предприятия, там и правильный FQDN пригодится!
Возможно настроить клиент с rdns в значение false в файле krb5.conf и руками добавить доменный IP сервера в /etc/hosts, но это большая боль.
Из своего опыта:
Основа - сервер kerberos с хранилищем Key Distribution Center (KDC)
Каждый сервер внутри Kerberos realm должен иметь Fully Qualified Domain Name (FQDN)
FQDN сервера является reverse-resolvable(rdns на клиенте)
Время в realm Kerberos должно быть синхронизовано.
Корректно настроены локальные NTP и DNS серверы в домене(доменах)
Создание ключей и сертификатов KDC
На Microsoft Learn есть подробная пошаговая инструкция как ввести хост на линуксе в домен Active Directory.
У нас на предприятии домен не Active Directory. Инструкция, кстати, хорошая, но про сервера "how to join a SQL Server Linux host machine to an Active Directory domain" с рабочими станциями проще
Мне кажется realmd ощутимо проще (он делает всё вот это вот), да и можно работать автономно без доступа к кд разок залогинившись. Буквально realm join domain.com и всё, остаётся по вкусу разрешить ssh/sudo ну и накидать немношк в sssd.conf как будет выглядеть логин и создаваться домашние папки
Мы на предприятии попробовали все варианты, в том числе и realmd/sssd, остановились на этом. Ансиблу, конечно, все равно, но плейбук получается короче :) И работает не только с AD
По моему опыту (около пяти лет назад) sssd был самым простым.
У меня тупой вопрос: есть ли "стандартный" способ ввода линуксовой машины в домен? Рекомендуемый вендорами и используемый большинством?
Вопрос хороший!
Unix-way - это возможность делать одно и то же как минимум десятком способов. :-)
SSSD и realm на мой взгляд самый простой и надежный.
А какое самое простое решение для керберос сервера на замену АД?
AD - это не только керберос.
ИМХО - FreeIPA. (в общем-то все компоненты в линуксе есть, и настоящих хакер может их настроить, но смысла нет).
Я знаю что такое AD, но меня интересует именно единый вход:
Чтобы пользователи входили на терминал под доменными учетками (в том числе вход без подключения к сети, сброс пароля итд)
Чтобы веб-приложения аутентифицировали пользователей под доменными учетками
Чтобы сервисы (systemd) могли быть запущены под доменными учетками
Чтобы сервисы могли ходить в базу данных под домменными учетками
Чтобы работало делегирование, то есть пользователь обращался к сервису под своей учеткой, а сервис в базу под учеткой пользователя
FreeIPA это наиболее приличный продукт на линуксе для эмуляции насколько знаю.
Я использовал только #1, посмотрите доки-форумы для остального.
Отличное название для следующей статьи! Принято в работу)
Тупыми бывают только ответы) Вопросы - это всегда хорошо! Попробую ответить так, надо начать с составления списка того, что нужно пользователям и как им это предоставить, соблюдая требования безопасности. Hапример - использовать один логин и пароль на все сервисы и на любом компьютере предприятия, авторизованный доступ в интернет, без необходимости еще раз вводить пароль, свой рабочий стол на любом компьютере предприятия, общие файловые шары для групп пользователей, возможность легко менять конфигурацию рабочих станций согласно задачам отделов, и так далее. Имея такой список можно подбирать решения, и согласен с Виталием, Unix-way позволяет из небольших компонентов, делающих что-то одно, собрать любое сложное комплексное решение. Противоположный и тоже, по своему хороший подход - Microsoft AD - есть сразу все, что нужно, но только в мире Windows
Как любитель (и профессионал) линукса скажу честно - на линукс (*nix) за 40 лет не придумали ничего сопоставимого с AD по feature-set.
То есть даже если мы уберем требование "сделайте нам AD-compatible", и оставим только технические требования, мы не сможет "закрыть" все вещи, которые решает AD.
Меня только вопросы аутентификации и беспокоят и сертификаты, что-то вроде ad cs
А не кажется ли Вам, что сама концепция AD не юникс-вей? Ведь юникс-вей был мейнфрейм+ куча терминалов, там такого не нужно было. Это когда концепция ПЦ победила, то и занялись - а как этим лесом ПЦ централизованно управлять? И придумали!
А нынче опять все возвращается на круги своя, только вместо одного менйфрейма кластер и граф терминал. И возникает вопрос - и зачем тогда AD???
Вот тут описал чего хотелось бы https://habr.com/ru/post/718632/comments/#comment_25262020
Когда-то пользовался PBIS https://github.com/BeyondTrust/pbis-open там всё работало, и доступ к самба шарам и автообновление билета, и обновление dns, и билет на саму машину отдельный, вообще как будто на виндовой машине работаешь - всё прозрачно.
но увы...
Единственный косяк, но он не PBIS, а приложений под линукс... структура домашнего каталога по умолчанию: /home/local/domain/user
её не понимает половина приложений, правила apparmor рассчитаны на плоскую структуру /home/user
но их хоть можно подправить, но мне так и не удалось в хроме заставить работать диалоги открытия/сохранения файлов.
Самый простой способ ввести Linux в домен