vault backup: 2025-08-04 16:12:28

This commit is contained in:
Andrey Epifancev
2025-08-04 16:12:28 +04:00
parent 5d14b6031b
commit 75ea95fe6f
5 changed files with 1340 additions and 60 deletions

View File

@@ -1,29 +1,407 @@
# Authelia Authentication - Конфигурации
## Детальные настройки конфигурации Authelia
*Документация будет дополнена деталями конфигурации*
**[[Обзор системы|← Назад к обзору]]**
## Docker Compose конфигурация
*Настройки контейнеров Authelia и Redis*
### Основной файл: `/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
*Разбор всех параметров конфигурации*
## User Database
*Управление файлом users_database.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
*Настройки сессий и Redis интеграции*
### Настройки сессий
```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
*Конфигурация двухфакторной аутентификации*
## Notifier Settings
*Настройка уведомлений*
### Двухфакторная аутентификация
```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