Установка корпоративного менеджера паролей Passwork + Nginx в Centos 8 / Rocky Linux

Thank you for reading this post, don't forget to subscribe!

Оригинал статьи:

Уста­нов­ка кор­по­ра­тив­но­го мене­дже­ра паро­лей Passwork + Nginx в Centos 8 / Rocky Linux

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

Под­го­тов­ка
Уста­нав­ли­ва­ем софт

$ sudo dnf makecache
$ sudo dnf -y install epel-release
$ sudo dnf -y install wget traceroute net-tools nano bind-utils telnet htop rsync policycoreutils-python-utils
$ sudo dnf-y install git avahi
Уста­нав­ли­ва­ем Nginx, настра­и­ва­ем Firewall
Добав­ля­ем репо­зи­то­рий Nginx

$ sudo nano /etc/yum.repos.d/nginx.repo

Уста­нав­ли­ва­ем Nginx, добав­ля­ем его в авто­за­груз­ку и запускаем

$ sudo dnf -y install nginx
$ sudo systemctl enable --now nginx
Настра­и­ва­ем Firewall

$ sudo firewall-cmd --permanent --add-service=http
$ sudo firewall-cmd --permanent --add-service=https
$ sudo firewall-cmd --permanent --add-port=5353/udp
$ sudo firewall-cmd --reload
Пере­за­пус­ка­ем сер­вис avahi

$ sudo systemctl restart avahi-daemon

Установка базы данных MongoDB 4.2

Добав­ля­ем репо­зи­то­рий MongoDB

$ sudo nano /etc/yum.repos.d/mongodb-org-4.2.repo

Уста­нав­ли­ва­ем MongoDB

$ sudo dnf -y install mongodb-org
Отклю­ча­ем SELinux

$ sudo nano /etc/selinux/config

SELINUX=disabled
Что б не пере­за­гру­жать­ся выпол­ня­ем команду

$ sudo setenforce 0
Добав­ля­ем MongoDB в авто­за­груз­ку, запус­ка­ем, проверяем

$ sudo systemctl enable --now mongod
$ systemctl status mongod

Установка PHP-fpm 7.3

Добав­ля­ем репо­зи­то­рий Remi

$ sudo dnf -y install https://rpms.remirepo.net/enterprise/remi-release-8.rpm
Уста­нав­ли­ва­ем php-fpm 7.3 и необ­хо­ди­мые модули

$ sudo dnf module list php
$ sudo dnf module enable php:remi-7.3
$ sudo dnf -y install php-fpm php-json php-ldap php-xml php-bcmath php-mbstring
Настра­и­ва­ем php-fpm

Редак­ти­ру­ем php.ini

Меня­ем вла­дель­ца директории

$ sudo chown -R nginx. /var/lib/php/session
Добав­ля­ем php-fpm в авто­за­груз­ку, запус­ка­ем, проверяем

$ sudo systemctl enable --now php-fpm
$ systemctl status php-fpm

Установка драйвера PHP Mongo

Уста­нав­ли­ва­ем необ­хо­ди­мые компоненты

$ sudo dnf -y install gcc php-pear openssl-devel
В Centos 8 для уста­нов­ки php-devel необ­хо­ди­мо вна­ча­ле уста­но­вить пакет libedit-devel из репо­зи­то­рия PowerTools, ина­че в кон­со­ле будет ошиб­ка установки

$ sudo dnf -y install https://mirror.yandex.ru/centos/8/PowerTools/x86_64/os/Packages/libedit-devel-3.1-23.20170329cvs.el8.x86_64.rpm
$ sudo dnf -y install php-devel
Соби­ра­ем драйвер

$ sudo pecl install mongodb
Добав­ля­ем его в php

$ echo "extension=mongodb.so" | sudo tee /etc/php.d/20-mongodb.ini
Пере­за­пус­ка­ем сер­вис php-fpm

$ sudo systemctl restart php-fpm

Установка PHP фреймворка Phalcon версии 3.4.5

Уста­нав­ли­ва­ем необ­хо­ди­мые компоненты

$ sudo yum -y install php-mysql libtool pcre-devel
Кло­ни­ру­ем репо­зи­то­рий и уста­нав­ли­ва­ем фреймворк

$ cd /opt/
$ sudo git clone --branch 3.4.x --depth=1 "https://github.com/phalcon/cphalcon.git"
$ cd cphalcon/build
$ sudo ./install
Добав­ля­ем его в php

$ echo "extension=phalcon.so" | sudo tee /etc/php.d/50-phalcon.ini
Пере­за­пус­ка­ем сер­вис php-fpm

$ sudo systemctl restart php-fpm
Про­ве­ря­ем, под­гру­зи­лись ли в php модули

$ php -m | egrep 'phalcon|mongodb'
Загруз­ка и уста­нов­ка Passwork
Созда­ем ката­лог и пере­хо­дим в него

$ sudo mkdir /opt/passwork
$ cd /opt/passwork
Кло­ни­ру­ем репозиторий

$ sudo git init
$ sudo git remote add origin https://passwork.download/passwork/passwork.git
$ sudo git fetch
login:
pass:

$ sudo git checkout v4
Логин, пароль и сер­ти­фи­кат мож­но запро­сить в https://passwork.ru/ для тестирования

Копи­ру­ем кон­фи­гу­ра­ци­он­ный файл и меня­ем пра­ва на фай­лы / каталоги

$ sudo cp /opt/passwork/app/config/config.example.ini /opt/passwork/app/config/config.ini
$ sudo find /opt/passwork/ -type d -exec chmod 755 {} \;
$ sudo find /opt/passwork/ -type f -exec chmod 644 {} \;
$ sudo chown -R nginx. /opt/passwork/

Редак­ти­ру­ем кон­фи­гу­ра­ци­он­ный файл

Вос­ста­нав­ли­ва­ем базу дан­ных MongoDB

$ sudo mongorestore --drop /opt/passwork/dump/
Настра­и­ва­ем Nginx. Отклю­ча­ем дефолт­ный кон­фиг nginx

$ sudo mv /etc/nginx/conf.d/default.conf /etc/nginx/conf.d/default.conf_disabled
Копи­ру­ем кон­фиг репозитория

$ sudo cp /opt/passwork/nginx.conf.example /etc/nginx/conf.d/nginx.conf
Настраиваем

Пере­за­пус­ка­ем сервисы

$ sudo systemctl restart nginx php-fpm

Подключаем SSL-сертификат, для работы расширения браузера

Гене­ри­ру­ем само­под­пи­сан­ный сер­ти­фи­кат, или исполь­зу­ем готовый

$ sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -subj '/CN=passwork.test.ru' -addext 'subjectAltName=DNS: passwork.test.ru' -keyout /etc/ssl/certs/passwork.key -out /etc/ssl/certs/passwork.crt
Созда­ем груп­пу Диффи-Хеллмана

$ sudo openssl dhparam -out /etc/ssl/certs/dhparam.pem 2048
Добав­ля­ем ее в наш сге­не­ри­ро­ван­ный сертификат

$ cat /etc/ssl/certs/dhparam.pem | sudo tee -a /etc/ssl/certs/passwork.crt
При рабо­те через SSL-соеди­не­ние (HTTPS) бра­у­зер Chrome тре­бу­ет нали­чия фла­гов Secure и SameSite в cookie. Вклю­ча­ем их

$ sudo nano /etc/php.ini

session.cookie_secure = On
Выклю­ча­ем пара­метр disableSameSiteCookie в кон­фи­гу­ра­ци­он­ном фай­ле passwork config.ini

Пере­за­гру­жа­ем сер­ви­сы php-fpm и nginx

$ sudo systemctl restart php-fpm nginx
Дона­стра­и­ва­ем кон­фиг Nginx

Гото­во, теперь мож­но под­клю­чать рас­ши­ре­ние для браузера