Skip to content

Latest commit

 

History

History
328 lines (165 loc) · 15.6 KB

Issue tracker for IT department.md

File metadata and controls

328 lines (165 loc) · 15.6 KB

Первичная настройка трекера заявок 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

  1. Для первичной настройки (да и вообще на будущее, так как обычно трекер находится в локалке, и доступ извне защищает отдельный firewall) выключаю UFW:

sudo ufw disable

  1. Ставлю всю что необходимо для работы с БД (при установке нужно будет задать пароль пользователю root внутри mysql):

sudo apt-get install mysql-server mysql-client libmysqlclient-dev

  1. Оптимизирую размер буфера под работу SQL а именно в файле / etc/mysql/mysql.conf.d/mysqld.cnf добавляю в раздел Fine Tuning строку (50-80% ОЗУ):

innodb_buffer_pool_size = 2048M

  1. Запускаю мастер настройки безопасности mysql и перезапускаю демон:

sudo mysql_secure_installation

sudo service mysql restart

  1. Ставлю все что необходимо для работы веб-сервера:

sudo apt-get install make apache2 libapache2-mod-fcgid libssl-dev libyaml-perl libgd2-xpm-dev libgd-gd2-perl libgraphviz-perl

  1. Создаю пользователя для трекера заявок и добавляю его в группу пользователей apache:

sudo adduser --system --group rt

sudo usermod -aG rt www-data


  1. Для отправки с сервера почтовых сообщений ставлю нужные пакеты (при установке укаываю режим работы Satellite, имя системы могу не менять, в качестве relay в моем случае выступает smtp.yandex.ru):

sudo apt-get install postfix mailutils

  1. В основной конфигурационный файл 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

  1. Создаю файл /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

  1. Создаю файл /etc/postfix/generic в котором указываю что для отправки писем с этого сервера используется ящик alert в формате:

**@полное_имя_сервера ** [email protected]

После этого загружаю информацию в postfix: sudo postmap /etc/postfix/generic

  1. Создаю файл /etc/postfix/sender_relay в котором говорю что для домена example.com будет использоваться relay smtp.yandex.ru в формате:

@example.com smtp.yandex.ru

И загружаю конфиг в postfix: sudo postmap /etc/postfix/sender_relay

  1. Копирую доступный (в разных версиях ОС тут бывают разные сертификаты) корневой сертификат в файл _/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

  1. Создаю тестовое сообщение и отправляю его:

echo "Hello World" | mail -s "Test Message" [email protected] -aFrom:[email protected]

  1. Проверяю доставку письма к себе на [email protected] и если что-то пошло не так изучаю лог:

tail /var/log/mail.log


  1. Устанавливаю все необходимое для установки rt (устанавливать буду из скаченнного пакета):

sudo apt-get install perl make

  1. Скачиваю установочный файл (выбрать версию можно вбив в браузер ссылку и стерев имя пакета):

**cd ~**

wget https://download.bestpractical.com/pub/rt/release/rt-4.4.1.tar.gz

  1. Распакую пакет во временную директорию и перейду в нее:

sudo tar xzvf rt-4.4.1.tar.gz -C /tmp

cd /tmp/rt-4.4.1

  1. Для подготовки пакета к установке нужно запустить скрипт ./configure указав ему необходимые параметры (можно их посмотреть командой ./configure --help)

sudo ./configure --with-web-user=www-data --with-web-group=www-data --enable-graphviz --enable-gd** --enable-externalauth**

  1. Теперь нужно настроить для работы CPAN:

sudo cpan

yes

o conf prerequisites** _ **policy follow ** **

o conf build** _ requires _ install _ **policy

o conf commit

q

  1. Для проверки готовности системы к установке запускаю тестирование и так как точно не хватает многих модулей - запускаю автоматическую подготовку системы

P.S. Второй шаг может длиться до получаса, при этом может уйти в цикл на какой-нибудь поломанной зависимости и придется гуглить в чем там дело.

У меня, к примеру, спросил готов ли я работать с моей версией perl, ведь в ней не поддерживается JSON:XL. Я выбрал yes.

Также спросил строить ли ему модуль XStash - я решил что пусть строит, yes.

От проведения дополнительных тестов я отказался, no.

P.P.S Необходимо повторять эти команды по очереди, пока testdeps нее скажет что все в порядке.

sudo make testdeps

sudo make fixdeps

  1. Завершающий этап установки: запуск сценарий установки и инициализация БД (нужен пароль от mysql root из шага №2)

sudo make install

sudo make initialize-database

  1. Для корректной работы веб интерфейса необходимо указать в файле /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>**

  1. Необходимо перезапустить веб-сервер и проверить доступность сайта rt по выбранному вам адресу (или имени). Логин: root, пароль: password.

sudo service apache2 restart


  1. Редактирую под себя файл конфигурации /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 /');

  1. Прочие настройки могу изменить через веб-интерфейс:

Root - настройки - персональные данные - пароль

Администратор – утилиты – оформление (меняем лого и можем сменить цвета).

Администратор – общие – обзор RT (меняем внешний вид главной страницы).

Администратор – общие – шаблоны (можно перевести на русский язык текст в шаблонах).

Администратор – общие – скриплеты (здесь редко нужно что-то менять: это действия выполняемые при каких-то изменениях по заявке).

  1. Для настройки связки 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);

  1. Выполняю тестовый импорт пользователей (группы втягивать не хочу) и проверяю успешное выполнение команды в лог файле:

sudo /opt/rt4/sbin/rt-ldapimport --debug > ldapimport.debug 2>&1

cat ldapimport.debug

  1. В случае отсутствия ошибок делаю реальный импорт (разрабы рекомендуют добавить эту задачу в cron для регулярного импорта пользователей).

После импорта в "Администратор - Пользователи - выбрать" нужно отключить учетные записи которые не будут входиь в rt (тот же connect например).

sudo **** /opt/rt4/sbin/rt-ldapimport **** --import

  1. Для включения аутентификации через контроллер домена добавляю в конфигурационый файл /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',**

** **** },**

** },**

} );


  1. Если необходимо настроить авторизацию при помощи веб-сервера (в дополнение к предыдущим), то нужно отредактировать настройки сайта трекера, в моем случае это сайт по умолчанию /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 >

  1. Для работы аутентификации в ldap через Apache нужно включить соответсвующий модуль:

sudo a2enmod authnz_ldap

sudo service apache2 restart

  1. В настройках RT (файл /opt/rt4/etc/RT_SiteConfig.pm ) следует разрешить аутентификацию сервером Apache (и перезапустить демон apache):

Set($WebRemoteUserAuth, 1);