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

Обновлено и опубликовано Опубликовано:

Тематические термины: TeamPass, CentOS

В данной инструкции описан процесс использования портала хранения паролей, начиная с его установки. Примеры команд применимы для Linux CentOS 7, но во многом, могут быть применены к системам на основе Deb-пакетов (Debian, Ubuntu). В качестве веб-сервера в статье используются как 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:

Приветствие NGINX

2. Apache

Для установки apache вводим команду:

yum install httpd

После запускаем его:

systemctl enable httpd

systemctl start httpd

Открываем браузер и вводим IP-адрес нашего сервера — мы должны увидеть:

Приветствие Apache

Установка 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).

Настраиваем веб-сервер

В зависимости от выбранного веб-сервера действия будут различаться.

1. NGINX

Для обработки 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

2. Apache

Открываем конфигурационный файл 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) — мы должны увидеть, примерно, следующее:

phpinfo

Установка СУБД

В качестве сервера баз данных будем использовать 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:

Поддержка MySQL в PHP

Установка 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

* где teampass — название базы и логин для подключения; teampass123 — созданный нами пароль.

Нажимаем LAUNCH — система должна вернуть «Connection is successful». Нажимаем NEXT.

На следующем шаге вводим пароль администратора и нажимаем NEXT.

Теперь нажимаем LAUNCH — в базе будут созданы таблицы. После завершения процесса кликаем по NEXT.

На следующем этапе кликаем LAUNCH и NEXT.

Установка завершена — возвращаемся к порталу teampass.dmosk.local и вводим логин (admin) и пароль (сами вводили в процессе веб-установки) администратора для первого входа в систему.

Первичная настройка

В программе есть много настроек. Рассмотрим самые необходимые на первых этапах ее использования.

1. Язык

По умолчанию, используется английский язык. Если хотим его поменять на русский, заходим в пункт меню Settings:

Пункт меню с настройками

Переходим на вкладку Settings:

Вкладка с общими настройками

Находим пункт настроек «Default user interface language» и задаем ему значение russian (или любой другой язык):

Default user interface language

Теперь переходим в настройки профиля пользователя:

Настройка профиля в Teampass

И редактируем язык:

Настройка языка в настройках профиля Teampass

2. Время

Просто меняем часовой пояс. Для этого переходим в раздел Settings - вкладку Settings и меняем часовой пояс на Europe/Moscow:

Смена часового пояса в настройках Teampass

3. Режим обслуживания

После установки Teampass работает в режиме обслуживания. Данный режим не позволяет входить на портал за исключением администратора.

Чтобы отключить режим обслуживания, переходим в раздел Settings - вкладку Settings и переводим переключатель «Перевести TeamPass в режим обслуживания» в положение Нет:

Отключение режима обслуживания

Начало работы

Чтобы начать использовать программу, создадим пользователя, папку и назначим ее права. После создадим первый пароль.

Создание папки

Кликаем по пункту меню Управление папками и нажимаем по Создать папку:

Переход к созданию папки

В открывшемся окне заполняем поля «Имя папки», «Родительская папка» и «Требуемая сложность»:

Заполнение данных для создания папки

Нажимаем Сохранить.

Создание роли

Кликаем по пункту меню Управление ролями и нажимаем по Создать роль:

Переход к созданию роли

В открывшемся окне заполняем поля «Имя» и «Требуемая сложность»:

Заполняем данные для создания роли

Нажимаем Сохранить. В списке ролей появится новая — кликаем по изображению руки на красном фоне для настройки соответствующих разрешений:

Настройка роли для определенной папки

В открывшемся окне указываем уровень доступа — чтение или запись:

Задаем уровень доступа роли для папки

Нажимаем Сохранить.

Создание пользователя

Кликаем по пункту меню Управление пользователями и нажимаем по Добавить нового пользователя:

Создание нового пользователя

Заполняем поля и выбираем права доступа:

Заполнение полей для создания нового пользователя

Нажимаем кнопку Сохранить.

Создание пароля

Входим на портал под созданной учетной записью. Переходим в папку, к которой был предоставлен доступ.

Наводим курсор на изображение меню в центральной части экрана - в выпавшем меню выбираем пункт Создать элемент:

Создание пароля

В открывшемся окне заполняем поля на вкладке «Описание» и создаем пароль во вкладке «Пароли и Видимость».

LDAP аутентификация

Устанавливаем для PHP модуль ldap:

yum install php72-php-ldap

Переходим на портал - открываем Настройки - переходим на вкладку LDAP - включаем аутентификацию через LDAP и заполняем формы для нашего сервера аутентификации:

Настройка аутентификации через LDAP на портале Teampass

Выходим из профиля администратора и пробуем залогиниться под учетной записью из каталога LDAP.

HTTPS

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

Получение сертификата

Есть несколько распространенных способов получить сертификат:

  1. Купить в официальном сертификационном центре.
  2. Создать с помощью внутреннего центра сертификации.
  3. Получить бесплатно у Let's Encrypt.
  4. Создать самозаверенный сертификат.

В качестве тестового варианта, воспользуемся последним вариантом, хотя он не рекомендуется в продуктивной среде, так как портал будет постоянно выдавать предупреждения о том, что сертификат не является подлинным. Так или иначе, для тестового развертывания это подходит — вводим следующие команды:

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"

Настройка веб-сервера

1. NGINX

Открываем конфигурационный файл для виртуального домена и приводим его к следующему виду:

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

2. Apache

Устанавливаем модуль поддержки 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» для перехода на обновленный портал.

# CentOS # Безопасность # Серверы
Дмитрий Моск — частный мастер
Была ли полезна вам эта инструкция?

Да            Нет