Рекомендации по обеспечению безопасности

Для надежного и безопасного использования системы PLAN-R следует придерживаться нескольких рекомендаций:

  • развертывать систему только внутри защищенных контуров предприятия;
  • открывать для доступа только необходимые для работы сетевые порты;
  • использовать протокол https для работы с web клиентом и web консолью администратора;
  • изменить перед первым запуском системы переменные окружения ответственные за шифрацию данных.;
  • не создавать токены JWT с большим временем жизни;
  • не использовать локальную аутентификацию пользователей и настроить систему для работы с Active Directory;
  • заблокировать учетные записи суперадмин (superadmin) и суперпользователь (superuser);
  • настроить резервное копирование базы данных и проводить периодические проверки по восстановлению данных из резервной копии;
  • резервировать хранение конфигурации системы;
  • перед обновлением системы обязательно делать копию базы данных и настроек;
  • рекомендуем иметь два развернутых варианта системы:
    • продуктивную среду для текущей работы;
    • тестовую среду для проверки новой поставки системы и её тестирования;

Настройка переменных окружения

Внимание! Ознакомьтесь с описанием переменных окружения. перед тем как приступите к их настройке.

Измените значения переменных отвечающих за шифрацию данных. Для генерации рандомных последовательностей воспользуйтесь RANDOM.ORG или аналогичным ПО.

  • SECRET_SALT - Инициализирующий вектор в виде строки передаваемые в алгоритм шифрации;
  • SECRET_KEY - Ключ в виде строки передаваемые в алгоритм шифрации;
  • JWT_SECRET - Строка для подписи JWT токена аутентификации;
  • JWT_EXPIRESIN - Время жизни JWT токена аутентификации.
  • FILE_TOKEN_SECRET - Строка для подписи JWT токена для выгрузки файлов из системы;
  • FILE_TOKEN_EXPIRESIN - Время жизни JWT токена для выгрузки файлов из системы;

Подключение Active Directory

Внимание! Ознакомьтесь с разделом Интеграция с Active Directory..

По умолчанию в системе PLAN-R включена локальная аутентификация пользователей, для обеспечения безопасности и удобства работы в больших организациях рекомендуется перейти на аутентификация пользователей через Active Directory, что позволит Вам синхронизировать пользователей Ваших корпоративных доменов с пользователями PLAN-R.

Для этого:

  • Подключитесь к Web консоли администрирования перейдите в меню «Active Directory» и создайте подключения к Вашей доменной области для администраторов и пользователей системы;
  • Протестируйте подключение и синхронизируйте нескольких администраторов и пользователей с PLAN-R.
  • Перейдите в меню «Администраторы» и убедитесь в наличии учетных записей администраторов, перейдите в меню «Пользователи» и убедитесь в наличии учетных записей пользователей.
  • После того как в PLAN-R появились администраторы и пользователи из Active Directory, проверьте возможность входа пользователей в Web клиент системы и администраторов в Web консоль администрирования.
  • После того как Вы смогли подключиться к системе Вам следует установить значение переменной среды LDAP_AUTH_ENABLED=true для того чтобы включить аутентификацию через Active Directory и переменной среды LOCAL_AUTH_ENABLED=false чтобы выключить локальную аутентификацию.
  • После этого рекомендуем заблокировать учетные записи суперадмин (superadmin) и суперпользователь (superuser)

Сетевое взаимодействие

Приложение PLAN-R работает на следующих портах:

  • 80 порт сервиса основного приложения
  • 81 порт сервиса для доступа к консоли администрирования
  • 443 внешний порт сервера, который будет открыт при старте для защищённого HTTPS соединения

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

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

UFW - это популярный инструмент для настройки и управления брандмауэром. Но Docker обходит правила UFW и опубликованные порты могут быть доступны, извне. Поэтому, необходимо изменить файл конфигурации UFW /etc/ufw/after.rules. Добавляем следующие правила в конце файла:

# BEGIN UFW AND DOCKER
*filter
:ufw-user-forward - [0:0]
:ufw-docker-logging-deny - [0:0]
:DOCKER-USER - [0:0]

# Перенаправление в ufw-user-forward для обработки UFW правилами
-A DOCKER-USER -j ufw-user-forward

# Исключение локальных сетей из фильтрации
-A DOCKER-USER -j RETURN -s 10.0.0.0/8
-A DOCKER-USER -j RETURN -s 172.16.0.0/12
-A DOCKER-USER -j RETURN -s 192.168.0.0/16

# Разрешить DNS-запросы
-A DOCKER-USER -p udp -m udp --sport 53 --dport 1024:65535 -j RETURN

# Логирование и блокировка подозрительного трафика (TCP и UDP)
-A DOCKER-USER -j ufw-docker-logging-deny -p tcp -m tcp --tcp-flags FIN,SYN,RST,ACK SYN -d 192.168.0.0/16
-A DOCKER-USER -j ufw-docker-logging-deny -p tcp -m tcp --tcp-flags FIN,SYN,RST,ACK SYN -d 10.0.0.0/8
-A DOCKER-USER -j ufw-docker-logging-deny -p tcp -m tcp --tcp-flags FIN,SYN,RST,ACK SYN -d 172.16.0.0/12
-A DOCKER-USER -j ufw-docker-logging-deny -p udp -m udp --dport 0:32767 -d 192.168.0.0/16
-A DOCKER-USER -j ufw-docker-logging-deny -p udp -m udp --dport 0:32767 -d 10.0.0.0/8
-A DOCKER-USER -j ufw-docker-logging-deny -p udp -m udp --dport 0:32767 -d 172.16.0.0/12

# Возврат для продолжения обработки трафика
-A DOCKER-USER -j RETURN

# Логирование и блокировка
-A ufw-docker-logging-deny -m limit --limit 3/min --limit-burst 10 -j LOG --log-prefix "[UFW DOCKER BLOCK] "
-A ufw-docker-logging-deny -j DROP

COMMIT
# END UFW AND DOCKER

Используйте команду sudo systemctl restart ufw или sudo ufw reload для перезапуска UFW и применения изменений.

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

sudo ufw allow 80
sudo ufw allow 81
sudo ufw allow 443

Перезапуск ufw:

sudo systemctl restart ufw

Убедитесь, что необходимые порты открыты:

sudo ufw status numbered

register image

Для закрытия порта:

sudo ufw deny <номер порта>

Более, подробную информацию о настройке UFW для работы с docker, можно найти: https://github.com/chaifeng/ufw-docker

Запуск приложения Plan-R от непривилегированного пользователя

  • Добавьте пользователя в группу docker. Замените username на ваше имя пользователя.
sudo usermod -aG docker username
  • Выполните следующую команду для перезапуска сессии и применения изменений:
newgrp docker