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
Кодировка имён пользователей

24 Comments

  1. Здравствуйте.
    Вроде делаю все так же как у Вас написано, но не получается получить имя пользователя через whoami.pl (в phpinfo так же не нашел где его можно смотреть). Может есть какие-то еще тонкости, которые у Вас не указаны?
    А так же вопрос – при генерации кейтаба “-mapuser helpdesk@DOMAIN.RU” отвечает за сопоставление пользователя созданного в АД? а то про него в статье так же ничего не нашел.
    Буду рад любым подсказкам.

  2. Здравствуйте! Спасибо за статью!
    Возникла одна проблема, а т.к. я делаю все исключительно по ней – у вас эта проблема наверняка тоже была: на моменте запуска установочного скрипта (otrs/installer.pl) вместо страницы настройки firefox, как и другие браузеры, предлагает скачать installer.pl

  3. Здравствуйте, огромное спасибо за статью!
    Возникло 2 вопроса:
    Centos 6.5 +otrs 4.0.6
    1. после добавлении .htaccess в каталог /opt/otrs/bin/cgi-bin/
    страничка custmasers.pl и index.pl не грузятся
    2. whoami.pl в архиве нет, создал файл через vi /opt/otrs/bin/cgi-bin/whoami.pl – я так понимаю к ней путь нужно прописать в httpd.conf ?

    1. Александр, спасибо за отзыв)
      Итак, по вопросам.
      1. Не грузится, а что в логах веб-сервера? Сообщения должны раскрывать суть проблемы, может пуь не тот или прав не хватает.
      2. Вот ссылка на whoami.pl http://pastebin.com/3FnurQQ8 Он должен быть в корне веб-сервера (ну т.е. в public_html папке или как она у вас называется). Для начала протестируйте открытие простого текстового файла, если всё ок, то перлового скрипта, дальше whoami, дальше уже файлов otrs. Отлаживайте по шагам.

  4. Выполнил все как у вас в инструкции но при входе на Customer.pl выдает в логах апача ошибку в файлы adsso 39 строка на функцию no logobject
    В чом может быть проблема?
    Стоит ubuntu 14

      1. Та же проблема.
        Апач 2.4.10, модуль никак не могу найти для авторизации.

        1. Валерий, мы в общем уже на SpiceWorks перешли 🙂

          1. Какие прелести и отличия?
            Думаю перейти на что-то новое или на 4й OTRS. Мониторинг не нужен. Есть Zabbix

          2. SpiceWorks работает на Windows, со всеми вытекающими плюсами и минусами 🙂 В более ранних версиях подтекала периодически, сейчас вроде нормально работает.

  5. Добрый день. Коллеги помогите пожалуйста в таком вопросе. Установлена otrs appliance на Debian, не могу сбросить пароль на системного рута, что бы зайти с консоли и изменить настройки системы. При запуске синий экран нажмите F2 для обслуживания.

    1. А Applience чей? Кто вендор? Станислав, скидывай скриншот.

      1. Pascom.net, версия его 4.0.5
        Скриншот отправил на почту указанную в контактах.

  6. Андрей мне детальная инструкция не нужна, скажите хоть в какую сторону копать

    1. Ну во первых узнать, что такое этот harddisk mode для этого Applience. Во-вторых попробовать другой Applience, например от TurnKey. Ссылка вот тут: https://www.turnkeylinux.org/otrs

  7. добрый день, установил OTRS все отлично работает, но в логах много таких записей
    OTRS-otrs.Scheduler-56[14423]: [Debug][main::_Status][580] Scheduler Daemon status request! PID 5960
    OTRS-otrs.Scheduler-56[14692]: [Debug][main::_Status][580] Scheduler Daemon status request! PID 5960

    подскажите, как мне отключить этот Debug?

    1. Андрей, доброго дня! Насколько я помню, там где-то в gui была ссылка, которая включает скрипты по планировщику. Думаю после включения таких ошибок не будет. Пробуйте.

      1. спасибо за быстрый ответ
        а без доступа в gui можно как-то исправить?
        сейчас в кроне такие задания
        20 0 * * 0 $HOME/bin/otrs.DeleteCache.pl –expired >> /dev/null
        30 0 * * 0 $HOME/bin/otrs.LoaderCache.pl -o delete >> /dev/null
        5 * * * * $HOME/bin/otrs.GenerateDashboardStats.pl >> /dev/null
        */20 * * * * $HOME/bin/otrs.GenericAgent.pl >> /dev/null
        */10 * * * * $HOME/bin/otrs.GenericAgent.pl -c db >> /dev/null
        45 */2 * * * $HOME/bin/otrs.PendingJobs.pl >> /dev/null
        10 0 * * * $HOME/bin/otrs.ReprocessMails.pl >> /dev/null
        */10 * * * * $HOME/bin/otrs.PostMasterMailbox.pl >> /dev/null
        01 01 * * * $HOME/bin/otrs.RebuildTicketIndex.pl >> /dev/null
        */5 * * * * $HOME/bin/otrs.Scheduler.pl -w 1 >> /dev/null
        55 */2 * * * $HOME/bin/otrs.DeleteSessionIDs.pl –expired >> /dev/null
        35 * * * * $HOME/bin/otrs.UnlockTickets.pl –timeout >> /dev/null

        и вот эти закомментированы
        */5 * * * * [ -x /usr/bin/fetchmail ] && /usr/bin/fetchmail -a >> /dev/null
        */5 * * * * /usr/bin/fetchmail -a –ssl >> /dev/null
        0 23 * * * $HOME/bin/otrs.GenericAgent.pl -c “Kernel::Config::GenericAgentMove” >> /dev/null

        1. К сожалению в данный момент он у меня не установлен и уже не помню, что там и как.

          1. я так понимаю в логе такие записи вызывает крон
            */5 * * * * $HOME/bin/otrs.Scheduler.pl -w 1 >> /dev/null
            т.к. у меня каждые 5 минут такая запись в логе есть

            что означает ключ “-w 1”? и вообще нужен ли вообще такой крон?

  8. Здравствуйте. На CentOS поменяли IP адрес. Теперь при авторизации выходит окно, но при вводе Логина и Пароля ничего не происходит, так и висит это окошко авторизации. Подскажите пожалуйста где еще можно поискать причину?

    1. Посмотрите, какой IP прописан в /opt/otrs/Kernel/Config.pm? Старый или новый?

Leave a Comment