Устанавливаем DACS::Журнал СА 9.2006
www.samag.ru
     
Поиск   
              
 www.samag.ru    Web  0 товаров , сумма 0 руб.
E-mail
Пароль  
 Запомнить меня
Регистрация | Забыли пароль?
Журнал "Системный администратор"
Журнал «БИТ»
Наука и технологии
Подписка
Где купить
Авторам
Рекламодателям
Архив номеров
Контакты
   

  Опросы
  Статьи

Электронный документооборот  

5 способов повысить безопасность электронной подписи

Область применения технологий электронной подписи с каждым годом расширяется. Все больше задач

 Читать далее...

Рынок труда  

Системные администраторы по-прежнему востребованы и незаменимы

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

 Читать далее...

Учебные центры  

Карьерные мечты нужно воплощать! А мы поможем

Школа Bell Integrator открывает свои двери для всех, кто хочет освоить перспективную

 Читать далее...

Гость номера  

Дмитрий Галов: «Нельзя сказать, что люди становятся доверчивее, скорее эволюционирует ландшафт киберугроз»

Использование мобильных устройств растет. А вместе с ними быстро растет количество мобильных

 Читать далее...

Прошу слова  

Твердая рука в бархатной перчатке: принципы soft skills

Лауреат Нобелевской премии, специалист по рынку труда, профессор Лондонской школы экономики Кристофер

 Читать далее...

1001 и 1 книга  
19.03.2018г.
Просмотров: 9885
Комментарии: 0
Потоковая обработка данных

 Читать далее...

19.03.2018г.
Просмотров: 8097
Комментарии: 0
Релевантный поиск с использованием Elasticsearch и Solr

 Читать далее...

19.03.2018г.
Просмотров: 8198
Комментарии: 0
Конкурентное программирование на SCALA

 Читать далее...

19.03.2018г.
Просмотров: 5194
Комментарии: 0
Машинное обучение с использованием библиотеки Н2О

 Читать далее...

12.03.2018г.
Просмотров: 5872
Комментарии: 0
Особенности киберпреступлений в России: инструменты нападения и защита информации

 Читать далее...

Друзья сайта  

 Устанавливаем DACS

Архив номеров / 2006 / Выпуск №9 (46) / Устанавливаем DACS

Рубрика: Веб /  Веб

Сергей Яремчук СЕРГЕЙ ЯРЕМЧУК, фрилансер. Автор более 800 статей и шести книг. С «СА» с первого номера. Интересы: сетевые технологии, защита информации, свободные ОС

Устанавливаем DACS

Настройка DACS, системы контроля доступа к веб-ресурсам, – дело не простое. Поэтому разберем, как установить ее в минимальной конфигурации, а заодно посмотрим на нее в работе.

Со времени публикования первой части статьи [1] ничего не изменилось. Текущей версией по-прежнему является 1.4.13а. Проект придерживается строгих правил, распространяя только исходные тексты DACS, и рекомендует полностью пересобрать всю систему с их помощью. Прекомпилированные пакеты удалось найти только на сайте проекта OMSE [2]. Хотя здесь доступна версия DACS 1.4.11, собранная для Debian 3.1 и Fedora Core 4, которые шли в качестве приложения к статье «DACS: Nur fur Mitglieder» в немецком журнале для IT-профессионалов IX (http://www.heise.de/ix). Версии 1.4.11 и 1.4.13а имеют отличия, но если цель – знакомство с системой DACS, то первоначально можно воспользоваться и этими пакетами. Это позволит сосредоточиться больше на изучении функциональности, чем на настройке. Мы же не ищем легких путей и будем устанавливать DACS с исходных текстов.

Компоненты, необходимые для работы DACS

Для установки, кроме самого DACS, понадобятся исходные тексты либо заголовочные devel-пакеты:

  • веб-сервер Apache, рекомендуемыми версиями являются 2.0.58 или 2.2.2, с последней DACS начал работать с 1.4.13а, и еще не до конца протестирован, поэтому, вполне вероятно, возникнут проблемы при установке и работе (по крайней мере, у меня они были).
  • библиотека OpenSSL, разработчики рекомендуют 0.9.8b, хотя и с 0.9.8а проблем не было.
  • библиотека синтаксического анализа XML Expat, рекомендуемой версией является 2.0.

Кроме того, в зависимости от требуемой функциональности вам могут понадобиться и другие пакеты, установка которых опциональна. Так, если планируется сохранение конфигурации в базе данных, то потребуется Berkeley DB, gdbm или ndbm. Для включения NTLM понадобится пакет Samba, а возможность работы с LDAP или Active Directory реализуется посредством пакета OpenLDAP. Но при первой настройке лучше всего ограничиться только базовым набором, постепенно разобравшись с настройками, уже можно установить полнофункциональную систему.

Устанавливаем основные компоненты

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

$ cd openssl-0.9.8a/

$./config --prefix=/opt/openssl

$ make; make test

# make install

Теперь очередь веб-сервера. Конфигурировать его необходимо с опцией --enable-ssl, остальные опции по необходимости. Чтобы не повлиять на работу основного Apache, тестовую версию советую установить в отдельный каталог.

$ cd apache-2.0.58

$./configure --enable-ssl --with-ssl=/opt/openssl --prefix=/opt/apache2

После чего стандартные make и make install. По умолчанию поддержка SSL компилируется статически, проверить встроенные модули можно командой:

# /opt/apache2/bin/apachectl –l

mod_so.c

mod_ssl.c

Если поддержка SSL компилировалась как динамически загружаемый модуль (Dynamic Shared Object), то при дальнейшей настройке необходимо проследить, чтобы при помощи директивы LoadModule в файле веб-сервера httpd.conf, mod_ssl загружался перед mod_auth_dacs. Иначе вы получите ошибку при запуске. Хотя настройкой Apache займемся чуть позже.

Теперь для веб-сервера необходимо сгенерировать сертификаты и ключи:

# /opt/openssl/bin/openssl req -config /opt/openssl/openssl.cnf -new -x509 -keyout gw-ca.pem -out gw-ca.pem -days 365

Generating a 1024 bit RSA private key

.......++++++

writing new private key to 'gw-ca.pem'

Далее выбираем пароль и отвечаем на стандартные вопросы скрипта (страна, организация, почтовый адрес и пр.). Разделяем ключ и сертификат, убираем пароль с ключа:

# /opt/bin/openssl rsa -in gw-ca.pem -out gw-ca.key

Enter pass phrase for gw-ca.pem:

writing RSA key

# /opt/ openssl/bin/openssl x509 -in gw-ca.pem -out gw-ca.crt

И копируем сертификат и ключ на свое место:

# cp gw-ca.crt /opt/apache2/conf/server.crt

# cp gw-ca.key /opt/apache2/conf/server.key

Все настройки SSL по умолчанию описываются в секции:

<IfModule mod_ssl.c>

    Include /opt/conf/ssl.conf

</IfModule>

Если заглянуть в файл ssl.conf, в нем файлы сертификата и ключа указываются следующими переменными:

SSLCertificateFile /opt/apache2/conf/ssl.crt/server.crt

SSLCertificateKeyFile /opt/apache2/conf/ssl.key/server.key

После этих действия Apache должен нормально работать через SSL, для чего соединяемся при помощи браузера или telnet к 443 порту.

Теперь Expat. Здесь все стандартно.

$ cd expat-2.0.0

$ ./configure --prefix=/opt/expat; make

# make install

После чего следует добавить путь к библиотеке /opt/expat/lib в файл /etc/ld.so.conf и дать команду:

# /sbin/ldconfig

Установка модуля и утилит DACS

Распаковываем архив с исходными текстами. Конфигурационный скрипт находится в подкаталоге src. Для просмотра всех опций конфигурирования вводим.

$ cd dacs-1.4.13a

$ src/configure --help

Опций много, необходимости в выборе всех нет. Я использовал следующие параметры при конфигурировании:

$ src/configure --with-ssl=/opt/openssl --with-expat=/opt/expat \

    --with-apache=/opt/apache2 --enable-unix-auth --enable-debug \

    --enable-apache-auth --enable-native-auth --prefix=/opt/dacs \

    --enable-ndbm=no --enable-bdb=no

Опции with-ssl, with-expat и with-apache указывают на каталоги, в которых установлены соответствующие приложения, а prefix – куда требуется установить DACS. Все виды аутентификации можно включить при помощи параметра enable-all-auth, сейчас все возможности нам не нужны, поэтому включаем аутентификацию UNIX и Apache опциями enable-unix-auth, enable-native-auth и enable-apache-auth. По умолчанию поддержка ndbm и Berkeley DB включена, и если они не установлены в системе, при конфигурировании будет выдана ошибка, поэтому отключаем их поддержку. Если все прошло нормально, строим зависимости:

$ gmake depend

Кстати, теперь можно получить помощь по компиляции mod_auth_dacs, вызвав make help. Модуль mod_auth_dacs можно построить с тремя возможными параметрами, добавляющими информацию о DACS в строку ответа сервера. Для включения вывода всей информации используйте make tag, для частичной – make smalltag, и для того чтобы в ответе не было упоминания о работе DACS – make notag. Я пробовал при помощи Google проверить, на скольких серверах установлен DACS, и нашел только один сервер. Получается два варианта, либо DACS малоизвестен, либо собирается с опцией notag, как более безопасной.

$ gmake smalltag

# gmake install

Скрипт сначала запрашивает пользователя и группу владельцев файлов DACS.

Which user name/id should own DACS files [sergej]? apache2

Which group name/id should own DACS files [www]? apache2    

 

  /opt/dacs/lib

/etc/ld.so.conf

NOTES:

* /opt/apache2/cgi-bin/dacs/local_unix_authenticate may need to be

  setuid or setgid in order to check passwords:

    chown root /opt/apache2/cgi-bin/dacs/local_unix_authenticate

    chmod u+s /opt/apache2/cgi-bin/dacs/local_unix_authenticate

* /opt/apache2/cgi-bin/dacs/local_apache_authenticate may need to be

  setuid or setgid in order to check passwords:

    chgrp www /opt/apache2/cgi-bin/dacs/local_apache_authenticate

    chmod g+s /opt/apache2/cgi-bin/dacs/local_apache_authenticate

* Run 'make install-autologin' if you require autologin

* Check that /opt/dacs/man is on your MANPATH

* DACS version info:

  number="1.4"

  release="1.4.13a"

  date="Release date 2-Jun-06 12:12:28"

  revid="$Id: dacs-stamp-h 1218 2006-06-02 19:15:04Z brachman $"

  other="Expat 2.0.0, OpenSSL 0.9.8a 11 Oct 2005, Apache 2.0.58"

Последний вывод получен при помощи утилиты version, которая доступна так же, как веб-сервис dacs_version, позволяющая проверить версию DACS и опции конфигурирования. Ее можно вызвать отдельно:

# /opt/dacs/bin/version -v

После установки убедитесь, что в httpd.conf добавилась строка, загружающая модуль mod_auth_dacs.so.

# cat httpd.conf | grep LoadModule

LoadModule auth_dacs_module   modules/mod_auth_dacs.so

Теперь можно запустить веб-сервер и проверить правильность работы модуля.

# /opt/apache2/bin/apachectl start

Сделать это можно несколькими способами.

Журнал работы веб-сервера является самым простым способом, в нем должна появиться такая запись:

[Wed Jun 14 10:33:00 2006] [notice] Apache/2.0.58 (Unix)

mod_ssl/2.0.58 OpenSSL/0.9.8a mod_auth_dacs/1.4.13a configured -- resuming normal operations

Еще для проверки работы с SSL в комплекте DACS имеется утилита sslclient, позволяющая подсоединиться к веб-ресурсу по SSL и получить необходимую информацию.

#  /opt/dacs/bin/sslclient testserver.net:443

Все, сервер работает, осталось только указать на каталоги, которые будут защищены DACS. В «DACS Quick Start Tutorial» для DACS настроен виртуальный сервер, мы тоже поступим аналогичным образом, так легче разобраться, что, где и как. Создадим виртуальный сервер testdacs.net, который будет слушать на 8080 порту. Для этого добавим в httpd.conf следующие строки:

<Directory /opt/dacs/www/*>

  Options Indexes FollowSymLinks

  Order allow,deny

  Allow from all

</Directory>

# Настраиваем виртуальный сервер и делаем доступными каталоги DACS

NameVirtualHost 127.0.0.1:8080

Listen 127.0.0.1:8080

<VirtualHost 127.0.0.1:8080>

ServerName testdacs.net

DocumentRoot "/opt/dacs/www/"

ErrorLog "/opt/dacs/logs/error_log"

TransferLog "/opt/dacs/logs/access_log"

ScriptAlias /cgi-bin/ "/opt/apache2/cgi-bin/dacs/"

Alias /css "/opt/dacs/www/css/"

Alias /icons/  "/opt/apache2/icons/"

Alias /dacs     "/opt/dacs/www/"

Alias /dtd-xsd  "/opt/dacs/www/dtd-xsd/"

Alias /examples "/opt/dacs/www/examples/"

Alias /handlers "/opt/dacs/www/handlers/"

Alias /man      "/opt/dacs/www/man/"

Alias /misc     "/opt/dacs/www/misc/"

Alias /mod      "/opt/dacs/www/mod/"

</VirtualHost>

Конфигурирование DACS

В качестве примера создадим одну федерацию, назовем ее DACSTEST и сопоставим ее с доменом testdacs.net. Для упрощения федерация будет состоять из одной юрисдикции – FIRST. Во время работы DACS использует два файла: site.conf и dacs.conf. Первый является опциональным, в нем хранится информация обо всех федерациях, расположенных на узле. Второй dacs.conf может описывать федерацию, юрисдикцию, узел. Каждый указанный элемент может иметь свой файл dacs.conf со своими настройками, или на узле может использоваться всего один dacs.conf, в котором все свалено в кучу. Разработчики рекомендуют использовать утилиту install, которая имеется в большинстве дистрибутивов. С ее помощью очень удобно контролировать права доступа к объектам, а DACS очень чувствительный к этим параметрам. Если такой утилиты нет, в комплекте имеется скрипт src/conftools/install-sh. Как вариант можно использовать стандартные утилиты cp, chown, chgrp и chmod, хотя это не так наглядно и можно допустить ошибку. Обратите внимание, что мы используем пользователя/группу apache2/apache2, от имени которых работает веб-сервер. Скопируем шаблонный файл site.conf-std на свое место.

# install -g apache2 -m 0640 /opt/dacs/federations/site.conf-std /opt/dacs/federations/site.conf

Файл хорошо комментирован, многие параметры понятны, поэтому трогать его не будем. На время тестирования можно отключить SSL, установив директиву SECURE_MODE в off, но в рабочей системе, естественно, она должна быть включена.

Обратите внимание на каталоги, в которых должны храниться настройки, они описаны как:

${Conf::FEDERATIONS_ROOT}/${Conf::FEDERATION_DOMAIN}/${Conf::JURISDICTION_NAME}

То есть в нашем случае полный путь должен быть такой – /opt/dacs/federations/testdacs.net/FIRST/.

Создадим файл dacs.conf для федерации.

# install -g apache2 -m 0660 /dev/null /opt/dacs/federations/dacs.conf

Теперь каталоги, в которых будут храниться все ассоциативные настройки федерации и юрисдикции FIRST.

# install -d -g apache2 -m 0770 /opt/dacs/federations/testdacs.net/

# install -d -g apache2 -m 0770 /opt/dacs/federations/testdacs.net/FIRST

Все списки контроля доступа и revocation list юрисдикции по умолчанию хранятся в подкаталоге acl, и они должны существовать.

# install -d -g apache2 -m 0770 /opt/dacs/federations/testdacs.net/FIRST/acls

# install -g apache2 -m 0660 /dev/null /opt/dacs/federations/testdacs.net/FIRST/acls/revocations

В подкаталогах groups записывается вся информация о том, кто состоит в юрисдикции (FIRST) и федерации (DACS).

# install -d -g apache2 -m 0770 /opt/dacs/federations/testdacs.net/FIRST/groups \

    /opt/dacs/federations/testdacs.net/FIRST/groups/FIRST \

    /opt/dacs/federations/testdacs.net/FIRST/groups/DACS

Файл jurisdictions.grp описывает все юрисдикции, входящие в федерацию, в случае внесения изменений в этот файл он должен быть скопирован во все юрисдикции.

# install -g apache2 -m 0660 /dev/null /opt/dacs/federations/testdacs.net/FIRST/groups/DACS/jurisdictions.grp

Добавим в созданный jurisdictions.grp информацию о нашей юрисдикции.

<groups xmlns="http://dss.ca/dacs/v1.4">

 <group_definition jurisdiction="FIRST" name="jurisdictions"

     mod_date="Tue, 26-Jun-2006 12:00:00 GMT" type="public">

   <group_member jurisdiction="FIRST" name="DACS" type="meta"

     alt_name="My First Test Jurisdiction"

     dacs_url="http://testdacs.net:8080/cgi-bin/dacs"

     authenticates="yes" prompts="no"/>

 </group_definition>

</groups>

А в /opt/dacs/federations/dacs.conf данные о федерации и юрисдикции.

<Configuration xmlns="http://dss.ca/dacs/v1.4.13а">

 <Default>

   FEDERATION_DOMAIN "testdacs.net"

   FEDERATION_NAME "DACSTEST"

   LOG_LEVEL "info"

 </Default>

 <Jurisdiction uri="testdacs.net">

   JURISDICTION_NAME "FIRST"

 </Jurisdiction>

</Configuration>

В примере адрес федерации и юрисдикции совпадает, разделение идет на уровне ресурсов. Как вариант можно разделять на юрисдикции при помощи разных доменов, например first.testdacs.net. Чтобы не создавать множество конфигурационных файлов, создадим для FIRST/dacs.conf символическую ссылку:

# ln -s /opt/dacs/federations/dacs.conf /opt/dacs/federations/ testdacs.net/FIRST/dacs.conf

Проверяем настройки

Для этого в комплекте DACS идет специальная утилита conf, которая выведет результат слияния всех этих файлов.

# /opt/dacs/bin/conf  -u testdacs.net –q

<Jurisdiction uri="testdacs.net">

JURISDICTION_NAME "FIRST"

FEDERATION_DOMAIN "testdacs.net"

AUTH_ERROR_HANDLER "* url /handlers/auth_failed.html"

HTTP_PROG "/opt/dacs/bin/http"

VERIFY_IP "no"

AUTH_SUCCESS_HANDLER "url /handlers/auth_ok.html"

AUTH_CREDENTIALS_DEFAULT_LIFETIME_SECS "43200"

FEDERATION_NAME "DACSTEST"

DTD_BASE_URL "/dtd-xsd"

XSD_BASE_URL "/dtd-xsd"

PASSWORD_DIGEST "SHA1"

SSL_PROG "/opt/dacs/bin/sslclient"

SSL_PROG_CA_CRT "/opt/apache2/conf/ssl.crt/server.crt"

SIGNOUT_HANDLER "url /handlers/signout_ok.html"

ALLOW_HTTP_COOKIE "no"

AUTH_FAIL_DELAY_SECS "2"

ACS_ERROR_HANDLER "* /handlers/acs_failed.html"

SECURE_MODE "on"

COOKIE_PATH "/"

NAME_COMPARE "case"

LOG_FILE "/opt/dacs/logs/FIRST-28-Jul»-06.log"

LOG_FILTER "filename exact DEBUG "crypto.c""

LOG_LEVEL "info"

LOG_SENSITIVE "no"

NOTICES_ACCEPT_HANDLER "/handlers/notices_accepted.html"

NOTICES_DECLINE_HANDLER "/handlers/notices_declined.html"

NOTICES_ACK_HANDLER ""

NOTICES_SECURE_HANDLER "yes"

NOTICES_WORKFLOW_LIFETIME_SECS "120"

NOTICES_NAT_NAME_PREFIX "NAT-DACS"

VFS "[dtds]dacs-fs:/opt/dacs/www/dtd-xsd"

VFS "[federation_keys]dacs-fs:/opt/dacs/federations/testdacs.net/federation_keyfile"

VFS "[jurisdiction_keys]dacs-fs:/opt/dacs/federations/testdacs.net/FIRST/jurisdiction_keyfile"

VFS "[revocations]dacs-fs:/opt/dacs/federations/testdacs.net/FIRST/acls/revocations"

VFS "[acls]dacs-fs:/opt/dacs/federations/testdacs.net/FIRST/acls"

VFS "[dacs_acls]dacs-fs:/opt/dacs/acls"

VFS "[groups]dacs-fs:/opt/dacs/federations/testdacs.net/FIRST/groups"

VFS "[passwds]dacs-kwv-fs:/opt/dacs/federations/testdacs.net/FIRST/passwd"

VFS "[roles]dacs-kwv-fs:/opt/dacs/federations/testdacs.net/FIRST/roles"

AUTH_AGENT_ALLOW_ADMIN_IDENTITY "no"

LOG_FORMAT "[%t] [%l] [%p,%c,%F] [%sp:"%sm"]"

STATUS_LINE "off"

</Jurisdiction>

Параметры понятны. Обратите внимание на установленное по умолчанию время жизни credentials, которое составляет 43200 секунд – 12 часов, и на отключенную проверку IP-адреса в credentials.

Создаем ключи

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

#  install -g apache2 -m 0660 /dev/null /opt/dacs/federations/testdacs.net/federation_keyfile

# /opt/dacs/bin/mkkey -u testdacs.net -q /opt/dacs/federations/testdacs.net/federation_keyfile

Please check ownership and mode of

'/opt/dacs/federations/testdacs.net/federation_keyfile'

Проверяем созданный ключ.

# cat /opt/dacs/federations/testdacs.net/federation_keyfile

<crypt_keys fed_id="27-Jul»-2006@19:33:57, 3375dd487ad8bb2430b37da395ecb2eb4290dbc2"

auth_key="p3CEHQymtQi/PJJXW7/nm0" hmac_key="…UA/../" private_key="..."/>

Все нормально. Повторяем процедуру для юрисдикции, но с другими опциями mkkey.

# install -g apache2 -m 0660 /dev/null /opt/dacs/federations/testdacs.net/FIRST/jurisdiction_keyfile

# /opt/dacs/bin/mkkey -uj FIRST /opt/dacs/federations/testdacs.net/FIRST/jurisdiction_keyfile

Please check ownership and mode of

'/opt/dacs/federations/testdacs.net/FIRST/jurisdiction_keyfile'

Списки доступа для новой юрисдикции

В папке /opt/dacs/acls сейчас лежат списки контроля доступа, используемые DACS по умолчанию. Эти правила в основном описывают параметры для стандартных веб-ресурсов. Трогать их не рекомендуется, для того чтобы переопределить правило, следует поместить файл с таким же именем в подкаталог acl юрисдикции.

Например, правило acl-prenv.0 разрешает доступ к cgi-скрипту prenv, выдающему информацию о рабочем окружении только администратору. Поэтому попытка запуска этого скрипта выдаст ошибку 403. Выглядит правило так:

<acl_rule>

    <services>

      <service url_expr='"${Conf::dacs_cgi_bin_prefix}/prenv"'/>

    </services>

    <rule order="allow,deny">

     <allow>

        dacs_admin()

     </allow>

    </rule>

</acl_rule>

Давайте разрешим всем просматривать эту информацию. Для этого создадим файл acl-prenv.0, переопределяющий это правило.

# install -g apache2 -m 0660 /dev/null /opt/dacs/federations/FIRST/acls/acl-prenv.0

И поместим в него следующие строки.

<acl_rule>

  <services>

    <service url_expr='"${Conf::dacs_cgi_bin_prefix}/prenv"'/>

  </services>

  <rule order="allow,deny">

    <allow>

      user("any")   # то есть всем

    </allow>

  </rule>

</acl_rule>

И чтобы модуль веб-сервера знал о том, что ему контролировать в конец секции VirtualHost, которую мы создали ранее в файле httpd.conf, запишем следующие строки (параметры -t -v позволяют вывести отладочную информацию, которая вам понадобится).

AddDACSAuth dacs-acs /opt/dacs/bin/dacs_acs "-t -v"

SetDACSAuthMethod dacs-acs external

SetDACSAuthConf dacs-acs "/opt/dacs/federations/dacs.conf"

<Location /cgi-bin/dacs>

  AllowOverride AuthConfig

  Require valid-user

  Options ExecCGI

  AuthType DACS

  AuthDACS dacs-acs

</Location>

И перезапускаем Apache:

# /opt/apache2/bin/apachectl restart

Если набрать в веб-браузере «http://testdacs.net:8080/cgi-bin/dacs/prenv», вы должны увидеть результат работы скрипта. Причем к некоторым другим скриптам, лежащим в этом же каталоге, получить доступ вам не удастся, так как они защищены правилом acl-dacs.0, позволяющим работать с ними только пользователю с правами администратора.

Регистрация пользователя

Теперь заставим пользователя регистрироваться. Как уже говорилось в первой части, DACS поддерживает несколько методов аутентификации, в том числе и свой. Изменим описание юрисдикции в файле dacs.conf, добавив в него данные, позволяющие осуществлять аутентификацию при помощи паролей UNIX.

<Jurisdiction uri="testdacs.net">

   JURISDICTION_NAME "FIRST"

      <Auth id="passwd">

          URL "http://testdacs.net:8080/cgi-bin/dacs/local_unix_authenticate"

         STYLE "pass"

         CONTROL "sufficient"

      </Auth>

 </Jurisdiction>

Для регистрации используем подготовленную HTML-форму (см. рис. 1), доступную по адресу http://testdacs.net:8080/examples/login.html, где вводим системный логин и пароль. Как вариант можно использовать аутентификацию DACS, заменив в файле строку local_unix_authenticate на local_passwd_authenticate.

Рисунок 1. HTML-форма для регистрации пользователей DACS

Рисунок 1. HTML-форма для регистрации пользователей DACS

Для создания пароля DACS применяется утилита dacspasswd, роль ее аналогична команде htpasswd, предназначенной для работы с паролями пользователей веб-сервера Apache. Создадим файл, в котором будут храниться пароли пользователей юрисдикции.

# install -g apache2 -m 0660 /dev/null /opt/dacs/federations/testdacs.net/FIRST/passwd

И теперь пароль для пользователя sergej.

# /opt/dacs/bin/dacspasswd -u testdacs.net -q -a sergej

New password for sergej?

Re-type new password for sergej?

Посмотрим, что получилось.

# cat /opt/dacs/federations/testdacs.net/FIRST/passwd

sergej:2|6Jc.6GFAiA15Rq6X|VbGuYg3H05MU4zzz4fCsvd1bqb1

Теперь пробуем зайти с новыми данными. Если все нормально, то вам будет выведена страница handlers/auth_ok.html (см. рис. 2), где вы можете просмотреть полученный credentials.

Рисунок 2. Вид страницы при успешной регистрации

Рисунок 2. Вид страницы при успешной регистрации

Вот он:

DACS:DACSTEST::FIRST:sergej=y/ZPRm4Yh………………убрано……………..mOikAoE

Если заглянуть внутрь cookie, то можно увидеть только имя пользователя в формате DACS, остальная информация зашифрована. При помощи утилиты cookie расшифруем полученный credentials.

#  /opt/dacs/bin/cookie -u testdacs.net -decrypt < cookie

federation='DACSTEST'

DACS username='FIRST:sergej'

ip_address=''

roles=''

expires_secs='1154148374'

auth_style='generated'

valid_for='acs'

version='1.4'

В файле acl-prenv.0 изменим user("any") на user("auth"). Если параметр изменяется в конфигурационном файле Apache, то для того чтобы он вступил в силу, требуется перезапуск веб-сервера. При правке файлов DACS изменения будут актуальны уже при следующем запросе, поэтому перезапускать ничего не надо. Попробуем теперь получить доступ к prenv без регистрации, авторизовавшись в системе. В последнем случае credential делает свое дело, и мы получаем доступ к требуемому ресурсу.

Загляни в журнал

При настройках, описанных в статье, DACS будет вести четыре файла журнала, которые расположены в каталоге /opt/dacs/logs. Три файла описывают все события, а файл, имя которого начинается с FIRST и далее текущая дата, поможет разобраться с происшедшим в конкретной юрисдикции. В режиме отладки выдается большое количество информации, которая при внимательном анализе поможет разобраться с проблемой.

Например, такая запись при наличии самого файла:

[Wed Jun 14 10:34:25 2006] [error] [8578,18,-] [dacs_acs:"conf"] Could not load config file '/opt/dacs/etc/dacs.conf'

может свидетельствовать о том, что после правки изменились права доступа, и модуль DACS не может его прочитать.

Если пользователь не допущен, система проинформирует администратора.

[Fri Jul 28 18:57:12 2006] [notice] [8145,266,A]

[dacs_acs:"dacs_acs"] *** Access denied to unauthenticated user (FkA74G32) for /cgi-bin/dacs/prenv

Или, например, когда DACS не нашел описание ресурса (требуется testdacs.net).

[Thu Jul 27 18:43:32 2006] [error] [8459,1,-]

[dacs_version:"conf"] Could not find config in

"/opt/dacs/federations/dacs.conf" using service URI

http://localhost:8080/cgi-bin/dacs/dacs_version

Вместо заключения

Несмотря на то что DACS уже установлен и работает, чтобы окончательно в нем разобраться, потребуется провести не один эксперимент, меняя параметры и отслеживая реакцию системы. Здесь открываются большие просторы для творчества. Следует добавить еще юрисдикций, хотя бы одну федерацию, передать между ними пользователя, поэкспериментировать с revocations list, несколькими пользователями, ролями. Только так можно будет ощутить мощь и гибкость этой системы. Успехов.

  1. Яремчук С. Контролируем доступ к веб-сервису с помощью DACS.//Системный администратор, № 8, 2006 г. – C. 74-78. – http://www.samag.ru/cgi-bin/go.pl?q=articles;n=08.2006;a=13.
  2. Сайт проекта OMSE – http://www.omse.de/download/download-dacs-ix-07-2006.shtml.en.
  3. Сайт DACS – http://dacs.dss.ca.
  4. Сайт проекта Apache – http://httpd.apache.org.
  5. Сайт OpenSSL – http://www.openssl.org.
  6. Сайт Expat – http://expat.sourceforge.net.
  7. Базы данных, которые могут использоваться с DACS – Berkeley DB: http://dev.sleepycat.com/downloads/latestreleases.html; gdbm (она может компилироваться в режиме совместимости с ndbm): ftp://ftp.gnu.org/gnu/gdbm.
  8. Сайт проекта Samba – http://www.samba.org.
  9. Сайт проекта OpenLDAP - http://www.openldap.org.

Комментарии отсутствуют

Добавить комментарий

Комментарии могут оставлять только зарегистрированные пользователи

               Copyright © Системный администратор

Яндекс.Метрика
Tel.: (499) 277-12-41
Fax: (499) 277-12-45
E-mail: sa@samag.ru