- Выделенная Linux ВМ на основе шаблона Ubuntu Server
- Nginx в роли обратного прокси
- Сертификаты Let's Encrypt, управляемые через Certbot
- Активный локальный файрвол
- Fail2ban активен и проверен для администрирования по SSH
- Проверены перенаправление HTTP → HTTPS и обновление сертификата
- Проверены потоковые ответы и соединения WebSocket
- Перезапуск VM200 проверен без потери конфигурации
| Сервис | Публичный статус |
|---|---|
| OpenWebUI · VM210 | 🟢 опубликовано и проверено по HTTPS |
| n8n · VM300 | 🟢 опубликовано и проверено по HTTPS |
| Nextcloud · VM205 | 🟢 опубликовано и проверено по HTTPS |
| прочие внутренние сервисы | ⚪ не опубликованы / отложены |
1. Navigateur Internet
↓ demande gpt.stephanemuraro.fr
2. DNS public
↓ renvoie l'adresse Internet de la connexion
3. Routeur
↓ transfère uniquement le trafic Web vers VM200
4. VM200 / Nginx
↓ choisit le virtual host correspondant au nom
5. VM210 / OpenWebUI
↓ produit la réponse applicative
6. VM200 / Nginx
↓ renvoie la réponse dans la session HTTPS
7. NavigateurDNS связывает только публичное имя с интернет-адресом — он не знает, какая ВМ обслуживает приложение. Маршрутизатор тоже не выбирает сервис: он передаёт Web-соединения на VM200. Именно Nginx выполняет маршрутизацию на уровне приложений: имя, запрошенное во время TLS-согласования и в HTTP-запросе, выбирает блок конфигурации (virtual host), указывающий целевую внутреннюю машину и сервис.
gpt.stephanemuraro.fr ─┐
n8n.stephanemuraro.fr ─┼─> même adresse publique ─> VM200
nextcloud.stephanemuraro.fr ─┘ ├─> VM IA
├─> VM automatisation
└─> VM fichiers| Компонент | Ответственность | Ограничение |
|---|---|---|
| Публичный DNS | связывает имя с интернет-адресом | не выбирает внутреннюю ВМ |
| Маршрутизатор | передаёт Web-трафик на VM200 | не понимает приложения |
| Файрвол VM200 | отклоняет непредусмотренные входящие соединения | не заменяет аутентификацию |
| Nginx | завершает HTTPS, выбирает virtual host, перенаправляет | не хранит бизнес-данные |
| Certbot | получает/обновляет сертификаты Let's Encrypt | не публикует приложение самостоятельно |
| Fail2ban | блокирует некоторые повторяющиеся атаки по журналам | не заменяет ни файрвол, ни надёжные пароли |
| Backend | предоставляет приложение, контролирует своих пользователей | не должен быть открыт напрямую |
Публичное шифрование завершается на VM200. Сертификат и его закрытый ключ остаются централизованными на обратном прокси, что избавляет от необходимости управлять отдельным публичным сертификатом на каждом backend.
Client Internet ═════ HTTPS chiffré ═════> VM200 VM200 ───── flux LAN contrôlé ──> backend
Nginx передаёт backend запрошенное имя, внешний протокол и информацию, необходимую для трассировки. Для интерактивных приложений он поддерживает WebSocket, потоковые ответы и тайм-ауты, подходящие для длительных обработок.
- маршрутизатор передаёт на VM200 только необходимый Web-трафик
- локальный файрвол отклоняет прочие входящие соединения
- администрирование ограничено внутренней сетью
- Nginx перенаправляет только настроенные имена и сервисы
- TLS шифрует и аутентифицирует публичное соединение
- Fail2ban снижает число некоторых наблюдаемых повторяющихся попыток
- каждый backend сохраняет собственную аутентификацию и фильтрацию
- базы данных и технические API остаются недоступны из WAN
Fail2ban проверен для SSH; это не защищает автоматически формы входа приложений — каждая защита требует пригодного для анализа журнала и проверенного фильтра.
- проверить сервис в локальной сети
- определить его потребности в HTTPS, WebSocket, размере запроса и тайм-аутах
- определить его публичное имя и модель аутентификации
- настроить приложение под его публичный источник
- создать отдельный virtual host на VM200
- проверить синтаксис Nginx перед перезагрузкой
- получить и протестировать сертификат
- протестировать из действительно внешней сети
- проверить журналы и отсутствие прямой открытости
- задокументировать откат
- отключить только virtual host одного сервиса;
- временно убрать перенаправление Web-трафика на VM200;
- остановить VM200, чтобы нейтрализовать все публикации, не изменяя внутренние приложения.
Формальный тест полного отката путём снятия перенаправления WAN остаётся последней открытой проверкой первого этапа.
- Проектирование общего обратного прокси
- DNS, NAT, SNI, virtual hosts и заголовки прокси
- Автоматизация жизненного цикла сертификатов
- Поддержка WebSocket и потоковой передачи
- Разделение между интернет-границей и backend'ами
- Эшелонированная защита и стратегия отката
- Публикация сервиса, размещённого на другой машине