vault backup: 2025-08-04 12:45:56

This commit is contained in:
Andrey Epifancev
2025-08-04 12:45:56 +04:00
parent c0c328dc67
commit 2073fb73ad
4 changed files with 644 additions and 2 deletions

View File

@@ -0,0 +1,227 @@
## Описание
Инфраструктурные сервисы обеспечивают базовую функциональность для всех приложений в экосистеме aepif.ru. Включают в себя reverse proxy с автоматическими SSL сертификатами и систему аутентификации.
## Архитектура инфраструктуры
```mermaid
graph TB
A[Internet] --> B[Traefik Reverse Proxy]
B --> C[Authelia Auth Service]
B --> D[Second Mind]
B --> E[Other Services]
C --> F[Redis Session Store]
C --> G[SQLite User Database]
B --> H[Let's Encrypt]
H --> I[SSL Certificates]
subgraph "Network: proxy"
B
C
D
E
end
subgraph "Auth Network"
C
F
end
```
## Основные компоненты
### Traefik Reverse Proxy
- **Назначение**: Централизованная маршрутизация трафика
- **Домен**: `traefik.aepif.ru` (dashboard)
- **Порты**:
- 80 (HTTP) → автоматический редирект на HTTPS
- 443 (HTTPS)
- 2222 (SSH для Git)
- 8080 (Dashboard)
- **Функции**:
- Автоматическое получение SSL сертификатов от Let's Encrypt
- Load balancing между контейнерами
- TCP и HTTP маршрутизация
- Middleware для аутентификации
### Authelia Authentication
- **Назначение**: Централизованная аутентификация и авторизация
- **Домен**: `auth.aepif.ru`
- **Технология**: Forward Auth middleware
- **Функции**:
- Single Sign-On (SSO) для всех сервисов
- Two-factor authentication (TOTP)
- Session management через Redis
- Политики доступа по доменам
### Redis Session Store
- **Назначение**: Хранение пользовательских сессий
- **Технология**: Redis 7 Alpine
- **Особенности**:
- Персистентное хранение сессий
- Защита паролем
- Быстрый доступ к данным сессий
## Структура проектов
### Reverse Proxy
```
/DOCKER/reverse-proxy/
├── docker-compose.yml # Конфигурация Traefik
├── .env # Переменные окружения
└── volumes/
└── traefik_data/ # ACME сертификаты и конфиг
```
### Authentication Service
```
/DOCKER/auth/
├── docker-compose.yml # Конфигурация Authelia + Redis
├── .env # Переменные окружения и секреты
└── authelia/ # Конфигурация Authelia
├── configuration.yml # Основная конфигурация
├── users_database.yml # База пользователей
├── db.sqlite3 # SQLite база данных
└── notification.txt # Файл уведомлений
```
## Принцип работы
### Маршрутизация запросов
1. **Пользователь** обращается к любому поддомену `*.aepif.ru`
2. **Traefik** перехватывает запрос и анализирует Host header
3. **Traefik** проверяет, требуется ли аутентификация (middleware authelia)
4. Если нужна **аутентификация** → перенаправление на `auth.aepif.ru`
5. **Authelia** проверяет сессию или запрашивает логин/пароль
6. После успешной **аутентификации** → возврат к исходному сервису
7. **Traefik** проксирует запрос к целевому контейнеру
### SSL сертификаты
1. **Let's Encrypt ACME** автоматически получает сертификаты для новых доменов
2. **Traefik** автоматически обновляет сертификаты перед истечением
3. Все **HTTP запросы** автоматически перенаправляются на HTTPS
4. **Сертификаты сохраняются** в volume для персистентности
## Домены и маршрутизация
| Домен | Сервис | Аутентификация | Описание |
|-------|--------|---------------|----------|
| `traefik.aepif.ru` | Traefik Dashboard | Нет* | Панель управления Traefik |
| `auth.aepif.ru` | Authelia | Bypass | Страница входа в систему |
| `notes.aepif.ru` | Second Mind | ✅ Authelia | Заметки с защитой |
| `git.aepif.ru` | Gitea | Bypass | Git-сервер (собственная авторизация) |
| `webhook.aepif.ru` | Webhook Service | Bypass | API для автоматизации |
*Dashboard Traefik в production должен быть защищен
## Политики доступа
### Конфигурация в Authelia
```yaml
access_control:
default_policy: deny # По умолчанию запрещен доступ
rules:
- domain: notes.aepif.ru
policy: one_factor # Требует логин/пароль
- domain: git.aepif.ru
policy: bypass # Собственная авторизация Gitea
- domain: webhook.aepif.ru
policy: bypass # API с токеном
- domain: auth.aepif.ru
policy: bypass # Сама страница входа
```
### Типы политик
- **bypass**: Доступ без аутентификации через Authelia
- **one_factor**: Требует логин/пароль
- **two_factor**: Требует логин/пароль + TOTP код
- **deny**: Полный запрет доступа
## Пользователи и группы
### Структура пользователей
```yaml
users:
admin:
displayname: "Administrator"
password: "$argon2id$..." # Хешированный пароль
email: epifantsev1aa@gmail.com
groups:
- admins # Администраторская группа
- users # Базовая группа пользователей
```
### Управление паролями
- Пароли хранятся в формате **Argon2id** (безопасное хеширование)
- Поддержка **reset паролей** через email уведомления
- Интеграция с **TOTP** для двухфакторной аутентификации
## Безопасность
### Уровни защиты
1. **SSL/TLS**: Все соединения зашифрованы
2. **Forward Auth**: Централизованная проверка аутентификации
3. **Session Management**: Безопасное хранение сессий в Redis
4. **Password Hashing**: Argon2id для хранения паролей
5. **Rate Limiting**: Защита от брутфорса (3 попытки за 2 минуты)
6. **Session Expiration**: Автоматическое истечение сессий
### Настройки безопасности
```yaml
regulation:
max_retries: 3 # Максимум попыток входа
find_time: 2m # Период для подсчета попыток
ban_time: 5m # Время блокировки
session:
expiration: 1h # Время жизни сессии
inactivity: 5m # Время неактивности до выхода
```
## Мониторинг
### Доступные метрики
- **Traefik Dashboard**: Статистика запросов, ошибок, времени ответа
- **Authelia Logs**: Попытки входа, ошибки аутентификации
- **Redis Metrics**: Использование памяти, количество ключей
- **SSL Certificate Status**: Статус и срок действия сертификатов
### Health Checks
```bash
# Проверка Traefik
curl -I https://traefik.aepif.ru
# Проверка Authelia
curl -I https://auth.aepif.ru
# Проверка SSL сертификатов
openssl s_client -connect aepif.ru:443 -servername aepif.ru | openssl x509 -noout -dates
```
## Преимущества архитектуры
- **Централизация**: Единая точка входа для всех сервисов
- **Автоматизация SSL**: Не нужно вручную управлять сертификатами
- **Безопасность**: Единая система аутентификации
- **Масштабируемость**: Легко добавлять новые сервисы
- **Мониторинг**: Централизованная статистика
- **Zero Downtime**: Обновления без простоя сервисов
## Связанные документы
- [[Инфраструктура - Конфигурации]] - детальные настройки всех компонентов
- [[Инфраструктура - Развертывание]] - установка и первоначальная настройка
- [[Инфраструктура - Администрирование]] - обслуживание и мониторинг
- [[Second Mind - Обзор системы]] - основное приложение на этой инфраструктуре