Первичная настройка трекера заявок RT от SecureScout
(rt-4.4.1 на Ubuntu 16.04.1 LTS GNU/Linux 4.4.0-51-generic x86_64)
Вообще вот официальный readme для текущей версии (текущая по опыту стабильная и колдовать уже вроде бы не нужно): https://docs.bestpractical.com/rt/4.4.1/README.html
- Для первичной настройки (да и вообще на будущее, так как обычно трекер находится в локалке, и доступ извне защищает отдельный firewall) выключаю UFW:
sudo ufw disable
- Ставлю всю что необходимо для работы с БД (при установке нужно будет задать пароль пользователю root внутри mysql):
sudo apt-get install mysql-server mysql-client libmysqlclient-dev
- Оптимизирую размер буфера под работу SQL а именно в файле / etc/mysql/mysql.conf.d/mysqld.cnf добавляю в раздел Fine Tuning строку (50-80% ОЗУ):
innodb_buffer_pool_size = 2048M
- Запускаю мастер настройки безопасности mysql и перезапускаю демон:
sudo mysql_secure_installation
sudo service mysql restart
- Ставлю все что необходимо для работы веб-сервера:
sudo apt-get install make apache2 libapache2-mod-fcgid libssl-dev libyaml-perl libgd2-xpm-dev libgd-gd2-perl libgraphviz-perl
- Создаю пользователя для трекера заявок и добавляю его в группу пользователей apache:
sudo adduser --system --group rt
sudo usermod -aG rt www-data
- Для отправки с сервера почтовых сообщений ставлю нужные пакеты (при установке укаываю режим работы Satellite, имя системы могу не менять, в качестве relay в моем случае выступает smtp.yandex.ru):
sudo apt-get install postfix mailutils
- В основной конфигурационный файл postfix /etc/postfix/main.cf добавляю (для красоты после s_mtp_tls_session_cache_database_ ):
smtp_sasl_auth_enable = yes
smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd
smtp_sasl_security_options = noanonymous
smtp_sasl_type = cyrus
smtp_sasl_mechanism_filter = login
smtp_sender_dependent_authentication = yes
sender_dependent_relayhost_maps = hash:/etc/postfix/sender_relay
smtp_generic_maps = hash:/etc/postfix/generic
smtp_tls_CAfile = /etc/postfix/cacert.pem
smtp_use_tls = yes
- Создаю файл /etc/postfix/sasl_passwd и указываю логин и пароль для аутентификации на внешнем почтовом сервере (на том который указали при установке postfix в качестве релея) в формате:
smtp.yandex.ru [email protected]:password
Затем меняю режим доступа к файлу и заугружаю информацию в postfix:
sudo chmod 400 /etc/postfix/sasl_passwd
sudo postmap /etc/postfix/sasl_passwd
- Создаю файл /etc/postfix/generic в котором указываю что для отправки писем с этого сервера используется ящик alert в формате:
**@полное_имя_сервера ** [email protected]
После этого загружаю информацию в postfix: sudo postmap /etc/postfix/generic
- Создаю файл /etc/postfix/sender_relay в котором говорю что для домена example.com будет использоваться relay smtp.yandex.ru в формате:
@example.com smtp.yandex.ru
И загружаю конфиг в postfix: sudo postmap /etc/postfix/sender_relay
- Копирую доступный (в разных версиях ОС тут бывают разные сертификаты) корневой сертификат в файл _/etc/postfix/cacert.pem_и перезапускаю демон:
sudo cat /etc/ssl/certs/thawte_Primary_Root_CA.pem | sudo tee -a /etc/postfix/cacert.pem
sudo service postfix restart
- Создаю тестовое сообщение и отправляю его:
echo "Hello World" | mail -s "Test Message" [email protected] -aFrom:[email protected]
- Проверяю доставку письма к себе на [email protected] и если что-то пошло не так изучаю лог:
tail /var/log/mail.log
- Устанавливаю все необходимое для установки rt (устанавливать буду из скаченнного пакета):
sudo apt-get install perl make
- Скачиваю установочный файл (выбрать версию можно вбив в браузер ссылку и стерев имя пакета):
**cd ~**
wget https://download.bestpractical.com/pub/rt/release/rt-4.4.1.tar.gz
- Распакую пакет во временную директорию и перейду в нее:
sudo tar xzvf rt-4.4.1.tar.gz -C /tmp
cd /tmp/rt-4.4.1
- Для подготовки пакета к установке нужно запустить скрипт ./configure указав ему необходимые параметры (можно их посмотреть командой ./configure --help)
sudo ./configure --with-web-user=www-data --with-web-group=www-data --enable-graphviz --enable-gd** --enable-externalauth**
- Теперь нужно настроить для работы CPAN:
sudo cpan
yes
o conf prerequisites** _ **policy follow ** **
o conf build** _ requires _ install _ **policy
o conf commit
q
- Для проверки готовности системы к установке запускаю тестирование и так как точно не хватает многих модулей - запускаю автоматическую подготовку системы
P.S. Второй шаг может длиться до получаса, при этом может уйти в цикл на какой-нибудь поломанной зависимости и придется гуглить в чем там дело.
У меня, к примеру, спросил готов ли я работать с моей версией perl, ведь в ней не поддерживается JSON:XL. Я выбрал yes.
Также спросил строить ли ему модуль XStash - я решил что пусть строит, yes.
От проведения дополнительных тестов я отказался, no.
P.P.S Необходимо повторять эти команды по очереди, пока testdeps нее скажет что все в порядке.
sudo make testdeps
sudo make fixdeps
- Завершающий этап установки: запуск сценарий установки и инициализация БД (нужен пароль от mysql root из шага №2)
sudo make install
sudo make initialize-database
-
Для корректной работы веб интерфейса необходимо указать в файле /etc/apache2/sites-available/000-default.conf имя сервера (или внешнее имя сайта, которое будете привязывать к RT) и настройки сайта (в том числе откоментировать нужное, в зависимости от версии Apache):
ServerName rt.example.com
** AddDefaultCharset UTF-8**
** DocumentRoot /opt/rt4/share/html**
** Alias /NoAuth/images/ /opt/rt4/share/html/NoAuth/images/**
** ScriptAlias / /opt/rt4/sbin/rt-server.fcgi/**
** <Location />**
** ## Apache version < 2.4 (e.g. Debian 7.2)**
** #Order allow,deny**
** #Allow from all**
** ## Apache 2.4**
** Require all granted**
** </Location>**
- Необходимо перезапустить веб-сервер и проверить доступность сайта rt по выбранному вам адресу (или имени). Логин: root, пароль: password.
sudo service apache2 restart
- Редактирую под себя файл конфигурации /opt/rt4/etc/RT_SiteConfig.pm (язык, имя сайта, адрес и имя для обращения и т.д.), для применения нужно перезапустить apahe:
Set( @LexiconLanguages, qw(en ru));
Set( $rtname, 'rt.example.com');
Set( $WebDomain, 'rt.example.com');
Set( $Organisation, 'rt.example.com');
Set( @ReferrerWhitelist, qw(rt.example.com:80 12.34.56.78:80));
Set( $Timezone , 'Europe/Moscow');
Set( $LogoLinkURL, ' http:// rt.example.com /');
- Прочие настройки могу изменить через веб-интерфейс:
Root - настройки - персональные данные - пароль
Администратор – утилиты – оформление (меняем лого и можем сменить цвета).
Администратор – общие – обзор RT (меняем внешний вид главной страницы).
Администратор – общие – шаблоны (можно перевести на русский язык текст в шаблонах).
Администратор – общие – скриплеты (здесь редко нужно что-то менять: это действия выполняемые при каких-то изменениях по заявке).
- Для настройки связки rt с доменом редактирую файл конфигурации (предварительно создаю в домене учентную запись для связки с rt с правами пользователя домена, в моем случае [email protected]) /opt/rt4/etc/RT_SiteConfig.pm
P.S. я импортирую пользователей из всего домена, а можно указать в $LDAPBase конкретное подразделение.
P.P.S мануал по плагину: https://metacpan.org/pod/RT::Authen::ExternalAuth
Set($LDAPHost,'domaincontroller.mydomain.local');
Set($LDAPUser,'mydomain\connect');
Set($LDAPPassword,'password');
Set($LDAPBase,'dc=mydomain,dc=local');
Set($LDAPFilter, ' (&(objectCategory=person))');
Set($LDAPMapping, {Name => 'sAMAccountName',
** RealName => 'cn',**
** EmailAddress => 'mail'**
});
Set($LDAPCreatePrivileged, 1);
Set($LDAPUpdateUsers, 1);
Set($AutoCreateNonExternalUsers, 1);
- Выполняю тестовый импорт пользователей (группы втягивать не хочу) и проверяю успешное выполнение команды в лог файле:
sudo /opt/rt4/sbin/rt-ldapimport --debug > ldapimport.debug 2>&1
cat ldapimport.debug
- В случае отсутствия ошибок делаю реальный импорт (разрабы рекомендуют добавить эту задачу в cron для регулярного импорта пользователей).
После импорта в "Администратор - Пользователи - выбрать" нужно отключить учетные записи которые не будут входиь в rt (тот же connect например).
sudo **** /opt/rt4/sbin/rt-ldapimport **** --import
- Для включения аутентификации через контроллер домена добавляю в конфигурационый файл /opt/rt4/etc/RT_SiteConfig.pm настройки. Для проверки корректной работы нужно перезапустить apache и войти в RT с любой импортированной доменной учетной записью.
Set($ExternalAuthPriority, ['My_AD'] );
Set($ExternalInfoPriority, ['My_AD'] );
Set( $UserAutocreateDefaultsOnLogin, { Privileged => 1 , Lang => 'ru'} );
Set($ExternalSettings, {
** 'My_AD' => {**
** 'type' => 'ldap',**
** 'server' => 'domaincontroller.**** mydomain **.local',
** 'user' => '**** mydomain **\connect',
** 'pass' => 'password',**
** 'base' => 'dc=**** mydomain **,dc=local',
** 'filter' => '(objectCategory=person)',**
** 'attr_match_list' => ['Name'],**
** 'attr_map' => {**
** 'Name' => 'sAMAccountName',**
** 'EmailAddress' => 'mail',**
** 'RealName' => 'cn',**
** **** },**
** },**
} );
- Если необходимо настроить авторизацию при помощи веб-сервера (в дополнение к предыдущим), то нужно отредактировать настройки сайта трекера, в моем случае это сайт по умолчанию /etc/apache2/sites-available/000-default.conf
<Location />
** Require valid-user**
** AuthType Basic**
** AuthName "Трекер заявок"**
** AuthBasicProvider ldap**
** AuthLDAPURL "ldap://domaincontroller.**** mydomain****.local/dc=mydomain,dc=local?sAMAccountName?sub?(objectClass=*)"**
** AuthLDAPBindDN "cn=connect,dc=mydomain,dc=local"**
** AuthLDAPBindPassword "password"**
</Location >
- Для работы аутентификации в ldap через Apache нужно включить соответсвующий модуль:
sudo a2enmod authnz_ldap
sudo service apache2 restart
- В настройках RT (файл /opt/rt4/etc/RT_SiteConfig.pm ) следует разрешить аутентификацию сервером Apache (и перезапустить демон apache):
Set($WebRemoteUserAuth, 1);