Pull to refresh

Comments 37

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

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

Здравствуйте, @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)

Приветствую!
Судя по всему, не отрабатывает
/usr/share/libpam-script/pam_script_auth
в результате, учетная запись не создается. Проверьте еще раз
/etc/pam.d/common-auth
Сообщения о несуществующих скриптах не критичны

Статья не актуальна /s

Сейчас востребовано как развернуть контроллер домена на Линукс и мигрировать на него с AD :)

Да, все так, и у нас на предприятии уже развернуто решение (mit kerberos + ansible-pull + gitlab). Эта статья, небольшой его фрагмент, напишу остальное, если "зайдет" эта часть

Zential чем не угодил?

Нет важных предустановок на клиенте:

Аутентификация в 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

Для серверов в домене просто прописываем в DNS записи A и PTR, для рабочих станций в этом нет необходимости. FQDN рабочих станций (без прописывания его в DNS) используем для назначения им нужной конфигурации (через ansible), это другая задача и другая статья

У нас на предприятии домен не Active Directory. Инструкция, кстати, хорошая, но про сервера "how to join a SQL Server Linux host machine to an Active Directory domain" с рабочими станциями проще

Нет причин для регистрации рабочих станций Linux в домене Microsoft или керберос сфере, это позволяет не указывать их в DNS, короче, с рабочими станциями проще)

Мне кажется realmd ощутимо проще (он делает всё вот это вот), да и можно работать автономно без доступа к кд разок залогинившись. Буквально realm join domain.com и всё, остаётся по вкусу разрешить ssh/sudo ну и накидать немношк в sssd.conf как будет выглядеть логин и создаваться домашние папки

Мы на предприятии попробовали все варианты, в том числе и realmd/sssd, остановились на этом. Ансиблу, конечно, все равно, но плейбук получается короче :) И работает не только с AD

По моему опыту (около пяти лет назад) sssd был самым простым.

У меня тупой вопрос: есть ли "стандартный" способ ввода линуксовой машины в домен? Рекомендуемый вендорами и используемый большинством?

Вопрос хороший!
Unix-way - это возможность делать одно и то же как минимум десятком способов. :-)
SSSD и realm на мой взгляд самый простой и надежный.

А какое самое простое решение для керберос сервера на замену АД?

AD - это не только керберос.
ИМХО - FreeIPA. (в общем-то все компоненты в линуксе есть, и настоящих хакер может их настроить, но смысла нет).

Я знаю что такое AD, но меня интересует именно единый вход:

  1. Чтобы пользователи входили на терминал под доменными учетками (в том числе вход без подключения к сети, сброс пароля итд)

  2. Чтобы веб-приложения аутентифицировали пользователей под доменными учетками

  3. Чтобы сервисы (systemd) могли быть запущены под доменными учетками

  4. Чтобы сервисы могли ходить в базу данных под домменными учетками

  5. Чтобы работало делегирование, то есть пользователь обращался к сервису под своей учеткой, а сервис в базу под учеткой пользователя

FreeIPA это наиболее приличный продукт на линуксе для эмуляции насколько знаю.
Я использовал только #1, посмотрите доки-форумы для остального.

Ну пожалуй отвечу и вам тоже — посмотрите на любой хадуп с настроенным керберосом. Там есть все что вы просите. Насчет «без подключения к сети» только сомневаюсь немного. То есть, такое решение возможно. Основа — FreeIPA. Не смогу сказать, просто или сложно это настроить, это не моя компетенция, но такие решения в практике не единичны, а массовы (ну и специалисты которые это умеют, очевидно тоже).
На FreeIPA работают куча хадуп кластеров. Я затрудняюсь сказать, сколько их, но только вокруг меня на работе их сотни. Смысл есть (хотя не всем это конечно нужно).

Отличное название для следующей статьи! Принято в работу)

Тупыми бывают только ответы) Вопросы - это всегда хорошо! Попробую ответить так, надо начать с составления списка того, что нужно пользователям и как им это предоставить, соблюдая требования безопасности. Hапример - использовать один логин и пароль на все сервисы и на любом компьютере предприятия, авторизованный доступ в интернет, без необходимости еще раз вводить пароль, свой рабочий стол на любом компьютере предприятия, общие файловые шары для групп пользователей, возможность легко менять конфигурацию рабочих станций согласно задачам отделов, и так далее. Имея такой список можно подбирать решения, и согласен с Виталием, Unix-way позволяет из небольших компонентов, делающих что-то одно, собрать любое сложное комплексное решение. Противоположный и тоже, по своему хороший подход - Microsoft AD - есть сразу все, что нужно, но только в мире Windows

Как любитель (и профессионал) линукса скажу честно - на линукс (*nix) за 40 лет не придумали ничего сопоставимого с AD по feature-set.
То есть даже если мы уберем требование "сделайте нам AD-compatible", и оставим только технические требования, мы не сможет "закрыть" все вещи, которые решает AD.

Меня только вопросы аутентификации и беспокоят и сертификаты, что-то вроде ad cs

А не кажется ли Вам, что сама концепция AD не юникс-вей? Ведь юникс-вей был мейнфрейм+ куча терминалов, там такого не нужно было. Это когда концепция ПЦ победила, то и занялись - а как этим лесом ПЦ централизованно управлять? И придумали!

А нынче опять все возвращается на круги своя, только вместо одного менйфрейма кластер и граф терминал. И возникает вопрос - и зачем тогда AD???

ИМХО, важна не идеология, а потребности пользователей. И в фирмах, который заботятся о безопасности, по-прежнему хотят управлять пользовательскими компьютерами.

Когда-то пользовался PBIS https://github.com/BeyondTrust/pbis-open там всё работало, и доступ к самба шарам и автообновление билета, и обновление dns, и билет на саму машину отдельный, вообще как будто на виндовой машине работаешь - всё прозрачно.
но увы...

Единственный косяк, но он не PBIS, а приложений под линукс... структура домашнего каталога по умолчанию: /home/local/domain/user её не понимает половина приложений, правила apparmor рассчитаны на плоскую структуру /home/user но их хоть можно подправить, но мне так и не удалось в хроме заставить работать диалоги открытия/сохранения файлов.

Sign up to leave a comment.

Articles