Гид по технологиям

Установка Passbolt на CentOS 7 — пошаговый гид

• 9 min read • DevOps • Обновлено 25 Nov 2025
Установка Passbolt на CentOS 7 — пошагово
Установка Passbolt на CentOS 7 — пошагово

Passbolt — свободный менеджер паролей для команд. В этом руководстве подробно показано, как установить Passbolt на CentOS 7 под стеком LEMP (Nginx, MariaDB, PHP-FPM), настроить SSL через Let’s Encrypt, создать OpenPGP-ключ сервера, выполнить постустановку и базовую жёсткую настройку безопасности. Включены проверки, сценарии устранения неполадок, правила SELinux и шаблоны задач для ролей.

Этот материал шаг за шагом ведёт системного администратора (или инженера DevOps) через установку Passbolt на сервер CentOS 7. Здесь собраны практические команды, примеры конфигураций, рекомендации по безопасности и возможные причины ошибок с решениями.

Важно: все команды предполагают, что у вас есть root-доступ или sudo-привилегии.

Кратко о терминах

  • LEMP: Linux + Nginx + MariaDB/MySQL + PHP-FPM. Простая аббревиатура для используемого стека.
  • OpenPGP / GPG: криптографический стандарт для шифрования/подписывания ключей, используемый Passbolt для шифрования секретов.

Содержание

  • Предварительные требования
  • Шаг 1: установка зависимостей
  • Шаг 2: установка и настройка MariaDB
  • Шаг 3: установка Nginx и PHP-FPM
  • Шаг 4: получение SSL через Let’s Encrypt
  • Шаг 5: настройка Nginx и PHP-FPM
  • Шаг 6: загрузка Passbolt и генерация OpenPGP-ключа
  • Шаг 7: установка Passbolt
  • Шаг 8: постустановка и подключение расширений браузера
  • Шаг 9: дополнительные меры безопасности
  • Технические примечания, отладка, резервное копирование и процедуры восстановления
  • Чек-листы для ролей и план действий на случай инцидента

Предварительные требования

  • Сервер с CentOS 7 (обновлённый).
  • Доступ root или пользователь с sudo.
  • DNS-запись домена, указывающая на сервер (например, passbolt.example.com).
  • Публичный почтовый сервер или SMTP-данные для отправки писем (регистрaция, уведомления).

Совет: проводите установку на чистой виртуальной машине или в тестовой среде перед развёртыванием в продакшн.


Что мы сделаем

  1. Установим репозитории и зависимости.
  2. Установим и настроим MariaDB.
  3. Установим Nginx и PHP-FPM с необходимыми расширениями.
  4. Получим SSL-сертификат через Let’s Encrypt.
  5. Настроим виртуальный хост Nginx и PHP-FPM.
  6. Загрузим Passbolt и сгенерируем OpenPGP-ключ сервера.
  7. Установим Passbolt и создадим администратора.
  8. Завершим постустановку и подключим расширение браузера.
  9. Введём дополнительные меры безопасности: firewall, SELinux, резервирование ключей.

Шаг 1 — установка зависимостей

Мы установим EPEL и Remi (для современного PHP), затем основные утилиты.

Добавляем репозиторий EPEL и утилиты:

sudo yum -y install yum-utils epel-release

Добавляем и включаем репозиторий Remi для PHP 7.2 (или другой поддерживаемой версии, советуем проверить требования Passbolt):

sudo yum -y install 'http://rpms.remirepo.net/enterprise/remi-release-7.rpm'
sudo yum-config-manager --enable 'remi-php72'

Устанавливаем основные пакеты (composer, git, gcc и пр.):

sudo yum -y install unzip wget composer policycoreutils-python git gcc

Пояснения:

  • Composer — менеджер PHP-зависимостей; он понадобится для установки зависимостей Passbolt.
  • policycoreutils-python — утилиты SELinux, полезны для настройки контекстов файлов.

Проверьте успешность установки командой yum и исправьте возможные сетевые проблемы перед продолжением.


Шаг 2 — установка и конфигурация MariaDB

Устанавливаем MariaDB:

sudo yum -y install mariadb-server

Запускаем сервис и включаем автозагрузку:

sudo systemctl start mariadb
sudo systemctl enable mariadb

Инициализируем безопасную конфигурацию MariaDB (включает установку root-пароля, удаление анонимных пользователей и тестовой базы):

mysql_secure_installation

Далее создаём базу данных и пользователя для Passbolt (замените пароли на безопасные):

mysql -u root -p
create database passbolt;
grant all on passbolt.* to 'passbolt'@'localhost' identified by 'hakase-labs';
flush privileges;
quit;

Рекомендация безопасности: используйте сложный пароль вместо примера ‘hakase-labs’ и, при необходимости, ограничьте доступ к базе только с локального IP.

Частые проблемы и их решения:

  • Ошибка аутентификации: убедитесь, что вы ввели правильный root-пароль при входе в mysql.
  • Если MariaDB не запускается — проверьте journalctl -u mariadb и логи в /var/log/mariadb.

Шаг 3 — установка Nginx и PHP-FPM

Устанавливаем Nginx:

sudo yum -y install nginx
sudo systemctl start nginx
sudo systemctl enable nginx

Устанавливаем PHP-FPM и расширения, которые понадобятся Passbolt (включая gpgme/gnupg):

sudo yum -y install php-fpm php-intl php-gd php-mysql php-mbstring php-pear php-devel gpgme-devel

Примечание: пакет php-mcrypt в новых репозиториях может отсутствовать; он не обязателен для последних версий Passbolt.

Запускаем и включаем PHP-FPM:

sudo systemctl start php-fpm
sudo systemctl enable php-fpm

Убедитесь, что версии PHP совместимы с текущей версией Passbolt. Если нужно, используйте Remi для установки другой ветки PHP.


Шаг 4 — получение SSL через Let’s Encrypt

Устанавливаем certbot:

sudo yum -y install certbot

Остановите nginx на время валидации (certbot будет слушать порт 80):

sudo systemctl stop nginx

Генерируем сертификат для домена passbolt.example.com (замените адрес и email):

sudo certbot certonly --standalone --agree-tos --no-eff-email --email admin@example.com -d passbolt.example.com

После успешного выполнения сертификаты будут в /etc/letsencrypt/live/passbolt.example.com/. Настройте автоматическое обновление (см. ниже в разделе о cron).

Совет: в продакшне используйте автоматическое обновление certbot (systemd timer или cron). Пример cron для обновления и перезапуска nginx:

0 3 * * * /usr/bin/certbot renew --quiet --post-hook "systemctl reload nginx"

Шаг 5 — настройка PHP-FPM и Nginx

Конфигурация PHP-FPM

Редактируем пул www в /etc/php-fpm.d/www.conf и ставим пользователя nginx:

cd /etc/php-fpm.d/
sudo vim www.conf

Изменяем:

user = nginx
group = nginx
listen = /var/run/php-fpm/php-fpm.sock
listen.owner = nginx
listen.group = nginx
listen.mode = 0660

Устанавливаем права на сессии PHP:

sudo chgrp nginx /var/lib/php/session

Устанавливаем расширение gnupg через pecl и включаем его:

sudo pecl install gnupg
echo "extension=gnupg.so" | sudo tee /etc/php.d/gnupg.ini

Перезапустите PHP-FPM:

sudo systemctl restart php-fpm

Конфигурация Nginx

Создаём виртуальный хост /etc/nginx/conf.d/passbolt.conf (вставьте свою доменную зону):

server {
  listen 443;
  server_name passbolt.example.com;
  ssl on;
  ssl_certificate     /etc/letsencrypt/live/passbolt.example.com/fullchain.pem;
  ssl_certificate_key /etc/letsencrypt/live/passbolt.example.com/privkey.pem;
  ssl_protocols TLSv1.2;
  ssl_prefer_server_ciphers on;
  ssl_ciphers ECDH+AESGCM:DH+AESGCM:ECDH+AES256:DH+AES256:ECDH+AES128:DH+AES:ECDH+3DES:DH+3DES:RSA+AESGCM:RSA+AES:RSA+3DES:!aNULL:!MD5:!DSS;
  ssl_session_tickets off;
  root /var/www/passbolt;
  
  location / {
    try_files $uri $uri/ /index.php?$args;
    index index.php;
  }
  
  location ~ \.php$ {
    fastcgi_index           index.php;
    fastcgi_pass            unix:/var/run/php-fpm/php-fpm.sock;
    fastcgi_split_path_info ^(.+\.php)(.+)$;
    include                 fastcgi_params;
    fastcgi_param           SCRIPT_FILENAME $document_root$fastcgi_script_name;
    fastcgi_param           SERVER_NAME $http_host;
  }
       
  location ~* \.(jpe?g|woff|woff2|ttf|gif|png|bmp|ico|css|js|json|pdf|zip|htm|html|docx?|xlsx?|pptx?|txt|wav|swf|svg|avi|mp\d)$ {
    access_log off;
    log_not_found off;
    try_files $uri /webroot/$uri /index.php?$args;
  }
}

Проверяем конфиг и перезапускаем сервисы:

sudo nginx -t
sudo systemctl restart nginx
sudo systemctl restart php-fpm

Совет по безопасности: включите HSTS (строгие заголовки безопасности) и Content-Security-Policy при деплое в продакшн.


Шаг 6 — загрузка Passbolt и генерация OpenPGP-ключа сервера

Клонируем репозиторий Passbolt в /var/www/passbolt:

cd /var/www/
sudo git clone https://github.com/passbolt/passbolt_api.git passbolt/

Устанавливаем haveged для достаточного энтропии при генерации ключей и запускаем:

sudo yum -y install haveged
sudo systemctl start haveged

Генерируем OpenPGP-ключ (gpg). Во время генерации используйте системный email и не указывайте passphrase (Passbolt не поддерживает passphrase для серверного ключа через PHP-gnupg):

gpg --gen-key

Проверяем отпечаток (fingerprint):

gpg --list-keys --fingerprint

Экспортируем публичный и приватный ключи в каталог конфигурации Passbolt (замените email):

gpg --armor --export-secret-keys admin@example.com > /var/www/passbolt/config/gpg/serverkey_private.asc
gpg --armor --export admin@example.com > /var/www/passbolt/config/gpg/serverkey.asc

Устанавливаем корректные права и владельца:

sudo chmod 640 /var/www/passbolt/config/gpg/serverkey*
sudo chown -R nginx:nginx /var/www/passbolt

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


Шаг 7 — установка Passbolt

Инициализируем keyring для пользователя nginx:

sudo su -s /bin/bash -c "gpg --list-keys" nginx

Переходим под пользователя nginx и в каталог приложения:

su -s /bin/bash nginx
cd /var/www/passbolt/

Устанавливаем PHP-зависимости без dev-пакетов:

composer install --no-dev

Копируем конфигурационный файл и редактируем его:

cp config/passbolt.default.php config/passbolt.php
vim config/passbolt.php

Обратите внимание на ключевые секции:

  • App.fullBaseUrl — укажите https://passbolt.example.com
  • Datasources.default — параметры подключения к базе
  • ssl.force — true для принудительного использования SSL
  • EmailTransport / Email — параметры SMTP
  • serverKey.fingerprint, public, private — вставьте отпечаток и пути к ключам

После корректной правки сохраняем файл и запускаем установку:

./bin/cake passbolt install

В процессе установки будет предложено создать администратора (email и пароль). По завершении утилита выдаст ссылку регистрации — сохраните её, она понадобится для первичной регистрации администратора в браузере.

Частые ошибки и решения:

  • Ошибка при выполнении composer: проверьте версию PHP и расширения (gmp, mbstring, intl и пр.).
  • Ошибка GPG: убедитесь, что ключи доступны и владелец файлов — nginx.

Шаг 8 — постустановка и подключение расширения браузера

  1. Установите расширение Passbolt для вашего браузера (например, Chrome или Firefox). Ссылки размещены в официальной документации.
  2. Откройте ссылку регистрации, которую дала утилита установки. Следуйте шагам мастера: проверка плагина, генерация пользовательского ключа, резервное копирование ключа, установка passphrase для личного ключа.
  3. Войдите в систему, используя passphrase, и убедитесь, что вы видите панель управления Passbolt.

Проверки работы:

  • Создайте тестовую запись (логин/пароль) и сохраните.
  • Поделитесь записью с другим тестовым пользователем.
  • Проверьте шифрование: данные, сохранённые в базе, должны быть зашифрованы.

Шаг 9 — дополнительные меры безопасности

Настройка firewalld

Открываем HTTP/HTTPS/SMTP (если нужен):

sudo firewall-cmd --add-service=http --permanent
sudo firewall-cmd --add-service=https --permanent
sudo firewall-cmd --add-service=smtp --permanent
sudo firewall-cmd --reload

SELinux

Если SELinux включён, задаём контексты для веб-каталога Passbolt и ключей GnuPG:

sudo semanage fcontext -a -t httpd_sys_content_t '/var/www(/.*)?'
sudo semanage fcontext -a -t httpd_sys_rw_content_t '/var/www/passbolt/tmp(/.*)?'
sudo semanage fcontext -a -t httpd_sys_rw_content_t '/var/www/passbolt/logs(/.*)?'
sudo restorecon -Rv /var/www

sudo semanage fcontext -a -t httpd_sys_rw_content_t '/var/lib/nginx/.gnupg(/.*)?'
sudo restorecon -Rv /var/lib/nginx/.gnupg

Если у вас нет semanage, установите пакет policycoreutils-python.

Автоматическое обновление сертификатов

Добавьте cron или systemd timer, чтобы certbot автоматически обновлял сертификат и перезагружал nginx:

0 3 * * * /usr/bin/certbot renew --quiet --post-hook "systemctl reload nginx"

Жёсткая настройка HTTP заголовков

Добавьте в конфигурацию Nginx заголовки безопасности:

add_header Strict-Transport-Security "max-age=31536000; includeSubDomains; preload" always;
add_header X-Content-Type-Options nosniff;
add_header X-Frame-Options DENY;
add_header X-XSS-Protection "1; mode=block";

Резервное копирование и хранение ключей

  • Резервируйте папку /var/www/passbolt/config/gpg/ в защищённое хранилище off-site.
  • Храните резервные копии базы данных (dump) с шифрованием и контролем доступа.
  • Тестируйте восстановление на отдельной VM.

Пример простого бэкапа базы:

mysqldump -u root -p passbolt | gzip > /root/backups/passbolt-$(date +%F).sql.gz

Отладка и типичные ошибки

  1. Ошибка 500 в браузере:
    • Проверьте логи Nginx (/var/log/nginx/error.log) и логи Passbolt (/var/www/passbolt/logs).
    • Убедитесь, что права на файлы корректны (владелец nginx).
  2. Ошибка GPG при создании ключа или импорте:
    • Проверьте, что keyring пользователя nginx и права на /var/lib/nginx/.gnupg корректны.
  3. Ошибки при composer install:
    • Убедитесь в корректной версии PHP и доступности расширений.
  4. Проблемы с отправкой почты:
    • Проверьте настройки SMTP, порт, TLS/SSL; попробуйте отправить тестовое письмо с помощью swaks или telnet.

Чек-лист приёмки (Критерии приёмки)

  • Сертификат HTTPS выдан и корректно установлен.
  • Веб-интерфейс доступен по https://passbolt.example.com.
  • Админ-аккаунт создан и можно войти через расширение браузера.
  • Серверный OpenPGP-ключ импортирован, fingerprint указан в config.
  • База данных создана и доступна для приложения.
  • SELinux и firewall настроены, если включены в системе.
  • Автоматическое обновление certbot настроено и протестировано.

Чек-листы для ролей

Администратор безопасности:

  • Проверить наличие и правильность отпечатков ключей.
  • Убедиться в безопасном хранении приватного ключа сервера.
  • Проверить политику паролей для пользователей.

Системный администратор:

  • Настроить бэкапы БД и конфигураций.
  • Обеспечить мониторинг и алерты для nginx/php-fpm/mariadb.
  • Настроить автоматическое обновление сертификатов.

DevOps инженер:

  • Автоматизировать развёртывание (Ansible/Terraform/Chef).
  • Добавить интеграцию CI/CD для обновления и тестирования.

План действий при инциденте (краткий runbook)

  1. Если приватный ключ сервера скомпрометирован — немедленно отозвать сертификат, сгенерировать новый OpenPGP-ключ и обновить config, затем сообщить пользователям и восстановить из безопасных резервных копий.
  2. Если база данных утекла — изолировать сервер, оценить объём утечки, восстановить базу из резервной копии на чистом сервере, сменить ключи и пароли.
  3. Для подозрительной активности входа — временно отключить внешние подключения, сбросить сессии пользователей и проинформировать команду безопасности.

Мини-методология развёртывания (быстрый SOP)

  1. Тестовая VM: развернуть и пройти все шаги установки.
  2. Создать playbook/скрипты для автоматизации.
  3. Подготовить процесс резервного копирования и восстановления.
  4. Запустить в staging, прогнать acceptance тесты (чек-лист выше).
  5. Деплой в продакшн и включить мониторинг.

Модель зрелости безопасности (уровни)

  • Уровень 1 — базовое развёртывание: HTTPS, базовые права, регулярные бэкапы.
  • Уровень 2 — усиление: SELinux, HSTS, регулярные ревизии ключей, MFA для админов.
  • Уровень 3 — продвинуто: изолированная PKI, аппаратные HSM для приватных ключей, SOC-интеграция.

Факто-бокс: ключевые пути и порты

  • Веб-каталог: /var/www/passbolt
  • Конфигурация Passbolt: /var/www/passbolt/config/passbolt.php
  • Ключи GPG: /var/www/passbolt/config/gpg/
  • SSL: /etc/letsencrypt/live/your-domain/
  • PHP-FPM сокет: /var/run/php-fpm/php-fpm.sock
  • Порты: 80 (HTTP), 443 (HTTPS), 3306 (MariaDB локально)

Схема решения проблем (Mermaid)

flowchart TD
  A[Сайт недоступен по HTTPS] --> B{Nginx отвечает?}
  B -- Нет --> C[Проверить nginx: systemctl status nginx]
  B -- Да --> D{Ошибка 5xx?}
  D -- Да --> E[Проверить логи /var/log/nginx и /var/www/passbolt/logs]
  D -- Нет --> F{SSL валиден?}
  F -- Нет --> G[Проверить certbot, /etc/letsencrypt и cron]
  F -- Да --> H[Проверить права на файлы и владельца nginx]

Краткое руководство по тестированию (acceptance / тест-кейсы)

  • TC1: При первом входе через расширение пользователю предлагается сгенерировать ключ — PASS.
  • TC2: Создание и сохранение записи; другая тестовая учетная запись должна видеть расшаренную запись — PASS.
  • TC3: При перезапуске nginx и php-fpm приложение должно оставаться работоспособным — PASS.
  • TC4: Ротация сертификатов certbot должна успешно обновлять сертификат без ручного вмешательства — PASS.

Ссылки и справка


ВЫВОД

Passbolt — надёжное решение для командного хранения и совместного использования секретов. При аккуратном выполнении шагов выше вы получите полнофункциональную инстанцию с SSL, GPG-ключами сервера и базовой защитой. Для продакшна обязательно внедрите политику резервного копирования, мониторинга и регулярные проверки безопасности.

WIKI: сохраните конфигурационные файлы и шаги установки в вашей внутренней документации, укажите ответственных и процедуры восстановления.

Important: храните приватные ключи отдельно и защищённо.

Поделиться: X/Twitter Facebook LinkedIn Telegram
Автор
Редакция

Похожие материалы

Несколько аккаунтов Skype: Multi Skype Launcher
Программное обеспечение

Несколько аккаунтов Skype: Multi Skype Launcher

Журнал для работы: повысить продуктивность
Productivity

Журнал для работы: повысить продуктивность

Персональные звуки уведомлений на Android
Android.

Персональные звуки уведомлений на Android

Скачивание шоу Hulu для офлайн‑просмотра
Стриминг

Скачивание шоу Hulu для офлайн‑просмотра

Microsoft Start: персонализированная новостная лента
Новости

Microsoft Start: персонализированная новостная лента

Как изменить имя в Epic Games быстро
Гайды

Как изменить имя в Epic Games быстро