Прозрачная аутентификация для OTRS при помощи mod_auth_ntlm_winbind на примере Cent OS 6

в 14:27, , рубрики: helpdesk, otrs, системное администрирование, метки: ,

Некоторое время назад в нашей компании была внедрена система поддержки клиентов OTRS. OTRS легко интегрируется с Active Directory, существует масса пошаговых инструкций, в том числе на Хабре.
Практика использования системы поддержки показала, что ввести пароль а еще и логин доменной учетной записи задача, для пользователя весьма сложная, для руководителей вообще не приемлемая.

OTRS имеет возможность прозрачной авторизации, осталось научить Apache приниматьотдавать такие данные. Вот тут и начались грабли, в одной части руководств описан ntlm_mod не обновлявшийся года этак с 2007, в другой части руководств описывается практика установки под windows. Хотелось чистого Open Source, поэтому Cent OS как одна из платформ рекомендуемая в руководстве по OTRS и mod_auth_ntlm_winbind присутствующий в стандартном репозитории.
Сервер сущесвует и работает, необходимо лишь изменить способ аутентификации для пользователей (кастомеров) оставив без изменения способ авторизации для агентов.

Winbind для проверки подлинности использует Kerberos. Для корректной работы Kerberos необходимо синхронизировать часы с доменом.
Для это установим NTP:

yum –y install ntp

Настроим NTP:

sed –i “s /^server /#server /g” /ect/ntp.conf
echo “serever  КОНТРОЛЕР_ДОМЕНА” /etc/ntp.conf

Синхронизируем время:

ntpdate КОНТРОЛЕР_ДОМЕНА

Настроим автоматический запуск:

chkconfig ntpd on

И запустим NTP:

service ntpd start

Время синхронизированно. Установим необходимые пакеты:

yum -y install mod_auth_ntlm_winbind httpd-devel  autoconfig krb5-workstation samba samba-common samba-winbind

Следующим шагом необходимо сконфигурировать установленные пакеты и ввести сервер в домен. Для это в консоли пишем:

ADSERVER=FQDN контролера домена (например dc.company.local)
DOMAIN=домен  (company.local)
WORKGROUP= company
authconfig --enableshadow --enablemd5 --passalgo=md5 --krb5kdc=$ADSERVER --krb5realm=$DOMAIN --smbservers=$ADSERVER --smbworkgroup=$WORKGROUP --enablewinbind --enablewinbindauth --smbsecurity=ads --smbrealm=$DOMAIN --smbidmapuid="16777216-33554431" --smbidmapgid="16777216-33554431" --winbindseparator="+"  --winbindtemplateshell="/bin/false" --enablewinbindusedefaultdomain --disablewinbindoffline --winbindjoin=Administrator --disablewins --disablecache --enablelocauthorize –updateall

После этого мы должны получить сообщение о том, что наш сервер теперь является доменной машиной.
Добавим правило для SE Linux:

setsebool -P allow_httpd_mod_auth_ntlm_winbind on

Запусим winbind

service winbind start  

Настроим автоматический запуск:

chkconfig winbind on

Проверим правильность работы winbind:

wbinfo –u получим список пользователей
wbinfo –g получим список групп

Проверить правильность работы Kerberos можно получив тикет:

kinit administrator (любое имя доменного пользователя),по запросу вводим пароль.

Полученный тикет можно посмотреть командой:

klist

Для работы mod_auth_ntlm_winbind необходимо в файле /etc/httpd/conf/httpd.conf изменить параметр KeepAlive=off на KeepAlive=on.

В директории /etc/httpd/conf.d создаем файл ntlm_winbind.conf со следующим содержанием:

LoadModule auth_ntlm_winbind_module /usr/lib64/httpd/modules/mod_auth_ntlm_winbind.so
<Location ~ "(otrs/customer.pl)">
  AuthName "NTLM Authentication"
  AuthType NTLM 
  Require valid-user
  NTLMAuth on
  NTLMAuthHelper "/usr/bin/ntlm_auth --helper-protocol=squid-2.5-ntlmssp"
  NTLMBasicAuthoritative on
</Location>

Тем самым мы просим передать данные авторизации только при доступе к customer.pl
Последние что нужно сделать, это изменить Config.pm закоментировать часть отвечающую за авторизацию LDAP и добавить NTLM авторизацию.

# Авторизация LDAP
#$Self->{'Customer::AuthModule'} = 'Kernel::System::Auth::LDAP';
#$Self->{'Customer::AuthModule::LDAP::Host'} = 'dc.company.local';
#$Self->{'Customer::AuthModule::LDAP::BaseDN'} = 'dc=COMPANY, dc=local';
#$Self->{'Customer::AuthModule::LDAP::UID'} = 'sAMAccountName';
#$Self->{'Customer::AuthModule::LDAP::SearchUserDN'} = 'read_ad_user';
#$Self->{'Customer::AuthModule::LDAP::SearchUserPw'} = 'pass_for_read_ad_user';

#Авторизация NTLM
$Self->{'Customer::AuthModule'} = 'Kernel::System::Auth::HTTPBasicAuth';

Проверим коректно ли зарегистрировался сервер OTRS на DNS сервере выполнив команду nslookup otrs-server
Настройка завершена!
Открывать в браузере http:\otrs-server-nameotrscustomer.pl и видим результат.
Если же не видим результат, значит при настройке была допущена ошибка, внимательно смотрим настройки в файлах /etc/krb5.conf /etc/samba/smb.conf

Автор: R3pl1CID

Источник

  1. Gluk:

    yum -y install mod_auth_ntlm_winbind httpd-devel autoconfig krb5-workstation samba samba-common samba

    Хотелось бы узнать в каком репозитории есть все это установил штук 5 бестолку ( сентос 6 по умолчании вообще почти нечего не имел в репозитории)

* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js