Преминете към основното съдържание

Мрежови и TLS граници

Системата има два единствени официални DNS адреса:

  • HOSPITAL_CLINICAL_DOMAIN обслужва Web, мобилното/PWA приложение, API и Status на /status/;
  • HOSPITAL_RESEARCH_DOMAIN обслужва само Research Browser.

Адресите трябва да са различни и двата да сочат към системата. Research и Status имат отделни списъци с разрешени мрежи. Заявка извън такъв списък трябва да получи HTTP 403; това е работеща граница, а не прекъсване.

Точни CIDR списъци​

HOSPITAL_RESEARCH_ALLOWED_CIDRS ограничава от кои мрежи може да се отвори уебсайтът Research Browser. Той не огражда изследователските данни: акаунт с research grant може да достигне разрешените му данни през API на клиничния адрес. Там ги пазят влизането в акаунта и авторизацията по grant, а не мрежата. HOSPITAL_STATUS_ALLOWED_CIDRS е по-тясната граница за ИТ управление.

Воденият инсталатор не пита за нито един от двата списъка. След инсталиране Status отговаря на трите RFC1918 диапазона с HOSPITAL_NETWORK_ALLOW_ALL_PRIVATE=confirmed, за да може ИТ екипът да го отвори и да зададе истинските списъци (за вход все пак са нужни парола и MFA), а Research е 127.0.0.1/32, на което не отговаря нито един клиент. Status показва и двата под Изисква внимание днес и спира Готовност, докато не се зададат в Поддръжка → Настройки на сайта; промяната, след която нито един списък не съдържа трите диапазона, изключва и превключвателя. Status може само да го изключва.

Проверката приема IPv4 и IPv6 CIDR мрежи, разделени с интервали или запетаи, преобразува адресите в каноничната им мрежа, премахва повторенията и отказва:

  • празна или невалидна стойност;
  • 0.0.0.0/0 и ::/0;
  • трите общи RFC1918 диапазона, освен ако HOSPITAL_NETWORK_ALLOW_ALL_PRIVATE=confirmed.

Стойностите в .env.example са само документационни мрежи и не съвпадат с реален болничен клиент. Заменете ги при инсталиране.

Променяйте граница на инсталирана система чрез защитената процедура за връщане:

sudo sh /opt/lospor-hospital/current/scripts/configure-network-boundaries.sh \
--research '10.24.30.0/24 fd12:3456:789a:30::/64' \
--status '10.24.40.0/24 fd12:3456:789a:40::/64'

Командата канонизира двете стойности, проверява Compose и точната Caddy конфигурация за избрания режим, защитава предишните стойности и възстановява старите site.env и .env, ако edge услугата не може да се стартира. След това изпълнете:

sudo sh /opt/lospor-hospital/current/scripts/readiness-check.sh --strict

Само ако болницата официално е документирала трите RFC1918 диапазона като една граница, са необходими и двата изрични флага. Те никога не разрешават мрежа, обхващаща целия интернет:

sudo sh /opt/lospor-hospital/current/scripts/configure-network-boundaries.sh \
--research '10.0.0.0/8 172.16.0.0/12 192.168.0.0/16' \
--status '10.24.40.0/24' \
--unsafe-all-rfc1918 --confirm-all-rfc1918

TLS режими​

HOSPITAL_TLS_MODE е единственият избор за TLS:

РежимСертификатПорт 80 на сървъра
operatorsecrets/tls/fullchain.pem и secrets/tls/private.key, издадени от ИТ екипане се публикува
acmeпубличен ACME удостоверяващ органпубликува се от фиксирания профил tls-acme
localлокален орган на Caddy, само за тестне се публикува

COMPOSE_PROFILES се извежда автоматично: точно tls-acme при ACME и празна стойност при другите режими. Свободните настройки HOSPITAL_CADDY_GLOBAL_EXTRA и HOSPITAL_CADDY_SITE_EXTRA са забранени, защото добавена Caddy директива може да изпревари мрежовата граница.

При режим operator задайте HOSPITAL_TLS_VERIFY_CA към доверения CA на болницата. Строгата проверка за готовност проверява режима на файла с ключа, съответствието ключ/сертификат, двете DNS имена, предназначението за TLS сървър, срока, пълната верига и CA и изисква поне 30 оставащи дни. Инсталирането и обновяването проверяват и Caddyfile преди стартиране на нов listener:

sudo sh /opt/lospor-hospital/current/scripts/validate-caddy-config.sh
sudo sh /opt/lospor-hospital/current/scripts/readiness-check.sh --strict

Промяната на TLS режима е ИТ дейност в прозорец за поддръжка. Променете HOSPITAL_TLS_MODE, изведения COMPOSE_PROFILES, CA пътя/файловете при нужда и изпълнете двете проверки преди пресъздаване на caddy (и acme-http само при ACME). Не стартирайте частично променена двойка; готовността умишлено я отчита като грешка.

Система, която се обновява от 1.1.x, няма официални полета за режим/профил. Обновяването до 1.2.1 умишлено не отгатва начина за издаване на болничния сертификат и не запазва широка стойност по подразбиране за Status. ИТ екипът трябва еднократно да избере реалния TLS режим, свързания профил и двете точни CIDR граници. При липса на решение обновяването спира безопасно и никога не преминава мълчаливо към ACME.

След това scripts/doctor.sh проверява Web, PWA, API, Status, Research Browser и действащия сертификат за двете имена на конфигурирания HTTPS порт. За клиничния/Research вход никога не използва --insecure.