Network Filter: обмеження доступу до адмінпанелі за мережею

Огляд

Налаштування NetworkFilter дозволяє обмежити доступ до адміністративної панелі сервера залежно від мережі користувача:

  • Повний доступ до адмін-панелі дозволений лише з внутрішньої (локальної або корпоративної) мережі

  • Зовнішні користувачі (через Інтернет) не можуть отримати доступ до інтерфейсу адміністратора

  • Протоколи автентифікації (SAML, OIDC, WS-Fed) та підключення пристроїв (ПК/мобільні) продовжують працювати з зовнішніх мереж

Приклад використання

Системний адміністратор хоче запобігти несанкціонованому доступу до адмін-панелі Hideez Enterprise Server ззовні. Увімкнувши NetworkFilter, лише користувачі, які підключаються з корпоративної мережі (наприклад, офіс або VPN), зможуть керувати системою. Зовнішні користувачі зможуть автентифікуватися в сервісах, але не матимуть доступу до налаштувань сервера.

Системні вимоги

Щоб ця функція працювала, необхідно:

  1. Розгорнутий сервер Hideez Enterprise Server (HES) із доступом до редагування appsettings.json

  2. Встановлений та налаштований NGINX на Linux-сервері, який працює як зворотній проксі перед HES

  3. Адміністративний доступ до налаштування обох компонентів – як HES, так і NGINX

Ця функція працює лише за умови двостороннього налаштування – на стороні сервера Hideez і на стороні NGINX, встановленого на Linux.

Як увімкнути NetworkFilter

Увімкнення NetworkFilter відбувається у два етапи:

Етап 1: Налаштування Hideez Server (appsettings.json)

На стороні сервера відкрийте файл appsettings.json (у директорії встановлення HES) і додайте або переконайтеся, що є наступне:

"ServerSettings": {
  "NetworkFilter": true
}

Це активує механізм фільтрації всередині сервера Hideez. Визначення мережевого походження запиту відбуватиметься через заголовок HTTP від NGINX.

Етап 2: Налаштування NGINX на Linux

На стороні NGINX (встановленого на Linux) потрібно налаштувати перевірку IP-адреси клієнта і передати відповідний заголовок на сервер.

Додайте перед location-блоком у конфігурації NGINX наступне:

# Визначення, чи IP-адреса належить внутрішній мережі
geo $is_local {
    default 0;
    # Приклад внутрішньої мережі
    192.168.1.0/24 1;
    # Приклад окремої IP-адреси
    10.10.100.1/32 1;
}

# Призначення значення для заголовка X-Local-Network
map $is_local $x_source_type {
    1 "true";
    0 "false";
}

Ця конфігурація встановлює змінну $x_source_type у "true" для внутрішніх IP і "false" — для всіх інших.

Оновіть блок location:

location / {
    proxy_pass http://HES;
    proxy_http_version 1.1;
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection $connection_upgrade;
    proxy_set_header Host $host;
    proxy_cache_bypass $http_upgrade;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header X-Forwarded-Proto $scheme;
    proxy_set_header X-Local-Network $x_source_type;
}

Приклад файлу конфігурації appsettings.json

{
  "ConnectionStrings": {
    "DefaultConnection": "server=127.0.0.1;port=3306;database=db;uid=user;pwd=password",
    "Provider": "MySql"
  },
  "Logging": {
    "LogLevel": {
      "Default": "Debug",
      "Microsoft": "Warning",
      "Microsoft.Hosting.Lifetime": "Information"
    }
  },
  "ServerSettings": {
    "NetworkFilter": true
  },
  "AllowedHosts": "*"
  }

Last updated