Статьи Безопасность 10 мин

Защита Admin URL: больше, чем просто сменить '/admin/'

person
Редакция Django-Admin.ru
Редакция • Опубликовано 12 октября 2024 г.
Безопасность 2FA Rate Limiting Продакшн

Смена admin/ на случайный путь — это шаг ноль, а не стратегия безопасности. Атакующие используют автоматические сканеры, но целенаправленный атакующий найдёт вашу админку через логи или неправильно настроенный sitemap.

Уровень 1: Сетевые ограничения

Самая эффективная защита — вообще не выставлять админку в публичный интернет.

# nginx.conf — ограничение по IP
location /your-secret-admin/ {
    allow 10.0.0.0/8;
    allow 192.168.1.0/24;
    deny all;
    proxy_pass http://django:8000;
}

Уровень 2: Rate Limiting с django-axes

# settings.py
INSTALLED_APPS += ['axes']

AUTHENTICATION_BACKENDS = [
    'axes.backends.AxesStandaloneBackend',
    'django.contrib.auth.backends.ModelBackend',
]

AXES_FAILURE_LIMIT = 5
AXES_COOLOFF_TIME = timedelta(minutes=30)

Уровень 3: Двухфакторная аутентификация

С django-otp и TOTP (Google Authenticator):

from django_otp.admin import OTPAdminSite
admin.site.__class__ = OTPAdminSite

Одна строка заменяет стандартный логин на двухэтапный: пароль, затем TOTP-код.

Чек-лист безопасности

  • URL админки нестандартный и не в robots.txt
  • IP-фильтрация или VPN
  • Rate limiting на попытки входа
  • 2FA для всех staff-пользователей
  • CSP-заголовки на страницах админки
  • SSL/TLS обязателен (SECURE_SSL_REDIRECT = True)

forum Обсуждение

Комментарии скоро будут доступны. Следите за обновлениями!