The OpenNET Project / Index page

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

Доступ к Subversion репозитрию для пользователей Windows AD (linux cvs subversion apache kerberos ldap auth windows samba)


<< Предыдущая ИНДЕКС Правка src / Печать Следующая >>
Ключевые слова: linux, cvs, subversion, apache, kerberos, ldap, auth, windows, samba,  (найти похожие документы)
From: dan1005 <dan1005@mail.ru.> Newsgroups: email Date: Mon, 5 Jun 2007 14:31:37 +0000 (UTC) Subject: Доступ к Subversion репозитрию для пользователей Windows AD Subversion + Apache2.2 + LDAP + Kerberos (AD) Web-сервер Apache и хранилище Subversion базируются на Debian. Обращение к репозитарию происходит из домена MS. Цель - сделать прозрачный доступ к хранилищу пользователям из домена, с учётом разграничения прав доступа. ПО: * Debian 4.1.1-21 * Apache/2.2.3 * Subversion 1.4.4 * libsasl2-gssapi-mit - пакет, устанавливаемый на Debian * kftgt - пакет, устанавливаемый на Debian. Apache 2.2 модули: * dav_svn.load * libapache2-mod-auth-kerb * authnz_ldap.load * ldap.load На Windows платформе: * Windows Services for UNIX * ADSI Scriptomatic 2.5 * TortoiseSVN 1.4.4 Модули Apache устанавливаются по умолчанию. При использовании Debian это достаточно просто. Например, для dav_svn.load: debian::/# apt-cache search dav_svn libapache2-svn - Subversion server modules for Apache debian::/# aptitude install libapache2-svn Windows Services for UNIX (SFU) устанавливается на контроллере домена. ADSI используется для получения более развёрнутой информации об AD. TortoiseSVN - Клиент Subversion для Windows Для подключения установленных модулей к Apache, при необходимости, нужно сделать символические ссылки: debian:/etc/apache2/mods-enabled# ls -l auth_kerb.load -> ../mods-available/auth_kerb.load ldap.load -> /etc/apache2/mods-available/ldap.load authnz_ldap.load -> /etc/apache2/mods-available/authnz_ldap.load dav.load -> ../mods-available/dav.load dav_svn.conf -> ../mods-available/dav_svn.conf dav_svn.load -> ../mods-available/dav_svn.load Настройка Kerberos Для корректной работы аутентификации через Kerberos необходимо настроить синхронизацию времени web-сервера и контроллера домена (например, используя cron). Настройка клиента Kerberos вполне стандартна (/etc/krb5.conf). Предположим, что имя контроллера домена AD - dc.example.com: [libdefaults] default_realm = EXAMPLE.COM default_keytab_name = FILE:/etc/krb5.keytab default_tgs_enctypes = des-cbc-crc des-cbc-md5 default_tkt_enctypes = des-cbc-crc des-cbc-md5 [realms] EXAMPLE.COM = { kdc = dc.example.com admin_server = dc.example.com } [domain_realm] example.com = EXAMPLE.COM .example.com = EXAMPLE.COM Проверить настройки можно попыткой авторизации доменного пользователя: debian:/# kinit user Password for user@EXAMPLE.COM: debian:/# klist #просмотр выданного билета Ticket cache: FILE:/tmp/krb5cc_0 Default principal: user@EXAMPLE.COM Valid starting Expires Service principal 06/22/07 15:12:36 06/23/07 01:13:38 krbtgt/EXAMPLE.COM@EXAMPLE.COM renew until 06/23/07 15:12:36 Регистрация WEB-сервера в домене Создание и проверка файлов krb5.keytab и apache.keytab. Для работы необходимо зарегистрировать web-сервер в домене и получить для него два ключа: host/debian.example.com@example.com и HTTP/debian.example.com@example.com. Первый ключ нужен для авторизации компьютера по ldap, а второй - для авторизации сервиса HTTP. И хосту и сервису должен быть сопоставлен какой-либо пользователь. Права - минимально-достаточные, для авторизации в домене. Причём, учётную запись авторизующую хост, желательно делать в виде компьютера (контейнер Computers). Например: host_debian, http_debian. На контроллере домена нужно создать ключи, и зарегистрировать сервис HTTP/debian.example.com: C:\> ktpass -princ host/debian.example.com@EXAMPLE.COM -mapuser host_debian@example.com \ -crypto DES-CBC-MD5 -ptype KRB5_NT_PRINCIPAL -mapop set +desonly -pass qwerty -out c:\host_debian.keytab ktpass -princ HTTP/debian.example.com@EXAMPLE.COM -mapuser http_debian@example.com \ -crypto DES-CBC-MD5 -ptype KRB5_NT_PRINCIPAL -mapop set +desonly -pass qwerty -out c:\http_debian.keytab setspn.exe -A HTTP/debian.example.com http_debian Далее необходимо полученные файлы передать на web-сервер, и воспользоваться утилитой ktutil: ktutil: rkt host_debian.keytab ktutil: wkt krb5.keytab ktutil: rkt http_debian.keytab ktutil: wkt apache.keytab Проверить запись можно при помощи команды klist: debian:/# klist -k /etc/krb5.keytab Keytab name: FILE:/etc/krb5.keytab KVNO Principal ------ 11 host/debian.example.com@EXAMPLE.COM После чего желательно убедиться, что ключи работоспособны: kinit -t krb5.keytab -k host/debian.example.com@EXAMPLE.COM kinit -t apache.keytab -k HTTP/debian.example.com@EXAMPLE.COM Обе команды должны отработать тихо и бесшумно. Без вывода каких-либо ошибок на экран. Файлам необходимо дать права на чтение для Apache: chown www-data:www-data /etc/apache.keytab chown www-data:www-data /etc/krb5.keytab Настройка LDAP Настройка Ldap сводится к установке соответствующего модуля и правки конфига /etc/ldap/ldap.conf: BASE DC=EXAMPLE,DC=COM URI ldap://dc.example.com REFERRALS off searchmode:OS ldapservers:dc.example.com binddn:CN=host_debian,CN=Users,DC=EXAMPLE,DC=COM #bindpwd:qwerty # при использовании Kerberos, здесь указывать пароль не потребуется userbasedn:CN=Users,DC=EXAMPLE,DC=COM Конфигурирование Apache Теперь осталось корректно сконфигурировать /etc/apache2/httpd.conf. При условии интеграции Kerberos и LDAP, и работы с хранилищем Subversion, конфиг будет выглядеть следующим образом: <LocationMatch ^/svn/.*> KrbAuthoritative Off # после успешной проверки по Kerberos'у, продолжить проверку на других модулях. AuthType Kerberos # задаём тип авторитизации Krb5Keytab "/etc/apache.keytab" KrbSaveCredentials On KrbDelegateBasic On # разрешаем делегировать данные авторизации KrbMethodNegotiate On # метод аутенфикации, обеспечивающий прозрачный вход из домена KrbServiceName "HTTP/debian.example.com@EXAMPLE.COM" AuthBasicProvider ldap AuthName "Subversion repository" AuthLDAPURL "ldap://DC.EXAMPLE.COM:389/DC=EXAMPLE,DC=COM?userPrincipalName?sub?(objectClass=*)" NONE # поиск аккаунта в хранилище AD, по данным, переданным из Kerberos'a AuthLDAPBindDN "CN=http_debian,CN=Users,DC=EXAMPLE,DC=COM" AuthLDAPBindPassword qwerty # учётные данные, под которыми Apache может биндиться к контроллеру домена <Limit PROPPATCH DELETE MERGE PUT POST MKCOL MKACTIVITY COPY MOVE LOCK UNLOCK> Require ldap-group cn=SVN-WRITE,CN=Users,DC=EXAMPLE,DC=COM </Limit> # разграничение прав доступа с учётом групп безопасности из AD <Limit GET PROPFIND> Require ldap-group cn=SVN-READ,CN=Users,DC=EXAMPLE,DC=COM </Limit> </LocationMatch> <Location /svn> DAV svn SVNPath /home/repository # место положение хранилища Subversion SVNPathAuthz on AuthzSVNAnonymous Off # запрет доступа анонимным пользователям </Location> Дополнительную информацию о параметрах и функциях подключенных модулей Apache, можно получить используя mod_info.so. После подключения модуля, необходимо добавить в /etc/apache2/httpd.conf следующие строки: <Location /info> SetHandler server-info </Location> Доступ к странице возможен по ссылке http://debian.example.com/info

<< Предыдущая ИНДЕКС Правка src / Печать Следующая >>

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




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру