JumpServer (в том числе Community Edition) полностью поддерживает кластеризацию HA без каких-либо ограничений. В этой статье я покажу, как это работает.
HA (High Availability) кластер для JumpServer необходим для обеспечения высокой доступности системы и минимизации простоев. Он позволяет:
Эта архитектура особенно важна для организаций, где JumpServer используется как критически важная система доступа и контроля.
Ноды\Узлы JumpServer - основные узлы кластера, сервера с установленным JumpServer, каждый сервер не содержит "полезных" данных, можно клонировать\копировать, удалять\добавлять узлы JumpServer.
База данных MySQL\PostgreSQL - основная СУБД для
хранения всех данных JumpServer: хранит настройки системы,
параметры устройств, учетных записей, пароли к целевым системам.
Также по умолчанию хранит текстовые логи сессий: команды SSH, SQL
запросы, введенные команды с клавиатуры в RDP сессии.
По умолчанию JumpServer создает\использует PostgreSQL внутри
контейнера на том же сервере, где устанавливаете
JumpServer.
База данных Redis - вспомогательная база данных
для кэширования, настоятельно рекомендуется иметь единый Redis для
всех нод кластера JumpServer
По умолчанию 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=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=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 для автоматического перенаправления пользователей на активный узел.
| << Установка JumpServer Community Edition | Настройка HAProxy для HA-кластера JumpServer >> |
Вы начали тестирование 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: