Files
second-mind-aep/Мой сервер/Authelia Authentication/Конфигурации.md
2025-08-04 16:12:28 +04:00

407 lines
12 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 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