среда, 7 ноября 2012 г.

PhpLDAPAdmin + TLS + Apache SSL (https://)

Для управления сервером openLDAP, IMHO, нет лучшего решения, чем phpldapadmin. Но наша задача настроить не только удобный, но и безопасный инструмент. Самый первый изъян - при стандартной настройке web-сервера данные передаются в не зашифрованном виде, а это очень критично при аутентификации, потому что ваш пароль администратора openLDAP передается по сети в открытом виде. Итак, приступим.


Мы настроим систему таким образом, что не только аутентификация будет проходить через защищённое соединение, но и phpldapadmin будет использовать TLS для соединения с openLDAP.
Установку и настройку будем производить в CentOS 6. Установим apache, php и php-ldap:

[root@server ~]# yum install httpd php php-ldap

Далее настроим шифрованное соединение с нашим web-сервером(https://). Для этого установим пакет mod_ssl:

[root@server ~]# yum install mod_ssl

Создадим каталог и сформируем ключи для безопасного соединения, которые будут лежать в созданном каталоге:

[root@server ~]# mkdir /etc/httpd/ssl
[root@server ~]# cd /etc/httpd/ssl
[root@server ssl]# openssl req -x509 -nodes -days 3650 -newkey rsa:2048 -out /etc/openldap/certs/slapdcert.pem -keyout /etc/openldap/certs/slapdkey.pem

Теперь настроим apache на использование этих ключей. В файле /etc/httpd/conf.d/ssl.conf в секции делаем такие изменения:

SSLEngine on
SSLCertificateFile /etc/httpd/ssl/slapdcert.pem
SSLCertificateKeyFile /etc/httpd/ssl/slapdkey.pem

Теперь приступим к установке и настройке phpldapadmin. Можно пойти простым путём и установить пакет из репозитория epel, но я считаю, что web-приложения от этого только теряют, поскольку исправления и новшества этих проектов медленно попадают в репозитории(если вообще попадают).
Скачиваем последний доступный архив с оф.сайта и распаковываем в удобную для вас директорию, например, /var/www/html:

[root@server ~]# cd /var/www/html
[root@server html]# wget http://sourceforge.net/projects/phpldapadmin/files/latest/download?source=files
[root@server html]# tar -xf phpldapadmin-1.2.3.tgz
[root@server html]# mv phpldapadmin-1.2.3 phpldapadmin

Копируем файл config.php.example в config.php

[root@server html]# cd /var/www/html/phpldapadmin/config
[root@server config]# cp config.php.example config.php

Внесём изменения в файл config.php:

$servers->SetValue('server','name','My LDAP Server');
$servers->SetValue('server','host','ldap_server_ip');
$servers->SetValue('server','port','389');
$servers->SetValue('server','attr','dn');
$servers->SetValue('server','tls',true);

Обратите внимание, что в файле config.php эти опции могут быть определены, но иметь другое значение, поэтому исправьте их, а не добавляйте новые.
Теперь создадим файл phpldapadmin.conf в каталоге /etc/httpd/conf.d и наполним его таким содержимым:

Alias /phpldapadmin /var/www/html/phpldapadmin/

<Directory /usr/share/phpldapadmin/htdocs>
Order Deny,Allow
Deny from all
Allow from all
</Directory>

Теперь для того, чтобы phpldapadmin соединялся с openLDAP используя TLS, необходимо добавить добавить такую опцию в /etc/openldap/ldap.conf

TLS_REQCERT allow

И наконец, добавим сервер apache в автозагрузку и запустим его

[root@server ~]# chkconfig httpd on
[root@server ~]# /etc/init.d/httpd start

Теперь можете зайти на страничку по адресу https://ваш_сервер/phpldapadmin и войти под аккаунтом администратора.

P.S. При создании аккаунта samba-пользователя, имя аккаунта будет вида cn=username. Мне это неудобно и для меня необходимо вида uid=username. Если это важно и для вас, то для этого нужно в файле /var/www/html/phpldapadmin/templates/creation/sambaSamAccount.xml строку <rdn>cn</rdn> заменить на <rdn>uid</rdn>.

Комментариев нет:

Отправить комментарий