Server в Authelia
Раздел Server в конфигурации Authelia определяет параметры работы сервера, включая сетевые настройки, безопасность и управление ресурсами. Это основа для развертывания Authelia в production-среде.
Categories:
Ключевые функции настроек Server
Настройка | Описание | Важность |
---|---|---|
address | Интерфейс и порт прослушивания | 🔥 Критично |
tls | Настройки HTTPS (сертификаты) | 🔥 Критично |
headers | Безопасность HTTP-заголовков | 🔐 Высокая |
buffers | Оптимизация производительности | ⚡ Средняя |
timeouts | Защита от DDoS/подвешенных сессий | 🛡️ Высокая |
endpoints | Управление служебными API | 🔧 Опционально |
Конфигурация
server:
address: 'tcp://:9091/'
disable_healthcheck: false
tls:
key: ''
certificate: ''
client_certificates: []
headers:
csp_template: ''
buffers:
read: 4096
write: 4096
timeouts:
read: '6s'
write: '6s'
idle: '30s'
endpoints:
enable_pprof: false
enable_expvars: false
authz: {} ## See the dedicated "Server Authz Endpoints" configuration guide.
rate_limits: {} ## See the dedicated "Server Endpoint Rate Limits" configuration guide.
Детальный разбор параметров
Базовые настройки (address, disable_healthcheck)
server:
address: 'tcp://0.0.0.0:9091' # Слушать все интерфейсы на порту 9091
disable_healthcheck: false # Включить эндпоинт /healthcheck
Зачем:
- address: Определяет, откуда можно подключиться к Authelia.
- healthcheck: Нужен для мониторинга работы (Kubernetes, Docker Swarm).
Настройки TLS (HTTPS)
tls:
key: /etc/ssl/private/key.pem # Приватный ключ
certificate: /etc/ssl/certs/cert.pem # Сертификат
client_certificates: [] # mTLS (опционально)
Зачем:
- Без TLS пароли и сессии передаются в открытом виде.
- Важно: В production всегда используйте TLS (например, с Let’s Encrypt).
Безопасность заголовков (headers)
headers:
csp_template: "default-src 'self'" # Content Security Policy
Зачем:
- Защита от XSS-атак через CSP.
- Рекомендуемый шаблон для strict-режима:
csp_template: "default-src 'none'; script-src 'self'; style-src 'self'; font-src 'self'; img-src 'self' data:; connect-src 'self'"
Оптимизация (buffers, timeouts)
buffers:
read: 4096 # Размер буфера чтения (байт)
write: 4096 # Размер буфера записи
timeouts:
read: '6s' # Таймаут чтения запроса
write: '6s' # Таймаут отправки ответа
idle: '30s' # Таймаут неактивного соединения
####Зачем:
- buffers: Баланс между потреблением RAM и производительностью.
- timeouts: Защита от Slowloris-атак и “подвешенных” сессий.
Служебные эндпоинты (endpoints)
endpoints:
enable_pprof: false # Отключить debug-эндпоинты (/debug/pprof)
enable_expvars: false # Отключить метрики runtime (/debug/vars)
authz: {} # Настройки авторизации для API
rate_limits: {} # Лимиты запросов к API
Зачем:
- pprof/expvars: Полезны для отладки, но опасны в production.
- rate_limits: Защита API от брутфорса.
Пример production-конфигурации
server:
address: 'tcp://127.0.0.1:9091' # Только локальный доступ + Nginx/Traefik
tls:
certificate: /etc/letsencrypt/live/example.com/fullchain.pem
key: /etc/letsencrypt/live/example.com/privkey.pem
headers:
csp_template: "default-src 'self'; script-src 'none'"
timeouts:
read: '10s'
write: '15s'
idle: '1m'
Частые ошибки и решения
Проблема | Решение |
---|---|
Authelia не запускается на порту | Проверьте address и отсутствие конфликта портов (netstat -tulpn) |
Ошибки HTTPS (ERR_SSL_PROTOCOL_ERROR) | Убедитесь, что сертификаты не повреждены и имеют права 400 |
Медленные ответы | Увеличьте buffers (например, до 8192) |
Атаки на /debug/pprof | Всегда enable_pprof: false в production |
Интеграция с обратным прокси (Nginx/Traefik)
Для максимальной безопасности:
Настройте Authelia на 127.0.0.1:
address: 'tcp://127.0.0.1:9091'
В Nginx добавьте проксирование:
location /authelia {
proxy_pass http://127.0.0.1:9091;
proxy_set_header X-Real-IP $remote_addr;
}
Проверка конфигурации
authelia validate-config --config /etc/authelia/configuration.yml
Ожидаемый вывод:
Configuration parsed and validated successfully!