# 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