Files
Andrey Epifancev e96fec3709 Реорганизация структуры заметок v2.0
- Создана новая организационная структура с эмодзи-папками
- Добавлена система Inbox для быстрого захвата идей
- Созданы шаблоны для всех типов заметок с YAML метаданными
- Перенесен весь контент из старой структуры в новую
- Добавлен главный дашборд с динамическими запросами
- Создано подробное руководство по использованию системы
- Техническая документация реорганизована по типам

Основные улучшения:
 Inbox-first подход для новых заметок
 Тематическая организация по 8 областям знаний
 Шаблоны с метаданными для структурированности
 Система связей между заметками
 Динамические дашборды с аналитикой
 Централизованная техническая документация без дублирования
2025-08-09 22:11:50 +04:00

12 KiB
Raw Permalink Blame History

Authelia Authentication - Конфигурации

Обзор системы

Docker Compose конфигурация

Основной файл: /DOCKER/auth/docker-compose.yml

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

---
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

server:
  host: 0.0.0.0      # Слушать на всех интерфейсах
  port: 9091         # Внутренний порт контейнера

JWT и безопасность

jwt_secret: 4odTQ0TqW2Ej8m8Cm3K6Wn3VTvg09Mb2Yi4CUzuIPUsHB3fpF54+NbIAqo6+CREA
default_redirection_url: https://notes.aepif.ru
theme: auto          # Автоматическая тема (dark/light)

Logging

log:
  level: info        # Уровни: trace, debug, info, warn, error

User Database Configuration

Файл пользователей: /DOCKER/auth/authelia/users_database.yml

users:
  admin:
    displayname: "Administrator"
    password: "$argon2id$v=19$m=65536,t=3,p=4$..."  # Argon2id hash
    email: epifantsev1aa@gmail.com
    groups:
      - admins
      - users

Генерация паролей

# Использование 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

Политики доступа

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

Расширенные правила доступа

# Пример дополнительных правил
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

Настройки сессий

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

Дополнительные настройки сессий

session:
  # Дополнительные опции безопасности
  same_site: lax        # Политика SameSite cookie
  secure: true          # Только HTTPS (автоматически в production)
  remember_me_duration: 1M  # Время "запомнить меня"

TOTP Configuration

Двухфакторная аутентификация

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 контейнера

redis:
  image: redis:7-alpine
  command: redis-server --requirepass Ll8qlQ3rgBFo4Syq
  volumes:
    - redis_data:/data          # Персистентное хранение

Дополнительные настройки Redis

# В 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)

Защита от брутфорса

regulation:
  max_retries: 3      # Максимум попыток входа
  find_time: 2m       # Временное окно для подсчета попыток
  ban_time: 5m        # Время блокировки после превышения лимита

Расширенная конфигурация

regulation:
  max_retries: 3
  find_time: 2m
  ban_time: 5m
  
  # Дополнительные настройки
  bantime_multiplier: 2    # Увеличение времени блокировки при повторных нарушениях
  cleanup_interval: 1h     # Интервал очистки старых записей

Storage Configuration

Локальное хранилище

storage:
  encryption_key: sWLemnH0QNsYsYvbav59mQOWxLOeUvSl
  local:
    path: /config/db.sqlite3

База данных содержит

  • TOTP секреты пользователей
  • U2F/WebAuthn данные
  • Статистика авторизации
  • Конфигурация двухфакторной аутентификации

Notifier Configuration

Файловые уведомления

notifier:
  filesystem:
    filename: /config/notification.txt

SMTP уведомления (альтернатива)

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

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

Применение к сервисам

# Для защищенного сервиса
labels:
  - traefik.http.routers.protected-service.middlewares=authelia@docker

Environment Variables

Переменные окружения

environment:
  - TZ=Europe/Moscow              # Часовой пояс
  - AUTHELIA_JWT_SECRET_FILE=/run/secrets/jwt_secret  # Секреты через файлы
  - AUTHELIA_SESSION_SECRET_FILE=/run/secrets/session_secret

Безопасность конфигурации

Генерация секретов

# Генерация случайных секретов
openssl rand -base64 64  # Для JWT и session secrets
openssl rand -hex 32     # Для encryption key

Рекомендации по безопасности

  1. Используйте сильные пароли: Все секреты должны быть случайными
  2. Ротация секретов: Регулярно обновляйте JWT и session секреты
  3. Ограничьте доступ к файлам: Конфигурационные файлы должны быть доступны только контейнеру
  4. Мониторинг попыток входа: Настройте алерты на подозрительную активность

Защита конфигурационных файлов

# Правильные права доступа
chmod 600 /DOCKER/auth/authelia/configuration.yml
chmod 600 /DOCKER/auth/authelia/users_database.yml
chown root:root /DOCKER/auth/authelia/*.yml

Связанные файлы