Перейти к содержанию

CAEman

Members
  • Постов

    49
  • Зарегистрирован

  • Посещение

    Никогда

Сообщения, опубликованные CAEman

  1. Скачал (http://sourceforge.net/projects/pamntlm/) на всякий случай pam_ntlm. Кстати, параллельно нашёл статью (http://www.opennet.ru/base/net/ad_postfix_auth.txt.html), где описывается использование sasl при проверке паролей пользователей на AD, правда для postfix (жаль, что, как Вы утверждаете, нельзя его использовать для логина новых пользователей, а то было бы как раз, что нужно).

    Проштудировал мануал по mount.cifs, но опции -k не нашёл. Зато нашёл опцию sec=krb5 (или krb5i). При этом он использует не только что получившего по kinit билет пользователя сервера, а запрашивает пароль для залогиненного пользователя Линукса. В принципе, в дальнейшем, когда, я надеюсь, всё-таки удастся заставить Линукс создавать и загружать новых пользователей, идентичных логинищимся пользователям сервера, использование текущего пользователя будет оправданным (только вот лишний запрос пароля, конечно, не хотелось бы). Кстати, раньше, кажется, монтировался ресурс с указанием в виде //server/..., а теперь - //server.domain/..., или я ошибаюсь, и быть такого не могло?

    Хочу добавить, что у меня в nsswitch.conf в данный момент практически везде стоит winbind. Это не помеха при текущем развитии дел?

    И, если можно, уточнение по последнему пункту.

    Значит, мне необходимо создать вручную одного локального пользователя с именем, совпадающим с таковым какого-либо пользователя сервера (меня, например), но без пароля. Затем, исправив текущее содержимое файлов на предоставленное Вами, я пытаюсь залогиниться, введя свои имя регистрации и пароль (с сервера, естественно). В случае удачи происходит стандартная первая загрузка данного пользователя, за исключением того, что ему устанавливается пароль с сервера, и система получает керберосовый билет. В дальнейшем этот пользователь будет уже стандартно логиниться, используя свой профиль, а любой впервые логинищийся на данном комп-е пользователь сервера теперь будет автоматически создаваться (в связи с этим возникает дополнительный вопрос: следует ли настроить керберос, чтобы срок действия билета был, например, многолетним?), получать свой билет и загружаться, а затем, кто не впервые - см. начало этого предложения.

    Я всё правильно понял?

  2. gogi писал(а) Fri, 30 October 2009 21:51

    Вам стоит определиться. Либо аутентификация kerbetos, либо ntlm. Windows сервер поддерживает и то, и другое, Вам достаточно выбрать одну. Если Вы собираетесь монтировать каталоги с ntlm аутентификацией (с указанием логина и пароля), то kerberos можно было и не устанавливать вовсе.

    Мне совершенно индеферентно, какой конкретно будет использоваться модуль для аутентификации, - лишь бы он (или несколько последовательно задействованных) мог обеспечить решение поставленной задачи (напоминание о которой в, на мой взгляд, недопускающей неоднозначной трактовки форме содержалось в использованной Вами в последнем сообщении цитате, но если Вы обнаружили там какую-либо двусмысленность, то укажите мне, пожалуйста, в чём именно она заключается).

    Без указания логина и пароля mount.cifs ничего не монтирует даже после непосредственно перед этим полученного с помощью kinit билета.

    pam_ntlm я не нашёл даже во всех сетевых репозиториях. Единственное, что там, может быть, имеет сходные функции - cyrus-sasl-ntlm (http://asg.web.cmu.edu/sasl/). Вы, случайно, не знаете, можно ли его использовать для поставленной задачи, и, если возможно, то - как конкретно?

    Цитата:

    Для входа в систему с керберос аутентификацией в самом простом случае Вам нужно

    1. Создать локального пользоватеся с тем же логином, что и в АД и без пароля.

    2. Настроить pam_krb5, отредактировав файлы из /etc/pam.d примерно так:

    ...

    Входить в систему, естественно, нужно не под рутом, а с тем же логином, который создали в п.1.

    Под рутом при правильных настройках Вы, конечно, войдете, но керберос здесь не у дел.

    Пользователей в АД - тысяча.

    Выбрать можно любого?

    А остальные после этого смогут зайти под своим логином?

    Спасибо за предоставленные образцы. Если ответ на последний вопрос будет положительным, то попробую их задействовать.

  3. Решил до переделки исходников винбинда попробовать ограничиться керберосом.

    Напоминаю решаемую задачу.

    При аутентификации на локальной лин.машине в случае необнаружения локального пользователя, идентичного введённому, произвести поиск такового на вин.сервере и в случае удачи создать соответствующую локальную постоянную учётную запись и произвести первую загрузку пользователя (с созданием домашней директории с профилем по умолчанию и далее всё как положено...).

    Имеем следующее.

    Настроенный керберос, выдающий билеты (и mount.cifs, монтирующий ресурсы сервера по ntlm).

    Проблемы следующие.

    Даже при ЗАКОММЕНТИРОВАННЫХ "include"ах в файле login:

    "

    #%PAM-1.0

    auth requisite pam_nologin.so

    password requisite pam_pwcheck.so nullok

    auth [user_unknown=ignore success=ok ignore=ignore auth_err=die default=bad] pam_securetty.so

    password [default=ignore success=1] pam_succeed_if.so uid > 999 quiet

    auth required pam_env.so

    auth sufficient pam_unix2.so

    password sufficient pam_unix2.so nullok

    account sufficient pam_unix2.so

    session optional pam_unix2.so

    #auth include common-auth

    #password include common-password

    #account include common-account

    #session include common-session

    session required pam_loginuid.so

    session required pam_lastlog.so nowtmp never

    session required pam_limits.so

    session optional pam_umask.so

    session optional pam_mail.so standard

    session optional pam_ck_connector.so

    auth optional pam_warn.so

    password optional pam_warn.so

    "

    при изменении стандартного содержания файлов на следующее:

    common-account-pc -

    "

    ...

    #

    account sufficient /lib64/security/pam_krb5.so

    "

    common-auth-pc -

    "

    ...

    #

    auth sufficient /lib64/security/pam_krb5.so

    "

    common-password-pc -

    "

    ...

    #

    password sufficient /lib64/security/pam_krb5.so

    #password required pam_make.so /var/yp

    "

    common-session-pc -

    "

    ...

    #

    session optional /lib64/security/pam_krb5.so

    "

    при попытке регистрации даже root'а выдаётся окно со следующим сообщением:

    "Произошла критическая ошибка. Просмотрите журналы работы KDM или обратитесь к системному администратору"

    без, естественно, последующего осуществления входа в систему.

    Что-нибудь можете посоветовать?

  4. Монтирование я собираюсь сделать автоматическое - при регистрации.

    Если winbind.c содержит только #include "pam_winbind.h", то в pam_winbind.h имеются:

    #include "../lib/replace/replace.h"

    #include "system/syslog.h"

    #include "system/time.h"

    #include <talloc.h>

    #include "libwbclient/wbclient.h"

    #include "localedir.h"

    #include <iniparser.h>

    #include <libintl.h>

    #include <security/pam_appl.h>

    #include <pam/pam_appl.h>

    #include <security/pam_modules.h>

    #include <pam/pam_modules.h>

    #include <security/_pam_macros.h>

    #include <pam/_pam_macros.h>

    #include <security/pam_ext.h>

    #include "winbind_client.h"

    По ним всем тоже нужно искать? И какие там ключевые слова могут определять членство (включение) комп-а в домене?

    Кстати, а /etc/security/pam_winbind.conf в ручном редактировании не нуждается?

  5. Всё монтирует (только с опцией user). Причём, и когда winbind status running, и когда - dead (т.е. и при security=SERVER, и ADS).

    Теперь можно приступить к изучению C исходников на предмет, как они работают, или ещё что нужно сделать (исправить)?

  6. kinit проходит (билет получаю)

    Команда "net ads info" выдаёт следующее:

    LDAP server: ххх.ххх.х.ххх

    LDAP server name: server.domain

    Realm: DOMAIN

    Bind Path: dc=DOMAIN

    LDAP port: 389

    Server time: Sat, 03 Oct 2009 13:24:57 MSD

    KDC server: ххх.ххх.х.ххх

    Server time offset: -10

    Всё в порядке?

  7. А можно просто создать скрипт, не использующий winbindd, но обеспечивающий при вводе в регистрационном окне графического DM имени и пароля пользователя в случае отсутствия такого зарегистрированного локального пользователя сверку введённых имени и пароля с находящимся на win сервере списком и в случае их наличия и соответсвия, создание такого же (имя и пароль) локального пользователя с настройками по умолчанию для вновь создаваемых и его загрузку? Причём доступ к списку получать, например, при помощи Кербероса. Если нельзя, то в чём конкретно заключается загвоздка?

  8. Т.е., если я Вас правильно понял, можно только путём правки исходников для бинарника winbindd, в котором уже забит этот обязательный ввод машины в домен, и последующей их компиляции?

    А с помощью создания скриптового модуля (с использованием или без существующего winbindd) никак нельзя добиться желаемого результата?

  9. Керберос у меня прекрасно настроился прямо из-под Yast (без всяких дедовских способов, таких как редактирование файлов конфигурации) и выдаёт tgt билет.

    А вот дальше начинаются проблемы. В и-нете нашёл только описание авторизации через winbind. Через Yast без ввода машины в домен обойтись нельзя, а значит - это "не для нас". Путём ручного редактирования smb.conf, но без последующего запуска "net ads join", winbind после запуска выдаёт в "messages":

    "initialize_winbindd_cache: clearing cache and re-creating with version number 1

    winbindd/winbindd_util.c:init_domain_list(740)

    Could not fetch our SID - did we join?

    winbindd/winbindd.c:main(1285)

    unable to initialize domain list"

    и выгружается (хотя на некоторых форумах утверждают, что должен работать).

    Вы писали, что подсоединялись без winbind с помощью "nss модуля":

    "Необходимо найти (скорее всего придется написать самому) модуль nss для базы passwd, чтобы он вёл локальную базу вендовых пользователей и на запросы выдавал uid,gid,shell,home."

    Этот модуль настраивается через nsswitch.conf? Среди служб в Yast я ничего связанного с nss, кроме winbind, не нашёл. Не могли бы Вы уточнить название модуля (или привести его содержание), а также более подробно описать его настройку?

    Заранее благодарю.

  10. gogi писал(а) Fri, 11 September 2009 19:54

    1. Необходимо найти (скорее всего придется написать самому) модуль nss для базы passwd, чтобы он вёл локальную базу вендовых пользователей и на запросы выдавал uid,gid,shell,home. Если имеете даже небольшие навыки программирования на C, то это вполне решаемая задача.

    2. Нужно установить и настроить pam_krb5 или аналогичный модуть для аутентификации в AD. Если он не будет стыковаться с вашим модулем nss, то, возможно, самому написать ещё модуль pam для аутентификации в kerberos,например, на основе вызова kinit.

    1. А нельзя ли этот модуль nss (или его содержание) как-нибудь "подцепить" из winbind (там так всё удобно настраивается в yast2, а к программированию я не имею никакого отношения)?

    2. Если я Вас правильно понял из последующих сообщений, упомянутой здесь аналогичной альтернативы kerberos'у оказывается нет (без пароля серверного админ-а). В связи с этим возникает вопрос, а вызов kinit не требует ли получения так называемого "билета" с соответствующим вводом пароля серверного админ-а?

    Уточните, пожалуйста.

  11. gogi писал(а) Fri, 11 September 2009 19:54

    Нужно установить и настроить pam_krb5 или аналогичный модуть для аутентификации в AD.

    Т.е., если я Вас правильно понял, Вы считаете, что у линуксовских модулей kerberos 5 или аналогичных (Winbind, LDAP?) проблем с аутентификацией на виндовском сервере нет? Проблема только в создании новых пользователей по результатам этой аутентификации?

    Уточните, пожалуйста.

  12. gogi писал(а) Fri, 11 September 2009 17:57

    Если в домене оставлена только kerberos аутентификация, то можно поступить, как я писал в прошлый раз (kinit + mount.cifs -k).

    Логиниться на юникс машину в этих случаях можно с любым логином (напр. одним для всех, или даже автологином).

    Однозначно нужно, чтобы у каждого пользователя, зарегистрированного на сервере, создавался свой локальный профиль при первом входе, которым он в дальнейшем мог пользоваться (я не говорю о сохранении его на сервере - пусть на каждой машине будет свой локальный профиль). Всё, что нужно, - это чтобы Linux при вводе в регистрационном окне графического DM имени и пароля пользователя при отсутствии такого зарегистрированного локального пользователя мог сверить введённые имя и пароль с находящимся на win сервере списком и в случае их наличия и соответсвия, создать такого же (имя и пароль) локального пользователя с настройками по умолчанию для вновь создаваемых и его загрузить (с созданием на /home настроенного по умолчанию профиля, например, из /etc/skel). При повторном же входе пользователя (т.е. при уже наличии такого локального пользователя) Linux'у даже не обязательно обращаться к серверу для проверки (с монтированием же сетевых папок, как я понял, проблем нет).

    Достаточно ли я чётко изложил задачу минимума (т.е. нет ли мест, допускающих неоднозначное толкование)? Решаема ли она в принципе, и если - да, то как конкретно? Если не было опыта практического её решения, то, хотя бы - теоретические соображения (с учётом всех описанных мной ранее попыток и результатов её решения).

  13. Задача как раз состоит в том, чтобы, не имея админ-ских прав на Win сервере, предоставить пользователям сервера возможность входить на локальных комп-ах с Linux (естественно, без их предварительного создания в Linux'е - создавать вручную тыщу уже имеющихся и постоянно пополняющихся пользователей - это, сами понимаете, как-то не адекватно...) и, желательно, с доступом к их сетевым папкам.

    Это решаемо в принципе? Или без допила этих виней (кому только могло стукнуть в голову сделать на них сервер Twisted Evil ) никак не обойтись?

  14. При попытке настройки через winbind выдаётся сообщение:

    This host is not a member of the domain...

    Join the domain ...?

    После утвердительного ответа и ввода имени и пароля пользователя сервера (естественно, не администратора):

    Failed to join domain: Failed to set account flags for machine account (NT_STATUS_ACCESS_DENIDED)

    При попытке подключения с того же компьютера, но из-под Windows (c тем же именем комп-а):

    В домене "..." обнаружена учётная запись для данного компьютера.

    Использовать её?

    А после утвердительного ответа и ввода пользователя:

    Не удалось присоединить этот компьютер к домену из-за следующей ошибки:

    Отказано в доступе

    (Хотя он уже присоединён через эту Windows, в которой все загружаются нормально.)

    Что нужно делать?

  15. А по приведённым ниже портам сервера, полученным с помощью PortScan, можно определить, какие там возможны аутентификация и авторизация?

    42 open name

    53 open domain

    88 open kerberos

    135 open epmap

    139 open netbios-ssn

    389 open ldap

    445 open microson-ds

    464 open kpasswd

    593 open hnp-rpc-epmap

    636 open ldaps

    1025 open blackjack

    1027 open unknawn

    1034 open activesync

    1038 open mtqp

    1048 open neod2

    3268 open msn-qc

    3269 open msn-qc-ssl

    3389 open ms-wbt-server

    Нужно, в принципе, только, чтобы Linux просто после первого ввода в окне регистрации DM имени и пароля серверного пользователя автоматически создавал одноимённого локального пользователя с uid и gid, которые стоят у него по умолчанию для вновь создаваемых локальных пользователей, и имеющего такой же доступ к папкам сервера, как и зарегистрированный на сервере пользователь.

    Можно ли этого добиться с какой-либо установкой аутентификации + авторизации в Linux'e и без каких-либо изменений на Windows сервере?

  16. На клиентской машине, на которой стояла WinXP32 с аутентификацией с помощью LDAP на Windows сервере, установил openSUSE11.1x86_64.

    Задача состоит в том, чтобы вход пользователей оставался прежним - с аутентификацией на сервере windows.

    Дополнительная информация.

    Нужный windows домен системой обнаруживается, но к LDAP не подключается:

    "udevd[719]: llnss_ldap: failed to bind to LDAP server ...: Can't contact LDAP server

    udevd[719]: nss_ldap: failed to bind to LDAP server ...: Can't contact LDAP server

    udevd[719]: nss_ldap: could not search LDAP server - Server is unavailable

    udevd[719]: error resolving user 'root, GROUP=': Connection refused"

    Запустил (под wine) ldp.exe (которая подключается к этому LDAP сервису даже с машин, не подключавшихся к серверу вообще), но она выдаёт: "Error <0x51>: Fail to connect to ...", а в консоли, из-под которой я её запустил:

    "fixme:winsock:WSALookupServiceBeginW (0x32f8bc 0x00000710 0x32f914) Stub!

    fixme:advapi:LsaOpenPolicy ((nu),0x32f834,0x00000001,0x32f84c) stub

    fixme:advapi:LsaClose (0xcafe) stub"

    С DHCP всё нормально - всё получает с этого win сервера и в и-нет выходит...

    Что делать для решения данной задачи (не имея админ-ских прав на сервере)?

    Заранее благодарю.

  17. На клиентской машине, на которой стояла WinXP32 с аутентификацией с помощью LDAP на Windows сервере, установил openSUSE11.1x86_64.

    Задача состоит в том, чтобы вход пользователей оставался прежним - с аутентификацией на сервере windows.

    Дополнительная информация.

    Нужный windows домен системой обнаруживается, но к LDAP не подключается:

    "udevd[719]: llnss_ldap: failed to bind to LDAP server ...: Can't contact LDAP server

    udevd[719]: nss_ldap: failed to bind to LDAP server ...: Can't contact LDAP server

    udevd[719]: nss_ldap: could not search LDAP server - Server is unavailable

    udevd[719]: error resolving user 'root, GROUP=': Connection refused"

    Запустил (под wine) ldp.exe (которая подключается к этому LDAP сервису даже с машин, не подключавшихся к серверу вообще), но она выдаёт: "Error <0x51>: Fail to connect to ...", а в консоли, из-под которой я её запустил:

    "fixme:winsock:WSALookupServiceBeginW (0x32f8bc 0x00000710 0x32f914) Stub!

    fixme:advapi:LsaOpenPolicy ((nu),0x32f834,0x00000001,0x32f84c) stub

    fixme:advapi:LsaClose (0xcafe) stub"

    С DHCP всё нормально - всё получает с этого win сервера и в и-нет выходит...

    Что делать для решения данной задачи (не имея админ-ских прав на сервере)?

    Заранее благодарю.

×
×
  • Создать...