The OpenNET Project / Index page

[ новости/++ | форум | wiki | теги ]

Аутентификация пользователей в squid через доменные аккаунты Windows (freebsd squid auth win domain samba)


<< Предыдущая ИНДЕКС Поиск в статьях src Установить закладку Перейти на закладку Следующая >>
Ключевые слова: freebsd, squid, auth, win, domain, samba,  (найти похожие документы)
From: Misha Volodko <misha.volodko@gmail.com.> Newsgroups: email Date: Mon, 20 Sep 2004 18:21:07 +0000 (UTC) Subject: Аутентификация пользователей в squid через доменные аккаунты Windows Задача. Необходимо аутентифицировать пользователей в squid на основе доменных аккаунтов. Не всегда подходит классическая схема учета трафика по IP адресам примеры случаев когда подобная ситуация не устраивает достаточно полно описаны в [1]. Кроме того, стояла задача защищать подключение к Internet в большой сети от приносимых ноутбуков. Инструменты. 1. OC FreeBSD использовались версии 4.11-RELEASE и 5.3-RELEASE-p5 2. Windows 2003 - контроллер домена. 3. samba-3.0.11 4. squid-2.5.8 Сеть и топология. Домен - piva.net Контроллер домена - lab002.piva.net Рабочие станции соответственно - labxxx.piva.net Машина на которой установлен squid - lab003.piva.net Практическое руководство. 1. Настройка клиента Kerberos В FreeBSD существует две реализации Kerberos производства MIT и HEIMDAL, соединиться с сервером Kerberos используемым в Windows 2003 у меня получилось только в случае использования Kerberos клиента производства HEIMDAL. Более того, он работает, только если версия старше 0.6. В пятой ветке FreeBSD в базовой системе идет Kerberos производства HEIMDAL версии 0.6.1, поэтому для его использования необходимо добавить в файл /etc/make.conf следующие параметры: MAKE_KERBEROS5 = yes ENABLE_SUID_K5SU = yes После этого необходимо пересобрать мир (make buildworld && make installworld). Как это делается, я описывать не буду, обратитесь к руководствам по этой теме. В базовой системе четвертой версии FreeBSD идет клиент Kerberos производства HEIMDAL однако довольно старой версии 0.5.1. Для использования сервера Kerberos производства HEIMDAL версии 0.6.х в четвертой версии FreeBSD необходимо установить порт /usr/ports/security/heimdal. Важное замечание - DNS сервер, прописанный в /etc/resolv.conf ДОЛЖЕН ЗНАТЬ о зоне используемой для построения Windows домена (наиболее удобный путь настроить его как вторичный DNS сервер). Клиент Kerberos будет искать записи типа SRV _kerberos._udp. Настраиваем клиента Kerberos. В файл /etc/krb5.conf необходимо добавить информацию о сервере Kerberos в моем случае это: [libdefaults] default_realm = PIVA.NET [realms] PIVA.NET = { kdc = lab002.piva.net admin_server = lab002.piva.net } Все остальные опции можно оставлять по умолчанию. Попробуем соединиться с сервером Kerberos. [root@lab003 ~] kinit -p Administrator@piva.net Administrator@PIVA.NET's Password: и вводим пароль, система должна выдать kinit: NOTICE: ticket renewable lifetime is 1 week проверим соединение, в моем случае это выглядит так: [root@lab003 ~] klist Credentials cache: FILE:/tmp/krb5cc_0 Principal: administrator@PIVA.NET Issued Expires Principal Feb 22 17:10:40 Feb 23 03:10:38 krbtgt/PIVA.NET@PIVA.NET Отлично, соединение есть. 2. Samba Устанавливаем /usr/ports/net/samba3/ Необходимые опции [X] ADS With Active Directory support [X] WINBIND With WinBIND support Далее необходимо настроить smb.conf Отличное руководство по этому процессу [6]. Замечание: на четвертой версии FreeBSD при использовании Kerberos клиента версии 0.6.3 программа wbinfo не могла проверить наличие доверительного аккаунта в домене(wbinfo -t). Проблема решилась использованием security level domain вместо ads. Приведу опции, которые добавлял я: workgroup = piva server string = lab003 netbios name = lab003 realm = piva.net security = ads password server = lab002.piva.net encrypt passwords = yes winbind separator = + winbind use default domain = yes winbind uid = 10000-20000 winbind gid = 10000-20000 winbind enum users = yes winbind enum groups = yes template homedir = /home/winnt/%D/%U template shell = /usr/local/bin/bash Как и советует автор [1], добавим необходимы нам имена в файл /usr/local/etc/lmhosts 10.10.10.1 lab001.piva.net 10.10.10.2 lab002.piva.net 10.10.10.3 lab003.piva.net Входим в домен: net ads join -U Administrator%password Joined 'LAB003' to realm 'PIVA.NET' 3. winbindd Следующим шагом у нас запуск winbindd. Я запускал с ключиком -d10, в debug режиме. Проверить работоспособность winbind можно командой wbinfo Необходимо удостовериться, что winbind нормально работает и может получать списки пользователей и групп с сервера. [root@lab003 ~] wbinfo -t checking the trust secret via RPC calls succeeded Это означает что доверительный аккаунт компьютера создан. Посмотрим на список пользователей. [root@lab003 ~] wbinfo -u (для просмотра пользователей) administrator guest support_388945a0 lab002$ krbtgt iusr_lab002 iwam_lab002 lab001$ iwam_lab001 iusr_lab001 lab003$ pablo lab005$ Как видно, аккаунт для нашего компьютера уже создался (lab003$) и взаимодействие налажено. Попробуем аутентифицироваться в домене: [root@lab003 ~] wbinfo -a administrator%password plaintext password authentication succeeded challenge/response password authentication succeeded На этом настройку winbind можно считать законченной. 4. squid Устанавливаем /usr/ports/www/squid Насколько видно из Makefile helper для winbind включен по умолчанию. Т.е. ничего особенного конфигурировать не нужно. После установки при запущенном winbindd необходимо проверить работу helper'а Для этого запускаем /usr/local/bin/ntlm_auth --helper-protocol=squid-2.5-basic Вводим piva+administrator password Если получен ответ OK значит все отлично. Иначе необходимо смотреть логи winbindd Настраиваем собственно сам squid. Отличное руководство по это делу [3] В данном случае были добавлены следующие стороки: auth_param ntlm program /usr/local/bin/ntlm_auth --helper-protocol=squid-2.5-ntlmssp auth_param ntlm children 10 auth_param ntlm max_challenge_reuses 0 auth_param ntlm max_challenge_lifetime 2 minutes auth_param basic program /usr/local/bin/ntlm_auth --helper-protocol=squid-2.5-basic auth_param basic children 10 auth_param basic realm Squid proxy-caching web server auth_param basic credentialsttl 2 hours Данная конфигурация описывает два helper'a один дня IE (ntlmssp) другой для всех остальных пользователей (mozilla, opera, etc). Необходимо отметить что для нормальной работы из броузера у пользователя под который работает squid должно хватать прав для обращения к сокету на котором слушает winbindd. Согласно man ntlm_auth это winbindd_privileged в $LOCKDIR. В моем случае сокет находиться в /var/db/samba/winbindd_privileged. Для решения проблемы я изменил группу владельца этой директории на squid. После этого можно приступать к полноценному тестированию из веб броузера. 5. Как это выглядит В случае если пользователь не входит в домен ему выдается окно в котором предлагается ввести имя пользователя, пароль и домен. Клиенты вошедшие в домен и использующие IE аутентифицируются прозрачно. Клиенты вошедшие в домен и использующие иные броузеры аутентифицируются по протоколу basic. Каждый раз при запуске вводят имя и пароль. Самая главная проблема - невозможность аутентифицировать пользователей с русскими именами. 6. Дополнительный функционал Дополнительно можно использовать возможность управлять доступом в Internet из Windows. Для этого можно воспользоваться параметром --require-membership-of= ntlm_auth. Как видно из названия при аутентификации helper будет требовать наличие пользователя в определенной группе. В моем случае указание там названия группы проблемы не решило. Пришлось указывать универсальный идентификатор группы в домене (SID). Узнать его можно с помощью уже знакомой программы wbinfo. Например, если необходимо узнать SID группы inetusers: [root@lab004 ~] wbinfo -n inetusers S-1-5-21-1828638205-4279006917-513177360-1121 Domain Group (2) После этого необходимо изменить конфигурационный файл squid указав в местах описания хелперов необходиму директиву. auth_param ntlm program /usr/local/bin/ntlm_auth \ --require-membership-of=S-1-5-21-1828638205-4279006917-513177360-1121 \ --helper-protocol=squid-2.5-ntlmssp Теперь пользователи которые не входят в группу inetusers не смогут выйти в Internet. Источники. 1. http://www.opennet.ru/base/net/win_squid.txt.html 2. http://www.squid-cache.org 3. http://www.squid-cache.org/Doc/FAQ/FAQ-23.html 4. http://devel.squid-cache.org/ntlm/squid_helper_protocol.html 5. http://groups-beta.google.com 6. http://samba.org/samba/docs/man/Samba-HOWTO-Collection/domain-member.html 7. http://www.wlug.org.nz/ActiveDirectoryKerberos

<< Предыдущая ИНДЕКС Поиск в статьях src Установить закладку Перейти на закладку Следующая >>

Обсуждение [ Линейный режим | Показать все | RSS ]
 
  • 1.1, Admin, 04:01, 28/02/2005 [ответить] [смотреть все]
  • +/
    Ага, а теперь пробуем загрузить обновления с windowsupdate.microsoft.com с помощью windows xp sp2 + bits2 и получаем по лбу подарочным набором граблей. также засилие ошибок 407 в логах сквида очень разнообразит жизнь при использовании лог-парсеров сквида.
    для более глубокого понимания читать сюда :)
    http://devel.squid-cache.org/ntlm/
     
     
  • 2.5, pablo, 14:36, 28/02/2005 [^] [ответить] [смотреть все] [показать ветку]
  • +/
    Спасибо за комментарии Попробовал установить все обновления Устанавливалось с... весь текст скрыт [показать] [показать ветку]
     
     
  • 3.6, Admin, 14:43, 28/02/2005 [^] [ответить] [смотреть все]  
  • +/
    Не путайте тёплое с мягким SUS никоем образом не равен windowsupdate microsoft ... весь текст скрыт [показать]
     
     
  • 4.7, pablo, 10:29, 01/03/2005 [^] [ответить] [смотреть все]  
  • +/
    А в чем отличие SUS от windowsupdate Сходил на microsoft com в стоке поиска ук... весь текст скрыт [показать]
     
  • 4.8, root, 08:21, 02/03/2005 [^] [ответить] [смотреть все]  
  • +/
    >им всё равно. Use MS ISA(TM).
    или use !IE


     
  • 2.23, Kapitan, 23:23, 28/09/2005 [^] [ответить] [смотреть все] [показать ветку]  
  • +/
    Может я конечно и не прав и сужу с высоты полета своей компании Но я считаю, чт... весь текст скрыт [показать] [показать ветку]
     
  • 1.2, ds_shadof, 09:28, 28/02/2005 [ответить] [смотреть все]  
  • +/
    И что теперь?
     
  • 1.3, ds_shadof, 09:32, 28/02/2005 [ответить] [смотреть все]  
  • +/
    mozilla без каких либо проблем может использовать схему ntlmssp
     
     
  • 2.4, pablo, 14:24, 28/02/2005 [^] [ответить] [смотреть все] [показать ветку]  
  • +/
    Спасибо за дополнение Действительно mozilla и firefox прекрасно аутентифицируют... весь текст скрыт [показать] [показать ветку]
     
  • 1.9, Ivan512, 08:27, 02/03/2005 [ответить] [смотреть все]  
  • +/
    Люди, обьясните в каких случая стоит ставить kerberos? Всегда работаю без неё.
     
  • 1.10, Sem, 11:56, 02/03/2005 [ответить] [смотреть все]  
  • +/
    Да, это все хорошо, но вот если мне надо более гибкую схему проверки по группам?

    С samba2 это все работало так:
    external_acl_type NT_Group ttl=60 %LOGIN /usr/local/libexec/squid/wb_group
    acl InInetGroup external NT_Group Group1
    acl InInetGroup external NT_Group Group2
    и т.д.

    С samba3 такого не получается. Получается только задать жесткую привязку к одной группе, как это описано в статье.

    Может я что-то пропустил?

     
  • 1.11, Finch, 09:57, 03/03/2005 [ответить] [смотреть все]  
  • +/
    Люди, вопрос в тему
    дошёл до вот этого момента: wbinfo -a user%passwd
    Получаю вот что:

    su-2.05b# /usr/local/samba/bin/wbinfo -a user%passwd
    plaintext password authentication failed
    error code was NT_STATUS_NO_SUCH_USER (0xc0000064)
    error messsage was: No such user
    Could not authenticate user user%passwd with plaintext password
    challenge/response password authentication succeeded

    Кто с этим сталкивался? Как обходили?


     
     
  • 2.16, nuHrBuH, 17:55, 20/04/2005 [^] [ответить] [смотреть все] [показать ветку]  
  • +/
    Надо подставлять имя домена в юзернейм Должна получиться строка вида wbinfo -a... весь текст скрыт [показать] [показать ветку]
     
  • 2.24, CMEPTb, 18:01, 27/11/2005 [^] [ответить] [смотреть все] [показать ветку]  
  • +/
    Я с ентой фигней столкнулся У тебя вероятно используется winbind separator ... весь текст скрыт [показать] [показать ветку]
     
  • 1.12, Atomic, 11:45, 03/03/2005 [ответить] [смотреть все]  
  • +/
    Этот вопрос меня очень долго интересует с момента перехода на samba 3!!!!!
     
     
  • 2.13, Finch, 17:21, 03/03/2005 [^] [ответить] [смотреть все] [показать ветку]  
  • +/
    >Этот вопрос меня очень долго интересует с момента перехода на samba 3!!!!!
    >

    Ну а как авторизовываться то тогда????

     
  • 1.14, Atomic, 19:43, 03/03/2005 [ответить] [смотреть все]  
  • +/
    Меня скоро на шампур натянут на работе, если я не разобью по группам пользователей:)
     
  • 1.15, comatoz, 17:48, 11/03/2005 [ответить] [смотреть все]  
  • +/
    По группам получилось авторизовать вот так через группы домена auth_param ... весь текст скрыт [показать]
     
  • 1.17, aleksandrk, 16:03, 15/05/2005 [ответить] [смотреть все]  
  • +/
    Esli server pod Win2003 so vsemi obnovlenijami, to  pomozet tol'ko posledniaja samba 3.0.14a
     
  • 1.18, Zhioorkie, 14:11, 29/05/2005 [ответить] [смотреть все]  
  • +/
    Hi! Check "proxycfg -u" under Windows XP for Windows update to work. BR, Zhioorkie
     
  • 1.19, ponka, 18:24, 30/05/2005 [ответить] [смотреть все]  
  • +/
    Всезнающие помогите, а то уже сил нет. RHEL 4.0 Samba 3.0.10, Squid 1.25. Самбу настроил, Winbind работает, в сквиде прописал аунтификацию. А он (squid) гад не пускает.

    В логе появляется вот такая запись:

    May 30 16:59:06 rhel kernel: audit(1117461546.224:0): avc:  denied  { create } for  pid=833 exe=/usr/sbin/winbindd name=winbindd.log scontext=root:system_r:winbind_t tcontext=root:object_r:samba_log_t tclass=file

    Подскажите где капать.

     
     
  • 2.20, nuHrBuH, 12:08, 17/08/2005 [^] [ответить] [смотреть все] [показать ветку]  
  • +/
    wbinfo -p и wbinfo -t что возвращают?
    Машина в домен вошла нормально? KDC видит? Тикет получила?
    wbinfo -a авторизацию проходит?..
    Мало информации для помощи ;)
     
  • 2.21, nuHrBuH, 12:09, 17/08/2005 [^] [ответить] [смотреть все] [показать ветку]  
  • +/
    И посмотри разрешению на папку, куда winbindd логи кладет. Похоже, просто не может создать лог-файл...
     
  • 1.22, Kapitan, 23:01, 28/09/2005 [ответить] [смотреть все]  
  • +/
    Может кому пригодится. Я на счет слов:
    > Пришлось указывать универсальный идентификатор группы в домене (SID).
    Попробуйте так:
    1) Если используется winbind separator = \ или просто не указывается в конфигурационном файле smb.conf, то --require-membership-of="Domain\\Group"
    2) Если же winbind separator = + , то указвайте --require-membership-of="Domain\+Group"

    В моем случае именно такой синтаксис уберег от прямого использования SID - все-таки так более нагляднее.
    Система: FreeBSD 4.11, Samba 3.0.20,1, domain W2K3

     
  • 1.25, Анатолий, 07:26, 03/12/2007 [ответить] [смотреть все]  
  • +/
    В самбе 3.0.26a столкнулся с такой траблой:
    не join'илась в домен до тех пор пока не прописал доменное имя своего хоста в /etc/hosts
    После этого действия получил заново тикет и только потом приджойнился.
    Так что имейте ввиду - есть такая трабла ;)
     

    Ваш комментарий
    Имя:         
    E-Mail:      
    Заголовок:
    Текст:





      Закладки на сайте
      Проследить за страницей
    Created 1996-2017 by Maxim Chirkov  
    ДобавитьРекламаВебмастеруГИД  
    Hosting by Ihor