OTRS: Установка на Ubuntu, аутентификация в Active Directory и Single sign on

otrs-iconВ этой статье я опишу опыт установки helpdesk системы OTRS. Первоначально для себя надо ответить на вопрос, а зачем же вам нужна helpdesk система? Может быть хватит обычной тикет-системы, или какого-либо онлайн сервиса. При выборе helpdesk системы я, в первую очередь, руководствовался не обширным набором функций, а успешным опытом развертывания данной системы в различных организациях. 

Требования

Для начала определимся с требованиями. Допустим у нас уже есть центральный сервер, с развернутой на нём службой каталогов (Active Directory). Необходимо сделать так, чтобы пользователи могли авторизовываться в системе, создавать заявки, а технические специалисты отвечать на них и собственно выполнять. Для этих целей поставим виртуальную машину и развернём на ней OTRS.

Установка OTRS

В начале своих изысканий я наткнулся на такую замечательную вещь, как OTRS Appliance. Это готовый ISO-образ (скачать версию 3.3.7), который можно подключить к виртуальной машине как CD-ROM и автоматически установить OTRS. Это вселяло надежду на скорое решение проблемы, но моя радость была бы не полной. если бы не некоторые грабли. В частности часть системы вынесена в отдельный RAM диск и после установки пакетов (например mc) они живут ровно до перезагрузки. Естественно это было неприемлемо и я решил установить OTRS вручную на чистую Ubuntu 14.04.

Качаем исходники и распаковываем их в каталог /opt/otrs-3.3.7

Теперь устанавливаем необходимые пакеты:

Далее проверяем все ли модули Perl мы поставили этой командой:

Если каких-то модулей нет, и они необходимы – то ставим их примерно так

или так

Создаём пользователя для Otrs

Если файлов конфигов (не .dist а именно .pm) нет, то копируем их из файлов дистрибьютива:

Настраиваем права под свежесозданного пользователя:

Дальше создаём vhost для Апача (который у нас должен уже стоять кстати):

У меня он получился в результате вот такой (я не менял его).

Теперь включаем этот vhost. Эта команда создаёт симлинк в папке sites-enable. После этого можем перезагрузить апач.

После этого можно открыть в браузере установочный скрипт (http://your_otrs_ip_adress/otrs/installer.pl) и следую ему завершить установку otrs.

otrs_installer

Настройка авторизации пользователей в Active Directory

Как правило, в компаниях существует сервер (контроллер домена) в котором хранится база всех пользователей, и желательно сделать так, чтобы наши родные пользователи смогли проходить аутентификацию со своим AD-аккаунтом в OTRS. Это можно сделать так.

Требования к аккаунтам
У пользователей в AD должно быть заполнено поля с информацией об имени (Имя. Фамилия, Отчество (инициал) и email). Без этого они не пройдёт аутентификацию.

Итак, заходим в админку (http://otrs-server.domain/otrs/index.pl) с аккаунтом локального администратора (кroot@localhost / root). Далее необходимо произвести базовую настройку.
Заходим «Администрирование» -> «Конфигурация системы». В выпадающем списке слева выбираем «Framework» и в появившемся списке справа выбираем «Frontend::Customer»:

otrs-new-customer-settings

на CustomerPanelCreateAccount указываем «Нет» и жмем внизу кнопку «Обновить».

Сквозная авторизация (SSO)

Для работы в OTRS пользователь должен быть авторизован, т.е. системе должен быть известен ID пользователя. Обычно таким ID выступает логин. Стандартно пользователю предлагается ввести логин и пароль в форме авторизации. Используя Authentication backends, OTRS может выполнить авторизацию пользователя.

Если предположить, что при открытии страницы OTRS пользователь уже известен, то повторно запрашивать авторизацию не надо. Т.к. в моем случае все пользователи уже авторизованы в домене Windows, логично это как-то использовать. Таким образом, нужно данные авторизации передать в OTRS.

Алгоритм авторизации

1. Пользователь включает компьютер, авторизуется в домене с помощью Kerberos. В Kerberos контроллер домена именуется центром распространения ключей Key Distribution Center (KDC). На высоком уровне это выглядит так: при регистрации пользователя на компьютере формируется серия обменов данными с контроллером домена (DC), и в случае успеха пользователю назначается билет на право получения билетов (TGT). Впоследствии при каждом обращении к службе, такой как общая папка или приложение, TGT используется, чтобы получить билет для доступа к службе или приложению.
2. С TGT пользователь обращается браузером (тестировалось под Internet Explorer) к веб-серверу (Apache2). Для того, чтобы бразер отдавал веб-серверу TGT нужно сделать соответствующую настройку клиента.

  • Кликнуть по иконки с шестеренкой -> Свойства браузера -> Безопасность -> Местная интросеть -> Кнопка “Сайты” -> Кнопка “Дополнительно”
  • Заполнить поле “Добавить в зону следующий узел”: http://helpdesk.domain.ru Нажать на кнопки “Добавить”, “Закрыть”, “Ok”, “Ok”.

3. Там модуль Апача mod_auth_kerb получает от браузера билет TGT и обращается с ним к KDC (он же контроллер домена). При этом сам хост с апачем должен быть введен в домен и на быть принципиалом Kerberos чтобы осуществить это обращение.

Чтобы работал этот этап нужно сделать две вещи. Во-первых в дефолтном конфиге vhost-а для otrs разрешить использовать файлы .htaccess вот так (зменить None на All):

и собственно разместить файл .htaccess

/opt/otrs/bin/cgi-bin/.htaccess

Файл krb5.keytab нужно будет сгенерировать на контроллере домена, ниже я напишу об этом в разделе “Ввод веб-сервера в домен”.

4. KDС выдаёт Апачу билет для доступа к службе, из которого апач выдергивает имя пользователя в формате username@domain.ru и помещает его в переменную окружения $ENV[‘REMOTE_USER’].

5. OTRS с помощью модуля авторизации Auth:Customer:ADSSO принимает результаты прохождения BasicAuth как успешную авторизацию и забирает имя пользователя из $ENV[‘REMOTE_USER’]

6. Пользователь видит панель OTRS в залогиненном виде. Если в переменной окружения нет имени пользователя, то всплывает окно авторищации, в котором пользователь вводит свой логин и пароль.

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

Готовим систему

Систему будем ставить на хост helpdesk.domain.ru (внешний IP = x.x.x.x, внутренний IP = y.y.y.y).

Ставим пакеты для Kerberos и Samba

/etc/hostname
Прописываем имя машины. Желательно капсом. Так точно работает.

/etc/hosts

где y.y.y.y – внутренний IP адрес вашего контроллера домена

/etc/resolv.conf

где x.x.x.x – внешний IP адрес вашего контроллера домена

Конфиги для LDAP-Auth + SSO

Теперь меняем конфиги до такого вида. Я приведу конфиги, который сразу обеспечивает авто-логин или сквозную авторизацию

/etc/krb5.conf

/etc/samba/smb.conf – см начало секции [global]

Теперь настраиваем .htaccess
/opt/otrs/bin/cgi-bin/.htaccess
/opt/otrs/bin/cgi-bin/.htaccess

Отлично, теперь вводим веб-сервер в домен.
Во-первых создаём юзера helpdesk в Active Directory.

Далее собственно вводим в домен сервер.

Перезапускаем службы

Перезагружаем сервер

Далее после загрузки сервер должен выдавать нам данные о домена при следующих запросах:

Запрос службы RPC

список юзеров

и групп

Идём на контроллер домена и генерируем там файл krb5.keytab

Потом на веб-сервере кладём его в /etc/krb5.keytab и даём права апачу читать его

В дистрибьютиве OTRS есть файлик whoami.pl можно закинуть его в корень веб-сервера и тестировать там. Ну или смотреть с помоью того же phpinfo(); переменную окружения $ENV[‘REMOTE_USER’]

Перезагружаем Апач, на компьютере клиента авторизовываемся с помощью доменной учётки, ставим разрешение в IE авторизовываться автоматически, заходим на тестовый скрипт и если всё хорошо видим нашу учётку вида user@domain.ru в этой переменной.

Далее настраиваем OTRS на то, чтобы пользователи (Customers) могли авторизовываться автоматически.

Меняем конфиг.

/opt/otrs/Kernel/Config.pm

И добавляем файл адаптера авторизации.

/opt/otrs/Kernel/System/CustomerAuth/ADSSO.pm – это модифицированный вариант предлагаемого файла отсюда.

Чтобы было понятнее, вот сам фикс:

Теперь авторизация для клиентов должна работать успешно.

Установка задания Cron

Делаем по официальному руководству. См. раздел “Настрой планировщика задач (cron jobs) для OTRS” на github.

Настройка кодировки отображения имён пользователей

У меня после установке и логине юзеров в тикетах их имена отображались неправильно (вместо них были иероглифы). Помогло следующее решение. В конфиге добавляем параметры:

Важные детали

1 Должна быть создана учётка helpdesk на AD
2. Открывать Otrs надо по символическому а не по IP адресу
3. На KDC должен быть сгенерирован keytab файл и скопирован на веб-сервер
4. wbinfo -u должен выдавать список юзеров, веб-сервер должен быть в домене

Тормозит OTRS

У меня возникла такая проблема. После прописывания сервера для исходящей почты OTRS стал дико тормозить (я про веб-интерфейс). Как оказалась проблема была в том, что он каждый раз при работе с почтой проверял действительность email адреса. Лечится это просто, я поставил эту настройку в “нет”, и тормоза исчезли.

Администрирование -> Конфигурирование системы -> Framework:Core -> CheckMXRecord = Нет
Включает проверку MX record почтовых адресов клиента до отправки почты или приема почтовой или телефонной заявки.

Ссылки

OTRS Appliance (iso)
OTRS Installation manual
Установка OTRS на Ubuntu Server
Настройка OTRS
Интеграция с Active Directory
OTRS:ITSM
Ставим OTRS на Ubuntu по-быстрому
Установка OTRS и интеграция с Active Directory
Kerberos в Active Directory
Кодировка имён пользователей