- Создана новая организационная структура с эмодзи-папками - Добавлена система Inbox для быстрого захвата идей - Созданы шаблоны для всех типов заметок с YAML метаданными - Перенесен весь контент из старой структуры в новую - Добавлен главный дашборд с динамическими запросами - Создано подробное руководство по использованию системы - Техническая документация реорганизована по типам Основные улучшения: ✅ Inbox-first подход для новых заметок ✅ Тематическая организация по 8 областям знаний ✅ Шаблоны с метаданными для структурированности ✅ Система связей между заметками ✅ Динамические дашборды с аналитикой ✅ Централизованная техническая документация без дублирования
407 lines
12 KiB
Markdown
407 lines
12 KiB
Markdown
# Authelia Authentication - Конфигурации
|
||
|
||
← **[[Обзор системы|← Назад к обзору]]**
|
||
|
||
## Docker Compose конфигурация
|
||
|
||
### Основной файл: `/DOCKER/auth/docker-compose.yml`
|
||
|
||
```yaml
|
||
version: '3.8'
|
||
services:
|
||
redis:
|
||
image: redis:7-alpine
|
||
container_name: auth_redis
|
||
volumes:
|
||
- redis_data:/data
|
||
networks:
|
||
- default
|
||
command: redis-server --requirepass Ll8qlQ3rgBFo4Syq
|
||
restart: unless-stopped
|
||
|
||
authelia:
|
||
image: authelia/authelia:latest
|
||
container_name: authelia
|
||
depends_on:
|
||
- redis
|
||
volumes:
|
||
- ./authelia:/config
|
||
networks:
|
||
- default
|
||
- proxy
|
||
labels:
|
||
- traefik.enable=true
|
||
- traefik.http.routers.authelia.rule=Host(`auth.aepif.ru`)
|
||
- traefik.http.routers.authelia.tls.certresolver=letsencrypt
|
||
- traefik.http.services.authelia.loadbalancer.server.port=9091
|
||
- traefik.http.middlewares.authelia.forwardauth.address=http://authelia:9091/api/verify?rd=https://auth.aepif.ru
|
||
- traefik.http.middlewares.authelia.forwardauth.trustForwardHeader=true
|
||
- traefik.http.middlewares.authelia.forwardauth.authResponseHeaders=Remote-User,Remote-Groups,Remote-Name,Remote-Email
|
||
restart: unless-stopped
|
||
environment:
|
||
- TZ=Europe/Moscow
|
||
|
||
volumes:
|
||
redis_data:
|
||
|
||
networks:
|
||
proxy:
|
||
external: true
|
||
default:
|
||
driver: bridge
|
||
```
|
||
|
||
## Основной файл configuration.yml
|
||
|
||
### Полная конфигурация: `/DOCKER/auth/authelia/configuration.yml`
|
||
|
||
```yaml
|
||
---
|
||
theme: auto
|
||
jwt_secret: 4odTQ0TqW2Ej8m8Cm3K6Wn3VTvg09Mb2Yi4CUzuIPUsHB3fpF54+NbIAqo6+CREA
|
||
default_redirection_url: https://notes.aepif.ru
|
||
|
||
server:
|
||
host: 0.0.0.0
|
||
port: 9091
|
||
|
||
log:
|
||
level: info
|
||
|
||
totp:
|
||
issuer: aepif.ru
|
||
|
||
authentication_backend:
|
||
file:
|
||
path: /config/users_database.yml
|
||
|
||
access_control:
|
||
default_policy: deny
|
||
rules:
|
||
- domain: notes.aepif.ru
|
||
policy: one_factor
|
||
- domain: git.aepif.ru
|
||
policy: bypass
|
||
- domain: webhook.aepif.ru
|
||
policy: bypass
|
||
- domain: auth.aepif.ru
|
||
policy: bypass
|
||
|
||
session:
|
||
name: authelia_session
|
||
domain: aepif.ru
|
||
secret: 91Zc/PM0EogwZbsX0tsDGLpr4Wg7zwtQUzcp5tYP5dNdRNTlpkXBfJr9EivuD+A4
|
||
expiration: 1h
|
||
inactivity: 5m
|
||
redis:
|
||
host: redis
|
||
port: 6379
|
||
password: Ll8qlQ3rgBFo4Syq
|
||
|
||
regulation:
|
||
max_retries: 3
|
||
find_time: 2m
|
||
ban_time: 5m
|
||
|
||
storage:
|
||
encryption_key: sWLemnH0QNsYsYvbav59mQOWxLOeUvSl
|
||
local:
|
||
path: /config/db.sqlite3
|
||
|
||
notifier:
|
||
filesystem:
|
||
filename: /config/notification.txt
|
||
```
|
||
|
||
### Разбор конфигурации по разделам
|
||
|
||
#### Server Configuration
|
||
```yaml
|
||
server:
|
||
host: 0.0.0.0 # Слушать на всех интерфейсах
|
||
port: 9091 # Внутренний порт контейнера
|
||
```
|
||
|
||
#### JWT и безопасность
|
||
```yaml
|
||
jwt_secret: 4odTQ0TqW2Ej8m8Cm3K6Wn3VTvg09Mb2Yi4CUzuIPUsHB3fpF54+NbIAqo6+CREA
|
||
default_redirection_url: https://notes.aepif.ru
|
||
theme: auto # Автоматическая тема (dark/light)
|
||
```
|
||
|
||
#### Logging
|
||
```yaml
|
||
log:
|
||
level: info # Уровни: trace, debug, info, warn, error
|
||
```
|
||
|
||
## User Database Configuration
|
||
|
||
### Файл пользователей: `/DOCKER/auth/authelia/users_database.yml`
|
||
|
||
```yaml
|
||
users:
|
||
admin:
|
||
displayname: "Administrator"
|
||
password: "$argon2id$v=19$m=65536,t=3,p=4$..." # Argon2id hash
|
||
email: epifantsev1aa@gmail.com
|
||
groups:
|
||
- admins
|
||
- users
|
||
```
|
||
|
||
### Генерация паролей
|
||
```bash
|
||
# Использование authelia для генерации хеша пароля
|
||
docker run --rm authelia/authelia:latest authelia crypto hash generate argon2 --password 'your_password'
|
||
|
||
# Результат вставляется в users_database.yml
|
||
```
|
||
|
||
### Структура пользователей
|
||
- **displayname**: Отображаемое имя пользователя
|
||
- **password**: Argon2id хеш пароля
|
||
- **email**: Email для уведомлений и 2FA
|
||
- **groups**: Массив групп для контроля доступа
|
||
|
||
## Access Control Rules
|
||
|
||
### Политики доступа
|
||
```yaml
|
||
access_control:
|
||
default_policy: deny # По умолчанию запрещено
|
||
rules:
|
||
- domain: notes.aepif.ru
|
||
policy: one_factor # Требует логин + пароль
|
||
- domain: git.aepif.ru
|
||
policy: bypass # Без проверки Authelia
|
||
- domain: webhook.aepif.ru
|
||
policy: bypass # API сервис
|
||
- domain: auth.aepif.ru
|
||
policy: bypass # Сама страница входа
|
||
```
|
||
|
||
### Типы политик
|
||
- **deny**: Полный запрет доступа
|
||
- **bypass**: Доступ без аутентификации через Authelia
|
||
- **one_factor**: Только логин + пароль
|
||
- **two_factor**: Логин + пароль + TOTP
|
||
|
||
### Расширенные правила доступа
|
||
```yaml
|
||
# Пример дополнительных правил
|
||
access_control:
|
||
rules:
|
||
# Ограничение по группам
|
||
- domain: admin.aepif.ru
|
||
policy: two_factor
|
||
subject: "group:admins"
|
||
|
||
# Ограничение по пользователям
|
||
- domain: private.aepif.ru
|
||
policy: one_factor
|
||
subject: "user:admin"
|
||
|
||
# Ограничение по IP/сети
|
||
- domain: internal.aepif.ru
|
||
policy: one_factor
|
||
networks:
|
||
- "192.168.1.0/24"
|
||
|
||
# Ограничение по методам HTTP
|
||
- domain: api.aepif.ru
|
||
policy: one_factor
|
||
methods:
|
||
- "GET"
|
||
- "POST"
|
||
```
|
||
|
||
## Session Configuration
|
||
|
||
### Настройки сессий
|
||
```yaml
|
||
session:
|
||
name: authelia_session # Имя cookie
|
||
domain: aepif.ru # Домен для cookie (все поддомены)
|
||
secret: 91Zc/PM0EogwZbsX0tsDGLpr4Wg7zwtQUzcp5tYP5dNdRNTlpkXBfJr9EivuD+A4
|
||
expiration: 1h # Время жизни сессии
|
||
inactivity: 5m # Время неактивности до выхода
|
||
|
||
redis:
|
||
host: redis # Хост Redis контейнера
|
||
port: 6379 # Порт Redis
|
||
password: Ll8qlQ3rgBFo4Syq # Пароль Redis
|
||
```
|
||
|
||
### Дополнительные настройки сессий
|
||
```yaml
|
||
session:
|
||
# Дополнительные опции безопасности
|
||
same_site: lax # Политика SameSite cookie
|
||
secure: true # Только HTTPS (автоматически в production)
|
||
remember_me_duration: 1M # Время "запомнить меня"
|
||
```
|
||
|
||
## TOTP Configuration
|
||
|
||
### Двухфакторная аутентификация
|
||
```yaml
|
||
totp:
|
||
issuer: aepif.ru # Отображается в приложении аутентификации
|
||
algorithm: sha1 # sha1, sha256, sha512
|
||
digits: 6 # Количество цифр в коде
|
||
period: 30 # Период действия кода в секундах
|
||
skew: 1 # Допуск на рассинхронизацию времени
|
||
```
|
||
|
||
### Поддерживаемые приложения
|
||
- Google Authenticator
|
||
- Authy
|
||
- Microsoft Authenticator
|
||
- 1Password
|
||
- Bitwarden
|
||
|
||
## Redis Configuration
|
||
|
||
### Настройки Redis контейнера
|
||
```yaml
|
||
redis:
|
||
image: redis:7-alpine
|
||
command: redis-server --requirepass Ll8qlQ3rgBFo4Syq
|
||
volumes:
|
||
- redis_data:/data # Персистентное хранение
|
||
```
|
||
|
||
### Дополнительные настройки Redis
|
||
```yaml
|
||
# В configuration.yml для дополнительных опций Redis
|
||
session:
|
||
redis:
|
||
host: redis
|
||
port: 6379
|
||
password: Ll8qlQ3rgBFo4Syq
|
||
database_index: 0 # Номер базы данных
|
||
maximum_active_connections: 8
|
||
minimum_idle_connections: 0
|
||
```
|
||
|
||
## Regulation (Rate Limiting)
|
||
|
||
### Защита от брутфорса
|
||
```yaml
|
||
regulation:
|
||
max_retries: 3 # Максимум попыток входа
|
||
find_time: 2m # Временное окно для подсчета попыток
|
||
ban_time: 5m # Время блокировки после превышения лимита
|
||
```
|
||
|
||
### Расширенная конфигурация
|
||
```yaml
|
||
regulation:
|
||
max_retries: 3
|
||
find_time: 2m
|
||
ban_time: 5m
|
||
|
||
# Дополнительные настройки
|
||
bantime_multiplier: 2 # Увеличение времени блокировки при повторных нарушениях
|
||
cleanup_interval: 1h # Интервал очистки старых записей
|
||
```
|
||
|
||
## Storage Configuration
|
||
|
||
### Локальное хранилище
|
||
```yaml
|
||
storage:
|
||
encryption_key: sWLemnH0QNsYsYvbav59mQOWxLOeUvSl
|
||
local:
|
||
path: /config/db.sqlite3
|
||
```
|
||
|
||
### База данных содержит
|
||
- TOTP секреты пользователей
|
||
- U2F/WebAuthn данные
|
||
- Статистика авторизации
|
||
- Конфигурация двухфакторной аутентификации
|
||
|
||
## Notifier Configuration
|
||
|
||
### Файловые уведомления
|
||
```yaml
|
||
notifier:
|
||
filesystem:
|
||
filename: /config/notification.txt
|
||
```
|
||
|
||
### SMTP уведомления (альтернатива)
|
||
```yaml
|
||
notifier:
|
||
smtp:
|
||
username: your_email@gmail.com
|
||
password: your_app_password
|
||
host: smtp.gmail.com
|
||
port: 587
|
||
sender: your_email@gmail.com
|
||
startup_check_address: your_email@gmail.com
|
||
disable_require_tls: false
|
||
disable_html_emails: false
|
||
|
||
subject: "[Authelia] {title}"
|
||
templates_path: /config/templates
|
||
```
|
||
|
||
## Traefik Integration Labels
|
||
|
||
### Forward Auth Middleware
|
||
```yaml
|
||
labels:
|
||
# Основная конфигурация middleware
|
||
- traefik.http.middlewares.authelia.forwardauth.address=http://authelia:9091/api/verify?rd=https://auth.aepif.ru
|
||
- traefik.http.middlewares.authelia.forwardauth.trustForwardHeader=true
|
||
- traefik.http.middlewares.authelia.forwardauth.authResponseHeaders=Remote-User,Remote-Groups,Remote-Name,Remote-Email
|
||
```
|
||
|
||
### Применение к сервисам
|
||
```yaml
|
||
# Для защищенного сервиса
|
||
labels:
|
||
- traefik.http.routers.protected-service.middlewares=authelia@docker
|
||
```
|
||
|
||
## Environment Variables
|
||
|
||
### Переменные окружения
|
||
```yaml
|
||
environment:
|
||
- TZ=Europe/Moscow # Часовой пояс
|
||
- AUTHELIA_JWT_SECRET_FILE=/run/secrets/jwt_secret # Секреты через файлы
|
||
- AUTHELIA_SESSION_SECRET_FILE=/run/secrets/session_secret
|
||
```
|
||
|
||
## Безопасность конфигурации
|
||
|
||
### Генерация секретов
|
||
```bash
|
||
# Генерация случайных секретов
|
||
openssl rand -base64 64 # Для JWT и session secrets
|
||
openssl rand -hex 32 # Для encryption key
|
||
```
|
||
|
||
### Рекомендации по безопасности
|
||
1. **Используйте сильные пароли**: Все секреты должны быть случайными
|
||
2. **Ротация секретов**: Регулярно обновляйте JWT и session секреты
|
||
3. **Ограничьте доступ к файлам**: Конфигурационные файлы должны быть доступны только контейнеру
|
||
4. **Мониторинг попыток входа**: Настройте алерты на подозрительную активность
|
||
|
||
### Защита конфигурационных файлов
|
||
```bash
|
||
# Правильные права доступа
|
||
chmod 600 /DOCKER/auth/authelia/configuration.yml
|
||
chmod 600 /DOCKER/auth/authelia/users_database.yml
|
||
chown root:root /DOCKER/auth/authelia/*.yml
|
||
```
|
||
|
||
## Связанные файлы
|
||
|
||
- **[[Развертывание]]** - инструкции по установке и настройке
|
||
- **[[Администрирование]]** - управление пользователями и мониторинг
|
||
- **[[../Traefik Reverse Proxy/Конфигурации]]** - интеграция с reverse proxy |