1. Настройка модуля Битрикс LDAP/AD
2. Настойка Ubuntu 8.0.4 LTS - для пользователей
3. Настойка Fedora 12 - для тех, кто использует пакет
4. Настройка интернет-браузеров для использования механизма SSO
[spoiler]
Настройка модуля Битрикс LDAP/AD
Эта часть конфигурации обязательна для всех пользователей Битрикс на платформе Линукс и описана в
Необходимые замечания:
При установке корпортала можно запустить конфигурацию модуля AD/LDAP с помощью check-box'а "Разрешить пользователям Active Directory авторизовываться на портале..."
При этом потребуется заполнить данные AD сервера и доступа и проверить правильность (соответствующей кнопкой)
А также определить "Соответствие групп пользователей" в домене и на Корпортале
После установки корпортала необходимо в "Настройки AD/LDAP" проверить (при необходимости заполнить) поле "Мнемонический код (префикс при авторизации)"
В настройках модуля AD/LDAP необходимо установить (желательно большое) число в поле "Ограничение по количеству одновременно выбираемых LDAP записей", отметить "Использовать NTLM авторизацию" и выбрать значение "Сервер Active Directory" в качестве сервера домена по умолчанию:
2. Настойка Ubuntu 8.0.4 ("Виртуальная машина Битркс 1.5")
Установка и конфигурация необходимых пакетов и служб (samba, winbind, kerberos):
# aptitude install -y system-config-samba samba-client winbind krb5-config krb5-user |
При установки пакетов kerberos увидим следующее меню конфигурации
- конфигурацию проведём позже, просто нажимаем "Enter" и установка продолжится.
Сетевая конфигурация сервера (office.ru - название нашего домена, 192.168.0.143 - IP-адрес виртуальной машины, vmb143.office.ru -имя нашей ВМ в домене)
# echo "search office.ru domain office.ru" >> /etc/resolv.conf # echo " 192.168.0.143 vmb143.office.ru vmb143 " >> /etc/hosts |
Настройка Kerberos (OFFICE.RU - название нашего домена большими буквами, domain-controller.office.ru - название сервера Kerberos (Key Distribution Center) в нашем домене, как правило, эту роль выполняет контроллер нашего домена):
# echo "[logging] default = FILE:/var/log/krb5libs.log kdc = FILE:/var/log/krb5kdc.log admin_server = FILE:/var/log/kadmind.log [libdefaults] default_realm = OFFICE.RU dns_lookup_realm = false dns_lookup_kdc = false ticket_lifetime = 24h renew_lifetime = 7d forwardable = yes [realms] OFFICE.RU = { kdc = domain-controller.office.ru:88 admin_server = domain-controller.office.ru:749 } [domain_realm] .office.ru = OFFICE.RU office.ru = OFFICE.RU " > /etc/krb5.conf |
Для проверки правильности заполнения конфигурационного файла Kerberos используем
# kinit usoltsev@OFFICE.RU Password for usoltsev@OFFICE.RU: # klist Ticket cache: FILE:/tmp/krb5cc_0 Default principal: usoltsev@OFFICE.RU Valid starting Expires Service principal 03/23/10 14:40:01 03/24/10 00:40:32 krbtgt/OFFICE.RU@OFFICE.RU renew until 03/30/10 15:40:01 ... |
команда kinit запросит пароль пользователя домена и никакой информации больше не выдаст - это нормально, значит конфигурация kerberos правильная.
Конфигурация samba (OFFICE - мнемонический код, domain-controller.office.ru - имя контроллера домена, office.ru - название домена) и перезапуск службы:
# echo " [global] workgroup = OFFICE netbios name = VMB143 idmap uid = 10000-20000 idmap gid = 10000-20000 winbind enum users = yes winbind enum groups = yes template homedir = /home/%D/%U template shell = /bin/bash security = ads encrypt passwords = yes realm = office.ru password server = domain-controller.office.ru " > /etc/samba/smb.conf # /etc/init.d/samba restart * Stopping Samba daemons [ OK ] * Starting Samba daemons [ OK ] |
Присоединение нашего линукс сервера к домену (ещё раз потребуется ввести пароль администратора домена)
# net ads join -U Administrator Administrator's password: Using short domain name -- OFFICE Joined 'VMB143' to realm 'OFFICE.RU' |
Для настройки службы winbind необходимо отредактировать файл /etc/nsswitch.conf:
# sed -i".bak" "s/^passwd\: .*/passwd\: compat winbind/" /etc/nsswitch.conf # sed -i".bak" "s/^group\: .*/group\: compat winbind/" /etc/nsswitch.conf |
и рестартовать службы:
# /etc/init.d/samba restart # /etc/init.d/winbind restart |
Проверить успешность настройки сервера можно командами:
# wbinfo -u OFFICE\administrator OFFICE\guest ... # wbinfo -g OFFICE\domain computers OFFICE\domain controllers ... |
, вывод которых покажет пользователей и группы нашего домена.
Теперь готовим модуль mod_auth_ntlm_winbind для веб-сервера apache (к сожалению, не нашёл в репозиториях Ubuntu, поэтому придётся компилировать - это просто):
#
apt-get install git-core # git-clone git://git.samba.org/jerry/mod_auth_ntlm_winbind.git # cd mod_auth_ntlm_winbind # apt-get install -y autoconf # aptitude install -y apache2-prefork-dev # apxs -DAPACHE2 -c -i mod_auth_ntlm_winbind.c ... chmod 644 /usr/lib/apache2/modules/mod_auth_ntlm_winbind.so |
и устанавливаем этот модуль в структуру apache:
# echo "LoadModule auth_ntlm_winbind_module /usr/lib/apache2/modules/mod_auth_ntlm_winbind.so" > /etc/apache2/mods-available/auth_ntlm_winbind.load # echo " <Directory \"/var/www\"> AuthName \"NTLM Authentication thingy\" NTLMAuth on NTLMAuthHelper \"/usr/bin/ntlm_auth --helper-protocol=squid-2.5-ntlmssp\" NTLMBasicAuthoritative on AuthType NTLM require valid-user </Directory> " > /etc/apache2/mods-available/auth_ntlm_winbind.conf # ln -s /etc/apache2/mods-available/auth_ntlm_winbind.* /etc/apache2/mods-enabled/ |
Для NTLM авторизации необходимо включить опцию KeepAlive в конфигурационном файле apache:
# sed -i".bak" "s/^KeepAlive .*/KeepAlive On/" /etc/apache2/apache2.conf |
и разрешить серверу apache "слушать" не только на внутреннем сетевом интерфейсе:
# sed -i".bak" "s/^Listen 127\.0\.0\.1\:8888/Listen *\:8888/" /etc/apache2/ports.conf |
Также необходимо изменить привилегии папки /var/run/samba/winbindd_privileged, например так:
[S]# chmod 777 /var/run/samba/winbindd_privileged[/S] # usermod -G winbindd_priv bitrix |
- это известная "особенность" взаимодействия winbind и apache.
Открываем firewall по порту apache и рестартуем стек веб-приложений:
# ufw allow 8888 Rule added # /etc/init.d/zend-server restart |
Основная настройка сервера Ubuntu (Виртуальной машины Битрикс) завершена, можно настраивать браузер и подключаться с использованием "прозрачной" доменной аутентификации.
Замечания:
Поскольку использование NTLM-аутентификации не поддерживается nginx, эту службу можно отключить:
# /etc/init.d/nginx stop # rm /etc/rc2.d/S20nginx |
и увеличить параметры apache (MaxClients) - т.к. теперь почти на каждое пользовательское соединение потребуется свой процесс, с соответствующим увеличением требований к памяти. Для этого потребуется отредактировать файл /etc/apache2/conf.d/prefork на виртуальной машише Битрикс, либо просто увеличить размер выделяемой для ВМ оперативной памяти - в этом случае после перезагрузки ВМ параметры увеличатся автоматически:
# cat /etc/apache2/conf.d/prefork <IfModule mpm_prefork_module> StartServers 4 MinSpareServers 4 MaxSpareServers 4 MaxClients 4 MaxRequestsPerChild 200 </IfModule> |
Настойка Fedora 12 для использования NTLM
На Fedora все действия аналогичны с учётом специфики ОС Red Hat.
Устанавливаем необходимые пакеты:
# yum install -y system-config-samba samba-client samba-winbind pam_krb5 krb5-workstation krb5-libs |
Конфигурация сети:
# echo "search office.ru domain office.ru" >> /etc/resolv.conf # echo " > 192.168.0.151 f12test.office.ru f12test > " >> /etc/hosts |
Настройка Samba, Kerberos и nss:
# echo " [global] workgroup = OFFICE netbios name = F12TEST0 idmap uid = 10000-20000 idmap gid = 10000-20000 winbind enum users = yes winbind enum groups = yes template homedir = /home/%D/%U template shell = /bin/bash security = ads encrypt passwords = yes realm = office.ru password server = office.ru " > /etc/samba/smb.conf # echo "[logging] default = FILE:/var/log/krb5libs.log kdc = FILE:/var/log/krb5kdc.log admin_server = FILE:/var/log/kadmind.log [libdefaults] default_realm = OFFICE.RU dns_lookup_realm = false dns_lookup_kdc = false ticket_lifetime = 24h renew_lifetime = 7d forwardable = yes [realms] OFFICE.RU = { kdc = pdc.office.ru:88 admin_server = pdc.office.ru:749 } [domain_realm] .office.ru = OFFICE.RU office.ru = OFFICE.RU " > /etc/krb5.conf # sed -i".bak" "s/^passwd\: .*/passwd\: compat winbind/" /etc/nsswitch.conf # sed -i".bak" "s/^group\: .*/group\: compat winbind/" /etc/nsswitch.conf # sed -i".bak" "s/^shadow\: .*/shadow\: compat/" /etc/nsswitch.conf |
Запускаем сервисы + устанавливаем их в режим автозапуска:
# service smb start # winbindd # chkconfig winbind on # chkconfig smb on |
Присоединяем наш линукс компьютер к Windows домену (потребуется пароль администратора домена):
# net ads join -U Administrator Enter administrator's password: Using short domain name -- OFFICE Joined 'F12TEST' to realm 'office.ru' |
Проверяем:
# wbinfo -u OFFICE\administrator OFFICE\guest ... # wbinfo -g OFFICE\domain computers OFFICE\domain controllers ... |
В отличие от Ubuntu, в репозитории Fedora есть готовый модуль mod_auth_ntlm_winbind, устанавливаем и конфигурируем:
# yum install -y mod_auth_ntlm_winbind # echo "LoadModule auth_ntlm_winbind_module modules/mod_auth_ntlm_winbind.so <Directory "/home/bitrix/www"> AuthName \"NTLM Authentication thingy\" NTLMAuth on NTLMAuthHelper \"/usr/bin/ntlm_auth --helper-protocol=squid-2.5-ntlmssp\" NTLMBasicAuthoritative on AuthType NTLM require valid-user </Directory>" > /etc/httpd/conf.d/auth_ntlm_winbind.conf |
Устанавливаем KeepAlive On:
# sed -i".bak" "s/^KeepAlive .*/KeepAlive On/" /etc/httpd/conf/httpd.conf |
Исправляем баг с правами доступа (bitrix - имя пользователя, под которым запускаются процессы httpd):
# setfacl -m u:bitrix:rx /var/lib/samba/winbindd_privileged |
Перезапускаем стэк (предварительно проверив настройки firewall):
# service zend-server restart |
Настройка интернет-браузеров для автоматической авторизации
Internet Explorer
Для успешной NTLM авторизации нужно, чтобы веб-сервер находился в зоне Local Intranet (при необходимости добавить)
Mozilla Firefox
Добавить веб-сервер к списку доверенных URI для автоматической NTLM-авторизации (через параметр network.automatic-ntlm-auth.trusted-uris на странице firefox about:config)
Ссылки:
Долго не мог понять, почему вообще сайт не открывается.
Потом дошло, что заходить нужно на 8888 порт.
При отключенном nginx все стало настолько медленно шевелиться, что желания работать с NTLM авторизацией сразу отпало.
Да и как-то криво она все равно работает
За статью спасибо.
и если samba будет новая, то похоже заведется NTLMv2
билеты кербероса получаю, список пользователей и груп тоже, но на портал попасть немагу, косяк походу в апаче или модуле для NTLM авторизации, помогите плиз. Заранее благодарен!
есть ли ошибки при запуске апача, что в логах?
заходите на 8888 порт, что видите, какие ошибки?
файрволом не закрыто? что даёт?
Всё сделал как в статье, в конфигурации апача следующее:
<Directory /var/www/bitrix/>
AuthName "NTLM Authentication thingy"
NTLMAuth on
NTLMAuthHelper "/usr/bin/ntlm_auth --helper-protocol=squid-2.5-ntlmssp"
NTLMBasicAuthoritative on
# NTLMBasicRealm "IV"
AuthType NTLM
require valid-user
</Directory>
Так как переходил с LDAP на NTML, то теперь пользователи дублируются:
LDAP-Пупкин и NTLM-Пупкин
Данная ситуация возникла, скорее всего, по причине, что переменная $_SERVER["REMOTE_USER"] не инициализирована - значение no value. Но в конфиге апача стоит require valid-user. В чём может быть проблема ?
А возможна ли "централизованная" настройка браузеров (например на самом сервере AD, чтобы настройки принял Internet Explorer) ? Или есть какой-то другой вариант решения проблемы ?
Дело в том, что к компании куча машин и к каждому не подойдёшь, не настроишь)
Все настройки выполнены по инструкции, однако после отключения нгинкса и попытки зайти 8888 порт, получаю запрос логина/пароля, при этом при вводе правильных данных авторизация не проходит. Проверено на нескольких браузерах (ИЕ, Мозилла, Хром)
Используется виртуальная машина на базе Убунту, скачанная с сайта Битрикса.
Прошу помочь!
Подскажите пожалуйста, а что делать обладателям CentOS? Дело в том, что при выполнении первой команды:
yum "говорит", что нет пакета samba-winbind. Поискал его в сторонних репозитариях, но не нашел ни в EPEL, ни в RMPForge, ни где либо еще.
samba3x-winbind вполне подойдёт
Большое спасибо.
Может там что-то с кодировками еще нужно делать?
root@localhost:~# apxs -DAPACHE2 -c -i mod_auth_ntlm_winbind.c
/usr/share/apr-1.0/build/libtool --silent --mode=compile --tag=disable-static i486-linux-gnu-gcc -prefer-pic -DLINUX=2 -D_GNU_SOURCE -D_LARGEFILE64_SOURCE -D_REENTRANT -I/usr/include/apr-1.0 -I/usr/include/openssl -I/usr/include/postgresql -I/usr/include/xmltok -pthread -I/usr/include/apache2 -I/usr/include/apr-1.0 -I/usr/include/apr-1.0 -I/usr/include/postgresql -DAPACHE2 -c -o mod_auth_ntlm_winbind.lo mod_auth_ntlm_winbind.c && touch mod_auth_ntlm_winbind.slo
i486-linux-gnu-gcc: mod_auth_ntlm_winbind.c: No such file or directory
i486-linux-gnu-gcc: no input files
apxs:Error: Command failed with rc=65536
Спасибо
ошибка произошла на предыдущих шагах, что выдали команды
?
по какой-то причине командой git-clone у вас не скачались файлы
Спасибо за помощь, но есть пара вопросов:
1. Сейчас авторизация работает по порту 8888, можно ли повесить на 80-й порт?
2. Как войти без NTLM и почему сейчас при входе на 80-й порт ie просит логин и пароль? (часть пользователей будут вне домена работать)
2.войти без NTLM можно отключив NTLM авторизацию
на 80 порту у вас сейчас nginx, который транслирует, но не поддерживает запросы авторизации апач
Правильно я понял что будет работать или NTLM или встроенная авторизация, вариант что часть пользователей работают по NTLM, а часть по встроенной - невозможен?
Если вы хотите быть администратором на КП, настройте соответствие групп AD и КП, например: администраторы AD = администраторы КП.
Как решил проблему с тормозами из-за ntlm:
1) nginx не выключил совсем, а заменил конфиг - теперь он висит на 8000 порту и, ничего не проксируя, отдаёт статику. /etc/nginx/nginx.conf:
Не забудьте открыть порт
2) заставил css, js и картинки из css грузится через nginx. bitrix/php_interface/init.php:
3) Ну и, конечно, необходимо отредактировать под свои объёмы пользователей /etc/apache2/conf.d/prefork у меня:
4) ?????
5) PROFIT!
Будет полезно для многих пользователей
К Каждой ветке AD (прим. 'ou=Staff,dc=Firma-City,dc=hotels,dc=company,dc=ent') настроена отдельная строка LDAP запроса по которой в определенную оргструктуру подключаются импортированные пользователи из AD.
Так как в нашем корпоративном портале настроена NTLM авторизация, то в настройках AD должен быть указан сервер NTLM, но при указании одного и того же сервера на нескольких ветках LDAP авторизация перестает работать, что делать?
В конфиге кербероса задаются реалмы и их контроллеры. Другой вопрос - что делать с самбой..
upd. Если у доменов доверительные отношения то достаточно чтобы сервер входил только в один домен, а на портале настроены сервера ad. Также на сервере нужно поправить файл hosts и у kerberos в конфиг добавить realm второго домена (как указано). Тогда авторизация из двух доменов происходит
остановился на mod_auth_ntlm_winbind, не могу установить.
Подскажите как сделать
NTLM-авторизацию я могу настроить только при использовании Apachе? Дело в том, что нам было бы удобнее в качестве платформы использовать Win2008Srv/IIS/SQL. Сам портал разворачивается на этой платформе без проблем и всё работает, но вот NTLM активизировать не получается. Со стороны портала все требуемые настройки выполнил, со стороны IIS вроде как тоже, но при открытии портала всё равно появляется страница авторизации.
"couldn't check access. No group file?: /"
Куда копать? как пофиксить проблему?
Надо убедиться, что загружены модули: auth_pam_module и auth_sys_group_module.
Ubuntu дает 500-ю ошибку, в логах апача
[2011/04/11 14:13:25, 0] utils/ntlm_auth.c:558(winbind_pw_check)
Login for user [domain]\[user]@[USER] failed due to [Access denied]
[Mon Apr 11 14:13:25 2011] [error] [client 10.77.3.43] (20014)Internal error: ntlm_auth reports Broken Helper: BH NT_STATUS_ACCESS_DENIED
[2011/04/11 14:13:25, 0] utils/ntlm_auth.c:833(manage_squid_ntlmssp_request)
NTLMSSP BH: NT_STATUS_ACCESS_DENIED
could not obtain winbind netbios
Отличается ли настройка авторизации для Fedora от Centos?
нужно ли настраивать .htaccess?
PS Лицензия купленная
# net ads join -U Administrator
Administrator's password:
ничего не происходит ни ошибок, ни указаного в мануале результата.
Подскажите, пожалуйста, в какую сторону копать
Подскажите, пожалуйста. Я настроил ntlm авторизацию на сервере, вне домена тоже могу авторизоваться на портале, но вот с помощью приложения Bitrix24 для iphone теперь не получается войти на портал. Может есть какое-нибудь решение этой проблемы?
Настроил NTLM авторизацию по данной статье, до перезагрузки сервера она работала.
Теперь при авторизации просит пароль.
Что бы попасть в админку отключаю модуль auth_ntlm_winbind.
Все настройки строго по мануалу. Подскажите куда копать ))
Ubuntu 12.04 Srv, lamp, Битрикс 24.
(копипастом у меня не сработало, пришлось заходить в папку) рекомендую при загрузке, cron'ом, каждый раз проставлять - почему-то сбрасываются. После этой команды выполнил
Еще, уделите внимание добавлению сайта в доверенные интрасети, а то, тоже, может не принимать авторизацию.