В статье приводится описание ключевых аспектов настройки файерволла и правильного размещения приложения и СУБД, которые обеспечивают максимальную производительность и безопасность работы системы ELMA365.
ELMA365 является микросервисным решением, использующим технологии Golang, NodeJS, Angular, PostgreSQL, MongoDB, RabbitMQ, Redis, Docker, Kubernetes и S3 MinIO протокола для хранения файлов. Расположение приложения и СУБД в DMZ (Demilitarized Zone — демилитаризованная зона) и контроль трафика с помощью файерволла обеспечат безопасность работы системы ELMA365.
Антивирусы могут замедлять работу приложения ELMA365, так как производят проверку трафика между контейнерами и базой данных, а также сканируют файлы и кэшируют информацию в памяти. Проверка читаемых файлов СУБД не предполагает наличия вредоносного кода, поэтому эта процедура не приносит пользы и замедляет работу приложения.
Приложение ELMA365 и СУБД взаимодействуют посредством определённых портов. Проверка трафика через эти порты может также замедлять работу, так как приложение активно взаимодействует с СУБД. При этом антивирус проверяет каждое сообщение, отправленное между приложением и СУБД, не пересылая его напрямую.
Рекомендуется устанавливать антивирус на обратном прокси на границе DMZ. Это позволит избежать автоматической проверки трафика между приложением и СУБД, а также максимально ускорить и обезопасить работу системы.
Если несмотря на приведённые рекомендации вам необходимо установить антивирус, в исключения для версий KinD и Microk8s портов 443 и 80 для взаимодействия с пользователем нужно добавить следующие внутренние порты:
- для взаимодействия с БД: 5432, 27017, 6379, 5672, 9000;
- для взаимодействия с сервисами: 33349, 10248, 25000, 10249, 9099, 10251, 10252, 10256, 19001, 1338, 6010, 33955, 10250, 10255, 10257, 10259, 16443.
Также в исключения необходимо внести директории /opt/elma365/
и /var/lib/docker/overlay2/
, а также следующие БД и процессы:
Базы данных приложения ELMA365:
- /opt/bitnami/postgresql/bin/postgres;
- /opt/bitnami/mongodb/bin/mongod;
- /opt/bitnami/mongodb/bin/mongo;
- redis-server;
- /opt/bitnami/redis/bin/redis-server;
- /opt/bitnami/erlang/lib/erlang/erts-12.3.1/bin/beam.smp;
- /opt/bitnami/rabbitmq/sbin/rabbitmq-server;
- minio;
- /opt/bitnami/minio/bin/minio server.
Процессы приложения ELMA365:
- /bin/sh;
- /coredns;
- /hostpath-provisioner;
- /nginx-ingress-controller;
- /opt/bitnami/erlang/lib/erlang/erts-12.3.1/bin/epmd;
- /sbin/dinit;
- /snap/microk8s/3410/bin/containerd;
- /snap/microk8s/3410/bin/containerd-shim-runc-v1;
- /snap/microk8s/3410/kubelite;
- /srv/elma365ctl-server;
- /usr/bin/dumb-init;
- /usr/bin/kube-controllers;
- /usr/libexec/git-core/git-daemon;
- /usr/local/bin/node;
- /usr/local/bin/runsvdir;
- calico-node;
- git daemon;
- gpg-agent;
- nginx: cache manager process;
- nginx: master process;
- nginx: worker process;
- runsv;
- sh;
- внутренние процессы ELMA365.