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.
Цель - сделать прозрачный доступ к хранилищу пользователям из домена, с
учётом разграничения прав доступа.
* 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, при необходимости, нужно
сделать символические ссылки:
Для корректной работы аутентификации через Kerberos необходимо настроить
синхронизацию времени web-сервера и контроллера домена (например,
используя cron).
Настройка клиента Kerberos вполне стандартна (/etc/krb5.conf).
Предположим, что имя контроллера домена AD - dc.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:
Настройка Ldap сводится к установке соответствующего модуля и правки
конфига /etc/ldap/ldap.conf:
BASE DC=EXAMPLE,DC=COM
URI ldap://dc.example.com
REFERRALS off
searchmodeS
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
следующие строки:
Доступ к странице возможен по ссылке http://debian.example.com/info
1216 Прочтений • [Доступ к Subversion репозитрию для пользователей Windows AD (linux cvs subversion apache kerberos ldap auth windows samba)] [08.05.2012] [Комментариев: 0]