Установка и использование TeamPass на CentOS 7

Тематические термины: TeamPass, CentOS
В данной инструкции описан процесс использования портала хранения паролей, начиная с его установки. Примеры команд применимы для Linux CentOS 7, но во многом, могут быть применены к системам на основе Deb-пакетов (Debian, Ubuntu). В качестве веб-сервера в статье используются как NGINX, так и Apache.
Подготовка системы
Настройка безопасности
Дополнительный репозиторий
Установка веб-сервера
NGINX
Apache
Установка PHP
Настройка php + nginx
Настройка php + apache
Проверка работы php
Установка MySQL (MariaDB)
Установка Teampass
Установка компонентов и настройка веб-сервера
Подготовка СУБД
Загрузка и установка Teampass
Первичная настройка
Языковая настройка
Настройка времени
Отключение режима обслуживания
Начало работы
Создание папки
Создание роли
Создание пользователя
Создание пароля
Аутентификация через LDAP
Настройка HTTPS
Получение сертификата
Настройка веб-сервера nginx
Настройка веб-сервера apache
Обновление релиза
Резервное копирование
Обновление
Подготовка сервера
Выполним предварительные настройки.
Безопасность
В системах на базе Red Hat (CentOS, Fedora, Red Hat), по умолчанию, активированы системы безопасности. Их нужно отключить или настроить.
Добавляем правило в firewalld:
firewall-cmd --permanent --add-port=80/tcp
firewall-cmd --permanent --add-port=443/tcp
firewall-cmd --reload
или отключаем firewalld:
systemctl stop firewalld
systemctl disable firewalld
Отключаем SELinux:
sed -i "s/SELINUX=enforcing/SELINUX=disabled/" /etc/selinux/config
setenforce 0
Также читайте инструкцию по настйроке SELinux.
Установка пакетов
Для установки некоторых пакетов нам понадобиться расширенный репозиторий Epel. Для его установки вводим:
yum install epel-release
Установка веб-сервера
Приложение TeamPass работает на основе веб и должно запускаться как веб-сервере. Рассмотрим варианты с использованием NGINX и Apache.
1. NGINX
Устанавливаем nginx:
yum install nginx
После установки, запускаем его:
systemctl enable nginx
systemctl start nginx
Открываем браузер и вводим IP-адрес сервера — мы должны увидеть приветствие NGINX:
2. Apache
Для установки apache вводим команду:
yum install httpd
После запускаем его:
systemctl enable httpd
systemctl start httpd
Открываем браузер и вводим IP-адрес нашего сервера — мы должны увидеть:
Установка PHP
По умолчанию, в CentOS устанавливается PHP версии 5.4. Некоторые компоненты могу работать не корректно вместе с Teampass. Поэтому необходимо выполнить установку php7. Для этого установим репозиторий REMI:
rpm -Uvh http://rpms.remirepo.net/enterprise/remi-release-7.rpm
Теперь ставим php7:
yum install php72
* на момент написания статьи последняя стабильная версия была 7.2 (ссылка на PHP: Downloads).
Настраиваем веб-сервер
В зависимости от выбранного веб-сервера действия будут различаться.
Для обработки php с сервером nginx устанавливаем php-fpm:
yum install php72-php-fpm
Запускаем его:
systemctl enable php72-php-fpm
systemctl start php72-php-fpm
Создаем конфигурационный файл с виртуальным доменом в nginx:
vi /etc/nginx/conf.d/teampass.conf
server {
listen 80;
server_name teampass.dmosk.local;
set $root_path /var/www/teampass;
gzip on;
gzip_disable "msie6";
gzip_min_length 1000;
gzip_vary on;
gzip_proxied expired no-cache no-store private auth;
gzip_types text/plain text/css application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript application/javascript;
root $root_path;
index index.php;
expires modified +1w;
location ~ \.php$ {
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $root_path$fastcgi_script_name;
include fastcgi_params;
fastcgi_param DOCUMENT_ROOT $root_path;
}
}
Перезапускаем nginx:
systemctl restart nginx
Открываем конфигурационный файл apache:
vi /etc/httpd/conf/httpd.conf
Находим строку:
<IfModule dir_module>
DirectoryIndex index.html
</IfModule>
и приводим ее к виду:
<IfModule dir_module>
DirectoryIndex index.php index.html
</IfModule>
* добавляем index.php.
Создаем виртуальный домен:
vi /etc/httpd/conf.d/teampass.conf
<VirtualHost *:80>
Define root_domain teampass.dmosk.local
Define root_path /var/www/teampass
ServerName ${root_domain}
DocumentRoot ${root_path}
</VirtualHost>
Перезапускаем apache:
systemctl restart httpd
Проверяем работу веб-сервера с php
Создаем каталог:
mkdir -p /var/www/teampass
Создаем файл со следующим содержимым:
vi /var/www/teampass/index.php
<?php phpinfo(); ?>
Открываем браузер и вводим имя виртуального домена (в нашем случае, teampass.dmosk.local) — мы должны увидеть, примерно, следующее:
Установка СУБД
В качестве сервера баз данных будем использовать MariaDB. Ставим:
yum install mariadb-server
Запускаем:
systemctl enable mariadb
systemctl start mariadb
Задаем пароль для суперпользователя СУБД:
mysqladmin -u root password
Устанавливаем модули php для подключения и работы с MySQL (MariaDB):
yum install php72-php-mysql php72-php-mysqli
Перезапускаем сервис обработки php.
Для варианта с NGINX:
systemctl restart php72-php-fpm
Для Apache:
systemctl restart httpd
Открываем нашу страницу с phpinfo — мы должны найти информацию поддержке MySQL:
Установка Teampass
Переходим к установке самого портала.
Дополнительная настройка системы
Устанавливаем дополнительные модули php, необходимые для Teampass:
yum install php72-php-mcrypt php72-php-mbstring php72-php-bcmath php72-php-gd php72-php-xml
Меняем max_execution_time:
vi /etc/opt/remi/php72/php.ini
* путь к конфигурационному файлу php.ini также можно посмотреть командой php72 -i | grep php.ini.
max_execution_time = 60
* меняем с 30 на 60.
и в этом же файле временную зону:
date.timezone = "Europe/Moscow"
* в данном примере московское время.
Перезапускаем веб-сервис:
systemctl restart php72-php-fpm
systemctl restart httpd
* php-fpm для nginx, httpd — apache.
Подготовка СУБД
Заходим в консоль управления базой данных:
mysql -uroot -p
Создаем новую базу:
> CREATE DATABASE teampass DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
* в данном примере мы создали базу с именем teampass в кодировке UTF-8.
Создаем пользователя с доступом к созданной базе:
> GRANT ALL PRIVILEGES ON teampass.* TO teampass@localhost IDENTIFIED BY 'teampass123';
* где teampass@localhost — пользователь teampass, который может подключаться к базе с локального сервера; teampass123 — пароль для подключения.
Отключаемся от mysql-shell:
> \q
Загрузка и установка Teampass
Переходим по адресу https://github.com/nilsteampassnet/TeamPass/releases и копируем ссылку на последнюю версию релиза программы.
Воспользовавшись ссылкой, скачиваем исходник:
wget https://github.com/nilsteampassnet/TeamPass/archive/2.1.27.16.tar.gz
* если система вернет ошибку, устанавливаем утилиту для загрузки — yum install wget.
Распаковываем архив в каталог портала:
tar -C /var/www/teampass -xvf 2.1.27.16.tar.gz --strip-components 1
Задаем владельца для каталога:
chown -R apache:apache /var/www/teampass
Открываем браузер и вводим адрес нашего домена (teampass.dmosk.local) — должна открыться страница установки портала — нажимаем NEXT.
На следующем шаге система проверить корректность настроек сервера — кликаем по LAUNCH. Если все настроено правильно, нажимаем NEXT или устраняем недочеты.
Вводим данные для подключения к созданной базе:
* где teampass — название базы и логин для подключения; teampass123 — созданный нами пароль.
Нажимаем LAUNCH — система должна вернуть «Connection is successful». Нажимаем NEXT.
На следующем шаге вводим пароль администратора и нажимаем NEXT.
Теперь нажимаем LAUNCH — в базе будут созданы таблицы. После завершения процесса кликаем по NEXT.
На следующем этапе кликаем LAUNCH и NEXT.
Установка завершена — возвращаемся к порталу teampass.dmosk.local и вводим логин (admin) и пароль (сами вводили в процессе веб-установки) администратора для первого входа в систему.
Первичная настройка
В программе есть много настроек. Рассмотрим самые необходимые на первых этапах ее использования.
По умолчанию, используется английский язык. Если хотим его поменять на русский, заходим в пункт меню Settings:
Переходим на вкладку Settings:
Находим пункт настроек «Default user interface language» и задаем ему значение russian (или любой другой язык):
Теперь переходим в настройки профиля пользователя:
И редактируем язык:
Просто меняем часовой пояс. Для этого переходим в раздел Settings - вкладку Settings и меняем часовой пояс на Europe/Moscow:
После установки Teampass работает в режиме обслуживания. Данный режим не позволяет входить на портал за исключением администратора.
Чтобы отключить режим обслуживания, переходим в раздел Settings - вкладку Settings и переводим переключатель «Перевести TeamPass в режим обслуживания» в положение Нет:
Начало работы
Чтобы начать использовать программу, создадим пользователя, папку и назначим ее права. После создадим первый пароль.
Создание папки
Кликаем по пункту меню Управление папками и нажимаем по Создать папку:
В открывшемся окне заполняем поля «Имя папки», «Родительская папка» и «Требуемая сложность»:
Нажимаем Сохранить.
Создание роли
Кликаем по пункту меню Управление ролями и нажимаем по Создать роль:
В открывшемся окне заполняем поля «Имя» и «Требуемая сложность»:
Нажимаем Сохранить. В списке ролей появится новая — кликаем по изображению руки на красном фоне для настройки соответствующих разрешений:
В открывшемся окне указываем уровень доступа — чтение или запись:
Нажимаем Сохранить.
Создание пользователя
Кликаем по пункту меню Управление пользователями и нажимаем по Добавить нового пользователя:
Заполняем поля и выбираем права доступа:
Нажимаем кнопку Сохранить.
Создание пароля
Входим на портал под созданной учетной записью. Переходим в папку, к которой был предоставлен доступ.
Наводим курсор на изображение меню в центральной части экрана - в выпавшем меню выбираем пункт Создать элемент:
В открывшемся окне заполняем поля на вкладке «Описание» и создаем пароль во вкладке «Пароли и Видимость».
LDAP аутентификация
Устанавливаем для PHP модуль ldap:
yum install php72-php-ldap
Переходим на портал - открываем Настройки - переходим на вкладку LDAP - включаем аутентификацию через LDAP и заполняем формы для нашего сервера аутентификации:
Выходим из профиля администратора и пробуем залогиниться под учетной записью из каталога LDAP.
HTTPS
Так как портал предназначен для хранения секретной информации, правильнее будет настроить доступ по защищенному протоколу https. Для этого необходимо получить сертификат и настроить веб-сервер соответствующем образом.
Получение сертификата
Есть несколько распространенных способов получить сертификат:
- Купить в официальном сертификационном центре.
- Создать с помощью внутреннего центра сертификации.
- Получить бесплатно у Let's Encrypt.
- Создать самозаверенный сертификат.
В качестве тестового варианта, воспользуемся последним вариантом, хотя он не рекомендуется в продуктивной среде, так как портал будет постоянно выдавать предупреждения о том, что сертификат не является подлинным. Так или иначе, для тестового развертывания это подходит — вводим следующие команды:
mkdir -p /etc/ssl/teampass
openssl req -new -x509 -days 1461 -nodes -out /etc/ssl/teampass/cert.pem -keyout /etc/ssl/teampass/cert.key -subj "/C=RU/ST=SPb/L=SPb/O=Global Security/OU=IT Department/CN=test.dmosk.local/CN=test"
Настройка веб-сервера
Открываем конфигурационный файл для виртуального домена и приводим его к следующему виду:
server {
listen 80;
server_name teampass.dmosk.local;
return 301 https://$host$request_uri;
}
server {
listen 443;
server_name teampass.dmosk.local;
set $root_path /var/www/teampass;
ssl on;
ssl_certificate /etc/ssl/teampass/cert.pem;
ssl_certificate_key /etc/ssl/teampass/cert.key;
gzip on;
gzip_disable "msie6";
gzip_min_length 1000;
gzip_vary on;
gzip_proxied expired no-cache no-store private auth;
gzip_types text/plain text/css application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript application/javascript;
root $root_path;
index index.php;
expires modified +1w;
location ~ \.php$ {
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $root_path$fastcgi_script_name;
include fastcgi_params;
fastcgi_param DOCUMENT_ROOT $root_path;
}
}
Проверяем конфигурацию nginx и перезапускаем его:
nginx -t
systemctl restart nginx
Устанавливаем модуль поддержки https:
yum install mod_ssl
Открываем файл настройки виртуального домена teampass и приводим его к виду:
vi /etc/httpd/conf.d/teampass.conf
<VirtualHost *:80>
Define root_domain teampass.dmosk.local
Define root_path /var/www/teampass
ServerName ${root_domain}
DocumentRoot ${root_path}
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}
</VirtualHost>
<VirtualHost *:443>
Define root_domain teampass.dmosk.local
Define root_path /var/www/teampass
ServerName ${root_domain}
DocumentRoot ${root_path}
SSLEngine on
SSLCertificateFile /etc/ssl/teampass/cert.pem
SSLCertificateKeyFile /etc/ssl/teampass/cert.key
</VirtualHost>
Проверяем конфигурацию Apache и перезапускаем его:
apachectl configtest
systemctl restart httpd
Обновление Teampass
При выходе новой версии программы, необходимо выполнить процедуры обновления базы данных и файлов портала.
Резервное копирование
Перед выполнением обновления рекомендуется сделать резервные копии базы данных и файлов.
Для создания дампа MySQL вводим:
mysqldump -v -uroot -p teampass | gzip > /tmp/teampass.sql.gz
* где teampass — имя нашей базы teampass; /tmp/teampass.sql.gz — полный путь до файла дампа.
Для архивирования портала вводим:
tar -czvf /tmp/teampass.tar.gz /var/www/teampass
* где /tmp/teampass.tar.gz — полный путь до файла архива; /var/www/teampass — путь к каталогу, в котором находятся файлы портала.
Подробнее про создание дампа MySQL и использование tar.
Обновление
Процедура начинается также, как установка. Переходим по адресу https://github.com/nilsteampassnet/TeamPass/releases и копируем ссылку на последнюю версию релиза программы.
Воспользовавшись ссылкой, скачиваем исходник:
wget https://github.com/nilsteampassnet/TeamPass/archive/2.1.27.19.tar.gz
Распаковываем архив в каталог портала:
tar -C /var/www/teampass -xvf 2.1.27.19.tar.gz --strip-components 1
Задаем права на каталог с файлами портала:
chown -R apache:apache /var/www/teampass
Заходим на портал по ссылке teampass.dmosk.local/install/upgrade.php, где teampass.dmosk.local — адрес виртуального домена. Выполняем по шагам следующие процедуры:
1. В открывшемся окне вводим логин и пароль для администратора портала и нажимаем LAUNCH - затем NEXT.
2. В следующем окне нажимаем LAUNCH — запустится проверка системы. Если все в порядке, нажимаем NEXT, в противном случае — исправляем ошибки.
3. На следующем шаге переходим в консоль сервера и открываем конфигурационный файл teampass:
vi /var/www/teampass/includes/config/settings.php
Редактируем настройки подключения к базе:
$server = "localhost";
$user = "teampass";
$pass = "teampass123";
$database = "teampass";
$pre = "teampass_";
$port = 3306;
$encoding = "";
* как правило, поменять нужно только пароль ($pass).
Возвращаемся к порталу и ставим галочку Don't activate the Maintenance mode. Кликаем по LAUNCH - затем NEXT.
4. В окне «Converting database to UTF-8» кликаем по NEXT.
5. В следующем окне нажимаем LAUNCH - ждем окончания преобразования баps данных - NEXT.
6. В окне «Miscellaneous» нажимаем LAUNCH и NEXT.
7. Обновление завершено — кликаем по ссылке «Open TeamPass» для перехода на обновленный портал.