JumpServer (в том числе Community Edition) полностью поддерживает кластеризацию HA без каких-либо ограничений. В этой статье я покажу, как это работает.
HA (High Availability) кластер для JumpServer необходим для обеспечения высокой доступности системы и минимизации простоев. Он позволяет:
Эта архитектура особенно важна для организаций, где JumpServer используется как критически важная система доступа и контроля.
Ноды\Узлы JumpServer - основные узлы кластера, сервера с установленным JumpServer, каждый сервер не содержит "полезных" данных, можно клонировать\копировать, удалять\добавлять узлы JumpServer.
База данных MySQL\PostgreSQL - основная СУБД для
хранения всех данных JumpServer: хранит настройки системы,
параметры устройств, учетных записей, пароли к целевым системам.
Также по умолчанию хранит текстовые логи сессий: команды SSH, SQL
запросы, введенные команды с клавиатуры в RDP сессии.
По умолчанию JumpServer создает\использует PostgreSQL внутри
контейнера на том же сервере, где устанавливаете
JumpServer.
База данных Redis - вспомогательная база данных
для кэширования, может быть как единой для всего кластера так и
отдельными базами для каждой ноды кластера.
По умолчанию JumpServer создает\использует Redis внутри
контейнера на том же сервере, где устанавливаете
JumpServer.
Хранилище видеозаписей - по умолчанию хранит
записи сессий в папке с продуктом
$folder/core/data/media, где
$folder - папка указанная в основном конфиг-файле,
по умолчанию VOLUME_DIR=/data/jumpserver. Через
веб-интерфейс продукта можно настроить внешнее хранилище
видеозаписей: SFTP, S3, Ceph, MinIo и
другие
Хранилище логов команд - по умолчанию хранятся в основной БД, через веб интерфейс можно настроить хранение команд и запросов в Elasticssearch.
Балансировщик - обычно на базе HAProxy, но можно использовать любой.
Обычно кластер JumpServer состоит из 2 и более узлов кластера, которые:
Пример создания кластера JumpServer
- с единой общей БД PostgreSQL(MySQL)
- с единой общей БД Redis
- с общей папкой для хранения видеозаписей
$folder/core/data/ с помощью NFS сервера Linux
Для этого нам потребуется:
Сервер с NFS, PostgreSQL, Redis:
Узел JumpServer Node1:
Узел JumpServer Node2:
Сервер HAProxy (или другой балансировщик нагрузки).
10.10.50.10Команды могут отличаться для других версий Linux, но в целом нужно создать общую папку:
sudo apt install nfs-kernel-server
sudo mkdir -p /data
sudo chown -R nobody:nogroup /data/
sudo chmod 777 /data/
sudo nano /etc/exports
Добавьте строку в файл /etc/exports:
/data 10.10.50.10/24(rw,sync,no_subtree_check)Примените настройки и перезапустите NFS-сервис:
sudo exportfs -a
sudo systemctl restart nfs-kernel-server
Установка репозитория:
sudo apt update
sudo apt install -y wget gnupg2
sudo sh -c 'echo "deb https://apt.postgresql.org/pub/repos/apt $(lsb_release -cs)-pgdg main" > /etc/apt/sources.list.d/pgdg.list'
curl -fsSL https://www.postgresql.org/media/keys/ACCC4CF8.asc|sudo gpg --dearmor -o /etc/apt/trusted.gpg.d/postgresql.gpg
sudo apt update
Установите PostgreSQL
sudo apt install -y postgresql-16 
Запустите
sudo systemctl enable postgresql
sudo systemctl start postgresql
sudo systemctl status postgresqlСоздайте базу данных:
sudo -u postgres psql
CREATE DATABASE jumpserver;
CREATE USER jumpserver WITH PASSWORD 'KXOeyNgDeTdpeu9q';
GRANT ALL PRIVILEGES ON DATABASE jumpserver TO jumpserver;
\qОткройте файл конфигурации
sudo vim /etc/postgresql/16/main/postgresql.conf
Измените параметр:
listen_addresses = '*'Откройте файл конфигурации:
sudo vim /etc/postgresql/16/main/pg_hba.conf
И добавьте в конец файла:
host    all             all             0.0.0.0/0               md5Настройте файрволл:
sudo ufw allow from 192.168.100.0/24 to any port 5432
sudo ufw reloadИ перезапустите сервис для применения изменений:
sudo systemctl restart postgresql
sudo systemctl status postgresqlИнструкции зависят от версии ОС. После установки Redis выполните:
sed -i "s/bind 127.0.0.1/bind 0.0.0.0/g" /etc/redis.conf
sed -i "561i maxmemory-policy allkeys-lru" /etc/redis.conf
sed -i "481i requirepass KXOeyNgDeTdpeu9q" /etc/redis.conf
Это позволит доступ к Redis с паролем
KXOeyNgDeTdpeu9q. Обязательно используйте уникальный
пароль для вашего сервера. Откройте порт 6379 в
файрволле.
Установите клиент NFS, смонтируйте папку и настройте автоматическое монтирование при загрузке:
sudo apt install nfs-common
mkdir -p /opt/jumpserver/core/data
mount -t nfs 10.10.50.10:/data /opt/jumpserver/core/data
echo "10.10.50.10:/data /opt/jumpserver/core/data nfs defaults 0 0" >> /etc/fstab
Редактируйте файл config-example.txt в папке
установщика:
# Измените следующие параметры, остальные оставьте по умолчанию.
# ВАЖНО: SECRET_KEY должен совпадать на всех узлах JumpServer, иначе данные не будут расшифровываться.
VOLUME_DIR=/opt/jumpserver
SECRET_KEY=    
BOOTSTRAP_TOKEN=                                
LOG_LEVEL=ERROR                                                 
SESSION_EXPIRE_AT_BROWSER_CLOSE=True                            
# PostgreSQL 
DB_ENGINE=postgresql
DB_HOST=10.10.53.210
DB_PORT=5432
DB_USER=postgres
DB_USER=jumpserver
DB_PASSWORD=KXOeyNgDeTdpeu9q
DB_NAME=jumpserver
# Redis 
REDIS_HOST=10.10.50.10
REDIS_PORT=6379
REDIS_PASSWORD=KXOeyNgDeTdpeu9q
# KoKo Lion 
SHARE_ROOM_TYPE=redis                                            
REUSE_CONNECTION=False                                           
Запустите установку:
./jmsctl.sh installПосле завершения установки вы получите значения для:
SECRET_KEY=kWQdmdCQKjaWlHYpPhkNQDkfaRulM6YnHctsHLlSPs8287o2kW    
BOOTSTRAP_TOKEN=KXOeyNgDeTdpeu9q
Установите клиент NFS, смонтируйте папку точно также как на первой
ноде.
При редактировании файла конфигурации JumpServer заполните
значения SECRET_KEY и
BOOTSTRAP_TOKEN , полученные после установки
первой ноды:
VOLUME_DIR=/opt/jumpserver
SECRET_KEY=kWQdmdCQKjaWlHYpPhkNQDkfaRulM6YnHctsHLlSPs8287o2kW    
BOOTSTRAP_TOKEN=KXOeyNgDeTdpeu9q                                
LOG_LEVEL=ERROR                                                 
SESSION_EXPIRE_AT_BROWSER_CLOSE=True                            
# PostgreSQL 
DB_ENGINE=postgresql
DB_HOST=10.10.53.210
DB_PORT=5432
DB_USER=postgres
DB_USER=jumpserver
DB_PASSWORD=KXOeyNgDeTdpeu9q
DB_NAME=jumpserver
# Redis 
REDIS_HOST=10.10.50.10
REDIS_PORT=6379
REDIS_PASSWORD=KXOeyNgDeTdpeu9q
# KoKo Lion 
SHARE_ROOM_TYPE=redis                                            
REUSE_CONNECTION=False 
И запустите установку
./jmsctl.sh installПосле завершения настройки вы получите два узла JumpServer, которые используют один PostgreSQL/Redis сервер и хранилище NFS. Вы можете использовать любой из узлов для доступа к целевым устройствам или настроить HAProxy для автоматического перенаправления пользователей на активный узел.
| << Настройка HAProxy для HA-кластера JumpServer | Настройка отображение корректного IP пользователя при авторизации через HAProxy >> | 
Вы начали тестирование JumpServer PAM EE и столкнулись с проблемой? Наш процесс включает в себя организацию групп переписок в электронной почте или групп в Telegram для оперативного решения вопросов. Если вы уверены, что вас не добавили в такую группу, обратитесь к вашему поставщику или к нам по адресу support@afi-d.ru
В рамках действующей подписки на техническую поддержку мы обучим ваших специалистов установке, настройке, адмнистрированию JumpServer PAM, а также восстановлению после ошибок и аварий.
Обучение проходит онлайн, по заранее согласованному плану, включает в себя обязательную проверку знаний на практике с выдачей именных сертификатов (в случае успешной сдачи экзамена).
Посетите наш канал на RuTube с видео-инструкциями по настройке всех разделов JumpServer PAM. Видео на русском языке и актуализируются с выходом новых версий.
Мысль о внедрении непростой, но критичной для бизнеса PAM-системы может пугать кажущейся сложностью настройки системы, обучением администраторов и специалистов ИБ, изменениями в процессах работы с учетными записями.
Чтобы внедрение и настройка JumpServer Community Edition были комфортными, а также чтобы вы всегда могли обратиться за помощью к профессионалам, AFI Distribution предлагают годовую подписку на техническую поддержку.
Пакет поддержки в 1.5 млн рублей за экземпляр JumpServer Community Edition (без ограничений на количество пользователей и целевых систем) включает всё необходимое для использования PAM: